ジャンル不定の日記です。

セリアで見っけた新商品

特に目的もなく100円ショップのセリアに行ってきたが、新商品見っけた。



単4→単3 変換ソケット
以前からレジ横の電池コーナーにある単3を大きいサイズに変換するアダプター見て、
単3を変換するのではなく、単4を単3に変換する商品があれば欲しいと思ってたんだが、今それが売ってた。




10桁電卓
8桁の電卓だと桁数足りないことがあるから桁数多いの欲しかったが、10桁の売ってた。
ただ電池なしのソーラー電卓。電池とソーラー併用のじゃないと、暗いと使えないんだよね…





onCreateでgetLoaderManager()

前回バージョンアップ時に気づいた画面の向きが起動時と違う場合に非同期処理ができてなかった問題で、またブログエディターのバージョンアップしたんだが、
どうもonCreateでgetLoaderManager()を呼び出さないとそうなるらしい。
getLoaderManager()でLoaderManagerを取得するだけで、何も処理はしなくていいんだが、とにかくonCreate時にgetLoaderManager()をしなくてはいけない。
LoaderManagerを使う際は必要な箇所で何回もgetLoaderManager()していいんだが、それとは別にとにかくonCreate時にgetLoaderManager()。

ググったら正しい答えが結構出てきたんでハマりはしなかった。


あと、onLoadFinishedが複数回呼び出される場合があるので、それを前提に作らなければいけないという記事を見た。
initLoaderせずにrestartLoaderだけにしてればそんなことはない気がするんだが、
非同期処理で結果が返ってくる前にUI操作で別の処理が発生する可能性はあり、別の処理が発生したら前の処理は破棄したほうが良さそうではあるので、
それの対応も含めて、二重処理はキャンセルするようにした。


連日のバージョンアップで、初回を含めて5回アップしたが、
今の時点では問題は把握していないので、今回のバージョンで落ち着きそうかな。

更新Pingの送信機能なんかも当初はかんがえてたが、今は更新Pingの必要性薄れてるし、操作箇所を増やすとわかりにくくなるし要らないかなと・・・

他だと、記事内のHTMLタグを再編集する機能とかあると良いかなと思うが、
Android側でUIだして記事のrangeに適用するとなるとめんどくさいね。

今日もバージョンアップ

ブログエディターアプリ公開してから連日だが、今日もバージョンアップした。

前回のアップの後に、記事取得時にカテゴリーの取得すべきだがやってないのに気づいたので、それ修正して、
本文と追記の切り替えをメニューじゃなくてタブにしたいと思って変えたんだが、
タブでえらいハマった…

まずはAPIのタブ機能で実装しようとしたが、使い方がよくわかんなくて時間を費やしてたんだか、
端末横向き時に高さがきついから、横向き時はサイドに90度回転させたタブを置こうと思ってたんで、
API標準の機能じゃ無理そうだから、Button並べてタブ風にした。

だが、LinearLayoutで並べてマッチさせると回転してると縦横逆になっちゃうみたいで、普通にやってもダメだった。

最終的に、LinearLayoutの下にFrameLayoutを並べて、Frameの下に回転させない文字なしButtonと回転させたTextViewを重ねた。
回転させなければ親要素にマッチさせられる。
FrameLayout自体にClickイベントつけても良さそう。

あと、LinearLayout多用したが、AdMobを下に置くのに手前にmatch_parentがあると、
領域サイズ不十分で広告表示されなくなるみたいだね。

他に、WebViewが拡大した後にフォーカス取りづらいことが判明したのを修正したり、微調整。

というわけで、丸一日かかった。


だいぶ良い感じになったと思うが、
画面回転すると、起動時の向きじゃないと通信系の処理が反応しないバグが判明した…
調査して、すぐに解決できればいいが…

早速だがアプリのバージョンアップした

昨日公開したばっかだがブログエディターアプリのAPKバージョンアップした。

変更点は、下につけてるAdMob広告のバナーサイズを画面サイズに応じて変動するタイプのにして、
投稿等で対象ブログの選択が必要な時に、ブログ数が一個だけの場合は選択ダイアログを出さないようにした。

アップデートを試してみたいってのもあった。


あと、他に修正考えている点で、

1. 既存記事の取得した際にカテゴリーの取得を行っていないが、取得するようにしたい。
metaWeblog.getPostにカテゴリー情報があるんようなんだが、国内ブログサービスで実装が確認できない。(以前はなかった機機能なのかな?)
getPostした後に非同期でカテゴリ取得したほうが良さそう。

2. 本文と追記の変更をするのが今はメニューからだが、タブの方が良さそう。
だが、横長画面だと上部にタブは高さがキツイ。
ビューを回転させて(文字が下から上、又は縦書き)横向きのタブってのは簡単に実現できるだろうか・・・

2個目のアプリ公開した

先日、初めてのGoogle Playアプリ配信でメモ帳アプリを公開したが、
第二弾で準備してたブログエディターを今日公開した。

