今回はアプリケーションサーバの代わりにブラウザを使ってメッセージを送信する方法について書いてみました。
2012年9月17日月曜日
2012年9月16日日曜日
2012年9月6日木曜日
ダブルクリックでジャンプできるようにログを出す方法
LogCatのダブルクリックでコードにジャンプする機能を利用する方法について考えてみたメモ
色々試した結果
at クラス名(ファイル名:ライン数)
がログに含まれているとLogCatでダブルクリックした時にコードにジャンプ出来るようです。
上記のコードではログの可読性向上のため、getPadding()でタブ数を計算してジャンプ用ログを整列しています。
こんな感じでログが出ます。
コード
まとめ
色々試した結果
at クラス名(ファイル名:ライン数)
がログに含まれているとLogCatでダブルクリックした時にコードにジャンプ出来るようです。
上記のコードではログの可読性向上のため、getPadding()でタブ数を計算してジャンプ用ログを整列しています。
こんな感じでログが出ます。
2012年9月1日土曜日
ロックスクリーンを考慮して処理の再開を行う方法
この動画に「Lock Screen時は音楽再生を止める」というTipsがあったので、試してみたメモ
Google Developers Live
[JP 日本語] Google Play での Android アプリ提供ことはじめ
22分40秒あたり
コード
まとめ
- アプリが開いている状態でスリープから復帰した場合、ロックスクリーンが表示されていても、onResume()が呼ばれる
- ロックスクリーンが表示されているかの判定はKeyguardManager#inKeyguardRestrictedInputMode()で可能
- ロックスクリーンを使用していない場合への考慮も必要
- ロックスクリーン解除時は、ブロードキャストインテントandroid.intent.action.USER_PRESENTがシステムから通知される
その他
KeyguardManagerですが、API Level 16からisKeyguardLocked()/isKeyguardSecure()が追加されたようです。
isKeyguardLocked()でもロックスクリーン表示の判断が行えました。
isKeyguardSecure()はロックスクリーンにパスワードやパターンなどが設定されている時にtrueを返すようです。
※ API Level 15のIS11LGでも上記のメソッドが使用出来ました。リファレンスの誤記でしょうか?
参考にしたサイト
Yukiの枝折
Android:キーガードはActivityではなくViewであることの影響
2012年8月18日土曜日
LruCacheの使い方
TwitterのツイートをListViewに表示するという処理で、TwitterアイコンのキャッシュにLruCacheを使ってみたメモです。
TwitteアイコンのキャッシュにSoftReferenceを使っていたのですが、2.2 と 2.3 / 4.xで挙動が違って困っていたところ、以下のツイートに出会う。
ということで、Android Training「Caching Bitmaps」で使われていたLruCacheに辿り着いた次第です。
http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
Twitter と 有益な情報をツイートしてくれる方々に感謝です。
LruCacheはAPI Level 12からのクラスですが
http://developer.android.com/reference/android/util/LruCache.html
Support Libraryに入っているので
http://developer.android.com/reference/android/support/v4/util/LruCache.html
API Level 4から使えるようになっています。
使い方としては
・KeyとValueの型を指定してインスタンス化する
・LruCache#sizeOf()をオーバーライドしてBitmapのByte数を返してあげる
だけです。
Android TrainingのサンプルコードではBitmap#getByteCount()を使っていますがAPI Level 12からのメソッドなので上記の処理に書き換えています。
上記のコードではキャッシュサイズを1MB固定にしていますが、端末のDalvikVMヒープサイズから動的に決めたい場合は、Android TrainingのサンプルコードのようにすればOKです。
あとは、Twitterアイコン画像URLをKeyにBitmapをキャッシュしておいて、画像使用時にImageCache.getImage(Twitterアイコン画像URL)がnullだったら再取得というような処理にしておけばよいかと思います。
2.3以降GCがモア アグレッシブになっているので、SoftReferenceを使用した場合、ListViewの行が画面から消えるとすぐに画像キャッシュがクリアされてしまう。
従って、今後はLruCacheを使いましょう。
といったところでしょうか。
LruCacheを利用することで、SoftReferenceを使用した場合の2.2 と 2.3以上でキャッシュの挙動が違うという問題が解決できました。
公式ドキュメントはちゃんとチェックしておかないとダメですね。。
因に僕は、常にこの構成でデバッグしています。
書いたコードに対してすぐにバージョン間の差異が確認できるので良いかなと思っています。
今のところ誰からも賛同を得られていませんが...
Fragmentationと共に生きる方法
http://neta-abc.blogspot.jp/2012/08/fragmentation.html
馴れ初め(ダイジェスト)
TwitteアイコンのキャッシュにSoftReferenceを使っていたのですが、2.2 と 2.3 / 4.xで挙動が違って困っていたところ、以下のツイートに出会う。
2.3 から GC の方式が変わったので、SoftReference や WeakReference で Bitmap をキャッシュするのはあんまり意味ないからオススメしないそうだ
— Yuki Anzaiさん (@yanzm) 8月 14, 2012
これどこ情報なんだろう?ListViewに表示するTwitterアイコンのキャッシュにSoftReference使ってるけど、確かに2.2、2.3、4.xで動き違って困ってた。2.3と4.xはすぐキャッシュが解放されてて再取得が走る... > RT
— koji okabeさん (@kojiokb) 8月 14, 2012
@yanzm 知りませんでした(・o・) そのうち自作アプリもLruCache使うようにしてみます。developer.android.com/training/displ…
— HaRuさん (@h6a_h4i) 8月 14, 2012
これか。明日じっくり読んでみる。 Android Training - Advanced Training - Caching Bitmaps developer.android.com/training/displ…
— koji okabeさん (@kojiokb) 8月 14, 2012
ということで、Android Training「Caching Bitmaps」で使われていたLruCacheに辿り着いた次第です。
http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
Twitter と 有益な情報をツイートしてくれる方々に感謝です。
コード
使い方
LruCacheはAPI Level 12からのクラスですが
http://developer.android.com/reference/android/util/LruCache.html
Support Libraryに入っているので
http://developer.android.com/reference/android/support/v4/util/LruCache.html
API Level 4から使えるようになっています。
使い方としては
・KeyとValueの型を指定してインスタンス化する
・LruCache#sizeOf()をオーバーライドしてBitmapのByte数を返してあげる
だけです。
Android TrainingのサンプルコードではBitmap#getByteCount()を使っていますがAPI Level 12からのメソッドなので上記の処理に書き換えています。
上記のコードではキャッシュサイズを1MB固定にしていますが、端末のDalvikVMヒープサイズから動的に決めたい場合は、Android TrainingのサンプルコードのようにすればOKです。
あとは、Twitterアイコン画像URLをKeyにBitmapをキャッシュしておいて、画像使用時にImageCache.getImage(Twitterアイコン画像URL)がnullだったら再取得というような処理にしておけばよいかと思います。
まとめ
2.3以降GCがモア アグレッシブになっているので、SoftReferenceを使用した場合、ListViewの行が画面から消えるとすぐに画像キャッシュがクリアされてしまう。
従って、今後はLruCacheを使いましょう。
といったところでしょうか。
LruCacheを利用することで、SoftReferenceを使用した場合の2.2 と 2.3以上でキャッシュの挙動が違うという問題が解決できました。
公式ドキュメントはちゃんとチェックしておかないとダメですね。。
因に僕は、常にこの構成でデバッグしています。
書いたコードに対してすぐにバージョン間の差異が確認できるので良いかなと思っています。
今のところ誰からも賛同を得られていませんが...
Fragmentationと共に生きる方法
http://neta-abc.blogspot.jp/2012/08/fragmentation.html
2012年8月11日土曜日
エミュレーター・実機に文字列を流し込む方法
最近多用している便利なコマンドのメモです。
adb shell input text <文字列>
エミュレーター・実機でテキスト入力欄を選択して、上記のコマンドを実行すると文字入力ができます。
<文字列>の部分に日本語は使えません。
端末のIME設定が入力に反映されますのでローマ字入力してあげれば日本語の入力も可能です。
adb shell
input text <文字列>
でも使えますが、adbを切断したときにコマンド履歴は消えてしまうので
adb shell input text <文字列>
とやったほうが、コマンド履歴から再利用できて良いと思います。
Facebookのテストアカウントとか使ってるとメールアドレス長くて手入力は辛いですよね。。
adb shell input text <文字列>
エミュレーター・実機でテキスト入力欄を選択して、上記のコマンドを実行すると文字入力ができます。
<文字列>の部分に日本語は使えません。
端末のIME設定が入力に反映されますのでローマ字入力してあげれば日本語の入力も可能です。
adb shell
input text <文字列>
でも使えますが、adbを切断したときにコマンド履歴は消えてしまうので
adb shell input text <文字列>
とやったほうが、コマンド履歴から再利用できて良いと思います。
Facebookのテストアカウントとか使ってるとメールアドレス長くて手入力は辛いですよね。。
MacでInkscapeを使う(画像取り込み編)
Inkscapeに画像ファイルを取り込もうとしてハマったのでメモしておく。
Windows環境ですと、画像ファイルの取り込みはExplorerからドラッグ&ドロップすればOKですが、Mac環境では、ドラッグ&ドロップは受け付けてくれませんでした。
X上で動いているからでしょうか?
なので、今度はコピー&ペーストを試してみましたがこんな感じに...
で最後に辿り着いたのがインポートです。
メニューの[ファイル] - [インポート]から開きます。
拡張子のフィルタを[すべてのイメージ]にして、取り込みたい画像ファイルを選択すればOKです。
後は、画像を「リンク」にするか「埋め込み」にするか聞かれますのでお好みで。
・リンクにすると、画像ファイルを移動したときにリンク切れになります。
・埋め込みにすると、SVGファイルに埋め込まれるのでファイルサイズが大きくなります。
これで画像が取り込めるようになりました。
Windows環境と比べると少し面倒ですね。
ドラッグ&ドロップ
Windows環境ですと、画像ファイルの取り込みはExplorerからドラッグ&ドロップすればOKですが、Mac環境では、ドラッグ&ドロップは受け付けてくれませんでした。
X上で動いているからでしょうか?
コピー&ペースト
なので、今度はコピー&ペーストを試してみましたがこんな感じに...
インポート
で最後に辿り着いたのがインポートです。
メニューの[ファイル] - [インポート]から開きます。
拡張子のフィルタを[すべてのイメージ]にして、取り込みたい画像ファイルを選択すればOKです。
後は、画像を「リンク」にするか「埋め込み」にするか聞かれますのでお好みで。
・リンクにすると、画像ファイルを移動したときにリンク切れになります。
・埋め込みにすると、SVGファイルに埋め込まれるのでファイルサイズが大きくなります。
これで画像が取り込めるようになりました。
Windows環境と比べると少し面倒ですね。
登録:
投稿 (Atom)


