NO_NAME

適当に技術・仕事・ライフハックの話を書いていく予定です。

Android

ロック画面の上にActivityを表示する

ロック画面にAppWidgetを表示する方法を調べたがそんな方法は存在しないようだ。 かわりにロック画面の上にActivityを表示することができることがわかったのでその方法について書く。ロック画面の上にActivityを表示するには以下のようにフラグを付けるだけ…

Google Maps APIのx86 system imageを作成する

仮想マシンアクセラレーションによるエミュレータの高速化でエミュレータの仮想マシンアクセラレーションによる高速化を紹介したがGoogle Maps API用のx86 system imageは配布されていないので、Google Maps APIを使用したい場合、自分でx86 system imageを…

仮想マシンアクセラレーションによるエミュレータの高速化

最近のCPUは仮想マシンを走らせるため拡張が組み込まれており、それを利用してAndroidエミュレータを高速化することができる。 詳しくは http://developer.android.com/tools/devices/emulator.html#accel-vm を参照。 先に言っておくが、これを実行してもiP…

UIライブラリの試用に便利なAndroidアプリ「Android UI Patterns」

UIライブラリのサンプルアプリを詰め込んだ「Android UI Patterns」が便利。 気になる点としてはパーミッションとして以下のものを必要とすることが上げられる。 完全なインターネット アクセス 連絡先データの読み取り USB ストレージのコンテンツの変更/削…

Loader API と AsyncTask の比較

Android 3.0 から Loader API が導入された。 Support Package を利用するとAndroid 1.5以上でもこのAPIを使えるようになる。Loader API が AsyncTask と立ち位置が重なるように思えたので AsyncTask との比較してみた。 AsyncTaskとの比較しての結論 結論か…

Proguardでコードの圧縮・最適化・難読化を行う

Android SDK には Proguard が組み込まれており、コードを圧縮・最適化・難読化できる。 特にライセンス認証を行っていたり、コア技術が入っていたりする場合、難読化は必須。Androidプロジェクトに Proguard を適用する際にわかったことを記述する。 Androi…

SharedPreferences にバイナリデータを入れる際にはBase64化が必要

SharedPreferences にバイナリデータを入れる際は Base64.encodeToString(byte, int) を使って文字列化する必要がある。 new String(byte) を使って文字列化した場合、データを取り出すときになって下記のようなエラーが発行される。 org.xmlpull.v1.XmlPull…

launch の途中で停止した場合の対応

Eclipseが launch の途中で停止してしまった場合、 adb の問題を疑ってみるといい。 コマンドラインから以下を実行し adb を再起動すると解決する。 # adb kill-server # adb start-server

Sony Tablet S をUSBデバッグに接続する

Sony Tablet S は通常のデバッグ用の手続きだけでは Mac では adb に認識されない。 次のようにベンダーIDを adb_usb.ini に書き込むと認識してくれるようになる。 echo "0x54c" >> $HOME/.android/adb_usb.iniTablet本体には「USBデバッグが接続されました…

アプリケーションを終了させる

結論から言うと Android でアプリケーションを終了させる方法は用意されていない。 とはいえいくつか回避策がある。 Activity#moveTaskToBack(true) でホームスクリーンに戻ることができる。ただし、この場合 Task は破棄されないので、再びこのアプリケーシ…

アプリケーションの初期化方法

認証やデータの取得等、アプリケーション起動時に必ず実行したい初期化をどこに入れるのが良いのか調査した。 見つかったパターンは以下の通り。 それぞれ利点・欠点があるのでどれが良いとは一概には言えない。 ApplicationManifest.xml で Main Activity …

SMB対応ファイルマネージャー

ファイルサーバーに蓄えたファイルを Androidタブレットから閲覧したいので、SMB対応ファイルマネージャーを試して見た。結論から言うとSMB対応という意味では納得できる解は見つからなかった。 どのアプリもSMBサーバーのファイルを他のアプリで利用するに…

Handler と AsyncTask の使い分け

Android でバックグラウンド処理を走らせるのによく使う Handler と AsyncTask だが使い分けをどうしたらよいのか悩ましいところである。 ググってみると同じような悩みを持つ人がいるようで、Stack Overflow に次のような質問が投げられていた。 android - …

Google公式のAndroid UIデザイン学習サイトがよさそう

AndroidのUIデザインについてはこれまで Android Design Pattern が参考になったが、Google公式の Android Design が負けず劣らず参考になりそう。 まだ軽く目を通しただけだが、空き時間を使って目を通して見ることにしよう。

EclipseのLogcatビューアのみを使っていると起こる勘違い

Android の Logcatビューアを使っていると Application や Text で絞り込みできそうに思えるが、logcatコマンドの引数にはそのような絞り込み機能はないようだ。 さらにいうと PID は出力できるが Application の値を出力されるオプションはなさそうだ。 log…

続:Logcatのログを送信する

Androidのログ送信アプリとして Log Collector を紹介したが、aLogcat のほうがUIで細かい設定ができ開発者にとっては便利。ただしログを画面に読み込んじゃうので重いのと機能が多い分Log Collectorほど簡潔ではないので開発者以外には向かないかも。

Logcatのログを送信する

PCにつないだAndroid端末のログはLogcatでみることができるのだが、テストを行ってくれている同僚やユーザーからログを送ってもらうにはどうしたらいいのかわからなかったので調べてみた。結論から言うと Log Collector を使うとログを出力することができる…

ClassLoader#getResource(String) は利用できない

Android の SQLiteDatabaseHelper を拡張し、 Rails の migration のような仕組みを構築しようと考えた。 あるフォルダ内のあるインターフェイスを実装したクラスをインスタンス化する形にしたかったので、ClassLoader#getResource(String) を使ってフォルダ…

View拡張時のListViewによる落とし穴

AndroidのViewクラスには onFocusChanged(...) や onWindowVisibilityChanged(int) などのメソッドがあり、これらをオーバーライドすることで表示状態に応じて状態を切り替えることができる。 ただし、過信は禁物。ListViewの中で使うとこれらのイベントは表…