というわけで、この記事は作ったアプリで書いてます。
しばらくはできるだけアプリで書こうと思います。

https://play.google.com/store/apps/details?id=net.sawsoft.blog
↑公開したアプリのURL
ブログ持ってる方は、ぜひ試してみてください。


先月から作ってたアプリでもう一個作りかけのがあるが、それは中止の方針なんで、とりあえず公開済みの2個で弾切れ。
いろいろ作っていきたいけど、ネタもない。

ゲームとか作れれば良いんだけどね。
絵が書けないし発注する金もない・・・
ドット絵ならそれなりに作れるかなー

Androidエミュレーターが糞遅いの

Androidエミュレーターが糞遅いのを我慢していたが、
実は速くするの簡単だった。

android avd
からGUIでデバイスを作成して起動してたが、
AVDでの作業はx86のデバイス作成のみにして、エミュレーターの起動はAVDでやらずにemulatorコマンドで行い、
起動の際にオプションで
"-qemu -enable-kvm"を付けるだけでKVMが利用できるみたい。


まず、
emulator -list-avds
でAVDで作成したデバイスの一覧が確認できる。

emulator -avd デバイス名 -qemu -enable-kvm
とするだけで速いわ。


何も入れずに起動オプションだけで速くなるならAVDの方で対応してくれてればいいのに・・・
qemuはインストールしてないはずだが、emulatorに内蔵されてるから別途入れる必要はないってことかな?
kvmはたぶんArchのkernelで最初から利用できると思うので、こちらも別途入れてないはず。

Androidアプリ配信した

4月になってドメイン取得できるようになったんで、Google Playのデベロッパー登録してアプリ配信やってみた。

https://play.google.com/store/apps/details?id=net.sawsoft.memo

とりあえずシンプルなメモ帳アプリ。
競合多いから埋もれちゃうと思うが、メモ帳がHello World的なもんな気がする。

先月中旬に作ってあったが、Google Playでのアプリ配信には、
  • デベロッパー登録(要$25)
  • デフォルト言語を設定してアプリ名や紹介文などを記入。
  • スクリーンショットが最低2枚を登録
  • Google Play用の512x512アイコンを登録
  • 宣伝用画像1024x500を登録
  • その他指示に従って項目を埋める
って感じだった。
画像が最低4枚必要になる。

あと、今までは
ant debug
でデバッグ用apkを作成していたが、
ant release
で正式なapkを作成しなきゃだが、署名が必要。

keytool -genkey -v -keystore 出力ファイル名 -alias キーの名前 -validity 期限までの日数 -keyalg RSA
で署名のファイルが作成できる。
コマンドを実行すると質問が出てくるので、姓名や所在地、パスワードを入力する。
期限までの日数は25年以上を推薦とのことで、10000にした。

ファイルが出力されるので、
ant.propertiesに、
key.store=ファイル名(keytoolコマンドの-keystore
key.alias=キーの名前(keytoolコマンドの-alias
と記載する。


登録するとGoogle Play Developer Consoleの方で最初は「公開待ち」になりそのうち「公開中」になるが、
「公開中」になるとGoogle Playの方で確認できたが、しばらくはインストールできない状態だった。


他に近日公開予定でブログエディター作ってるが、そっちの方は広告つけるつもりなんでAdMobに登録して試してみた。
AdMobの登録はAdSenseとAdWordsの両方のアカウントが必要な様で無いと面倒そうだが、Webで使ってて両方あるから、ボタン押すだけで簡単に登録できた。
収益化目的だけならAdSenseアカウントのみで登録できればいいのにね。

AdMobをアプリに組み込むのにちょっと苦戦したが、
Android SDKでGoogle Play ServicesをインストールするとSDKのディレクトリ以下に、
extras/google/google_play_services/libproject/google-play-services_lib
がインストールされるが、
ググるとEclipseでインポートする方法はたくさん出てくるんだが、antでコマンドラインの場合は、project.propertiesに、
android.library.reference.1=../../../../../opt/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
の様に書けばいいようなんだが、相対パスで書かないとダメらしい。
で、相対パスで書けば平気そうなんだが、
AndroidManifest.xmlに記載する
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
の@integer/google_play_services_versionが無いようでビルド失敗した。
これは、google-play-services_lib/res/values/version.xml
で設定されているんで、このファイルをプロジェクトのres/valuesに入れたり、変数じゃなくて定数で書いちゃえば突破できるぽい。

@integer/google_play_services_versionの方でハマってたようなんだが、インポートがうまく行ってないと思って、
インポートせずに、google-play-services_lib/libs/google-play-services.jarをプロジェクトのlibsにコピーしたんだが、
project.propertiesに長い相対パス書くよりもjarファイルをプロジェクトのlibsにコピーしちゃった方が自然な感じするんで、そうした。


ブログエディター以外にもう一個途中まで作ってたんだが、そっちの方はお蔵入りな感じ。