2012-01-01から1年間の記事一覧

APKの署名を確認する方法

このAPKってどの署名をつけたっけ?ってときに確認する手段です。 jarsigner -verify -verbose -certs my_application.apk 参考URL http://www.taosoftware.co.jp/blog/2008/11/android_2_1.html

OutOfMemoryErrorを救う方法

とある開発中のアプリを解像度縦横それぞれ1.5倍の端末にそのまま突っ込んでみたら、OutOfMemoryErrorが出ました。 解像度的には増えているのでcreateBitmapしてる部分が単純に2.25倍になるわけなので、最初しょうがないかなとも思いましたが、以前動かして…

APK内のAndroidManifest.xmlを取り出す方法

以下のコマンドで確認できる状態になるようです。 ただし、元のXMLの形では無いようです。 aapt dump xmltree hoge.apk AndroidManifest.xml > foo.txt 参照URL http://yuki312.blogspot.jp/2011/10/apk.html

アプリのメモリ状況をチェックするコマンド

adb shell dumpsys meminfo パッケージ名 このように表示されます。 これを、例えばアプリの画面が切り替わる前後でそれぞれ取得すると、そのメモリ使用量の差分がわかったりするので、大量にメモリを消費しているシーケンスをある程度特定できたりします。 …

ListViewを複数選択と単選択で切り替える方法

通常は単選択(Single)モードで、ユーザのメニュー選択により複数選択(Multiple)モードに切り替わるようなListViewを作成する。まず使えそうだったのが、 API LEVEL 11から追加されたListView.CHOICE_MODE_MULTIPLE_MODALでsetChoiceModeを使って設定する。 l…

Developer Consoleで日本語にならない

Android Developer Consoleで日本語にならない件。 ある日から突然英語になってしまったので、どうしちゃったのかな?ということでしばらく放置していたのですが、調べました。 いや別に日本語でないとわかりまへんというわけじゃないんですよ?一応言い訳を…

keystoreのパスワードを変更する

Androidアプリを公開したものの、signedなapkをつくったときに適当なkeystoreのパスワードを設定してしまったけど、だんだんDL数も上がってきて、もうちょっとちゃんとしようかなと思った時にどうぞ。 ちなみにkeystore自体はAndroidに限るものではありませ…

ソースを保存するときに勝手に空白やタブが除去されてしまう

ソースを保存するときに勝手に空白やタブが除去されてしまう AnyEditツールというプラグインが入っている場合、その設定のデフォルト設定がONみたいです。 個人的にはむしろ自動でやってくれるのはいいのですが、チームでソース管理してると、バージョン管理…

(ガラケーからスマホ)FOMAからSPモードメールにメールを移行する方法

大きな流れは、 FOMA→PC→スマートフォン ですが、以下のようにやります。 時間ができたらもっと細かく書きます(物理的に用意するもの) ・FOMA端末 ・スマホ ・microSDカード ・FOMA用データ通信ケーブル 1. ドコモケータイデータリンクをダウンロード、イ…

Sleipnirを2.9.10にしたらファイルをダウンロード出来なくなった

色々と都合があり、ChromeとSleipnir2系と3系を使い分けている私ですが、Sleipnirを2.9.10にしてからzipファイルをダウンロードするときに「セキュリティ保護のため、このサイトからコンピューターにファイルをダウンロードされないように…」が出るようにな…

コールログを取得する方法

過去のメモから引っ張りだしてきた第3弾 コールログを取得する方法 Query作ってDBアクセスする。Xperia X10の頃の情報なので今ならもっと便利なAPIあるかも? // Prepare select data columns String projection = new String { BaseColumns._ID, CallLog.Ca…

IMoNiで外部のアプリからメールチェックをさせたり、メール受信件数を受け取ったりする

過去のメモから引っ張りだしてきた第2弾 もうお別れしている人が殆どかもしれませんが、私はまだ使っています。IMoNi。チェック機能を動作させるブロードキャスト net.grandnature.android.imodenotifier.ACTION_CHECK メール受信件数を受け取るブロードキャ…

フェイスカメラのIDを判別してOpenする

過去のメモから引っ張りだしてきた第1弾 private Camera openFrontFacingCameraGingerbread() { int cameraCount = 0; Camera cam = null; Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); cameraCount = Camera.getNumberOfCameras(); for ( int …

現在設定中のIME情報を得る方法

String currentIME = Settings.Secure.getString(getApplicationContext().getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD); Settings.SecureにアクセスするけどReadだけならPermissionは要らないようです。 取れる値は、InputMethodInfo.getI…

点線をCanvasに描画する

点線を描画するサンプル。drawLine()以外の描画処理でも使えるようです。 初期化処理{ Paint mDotPaint = new Paint(); mDotPaint.setPathEffect(new DashPathEffect(new float[]{ 5.0f, 5.0f }, 0)); // 5pixel描いたら5pixel描かないを繰り返す mDotPaint.…

Activityの左上にあるアプリアイコンがタップ出来る感じになる件(しても何もおこらない)

AndroidManifest.xmlのtargetSdkVersionを11〜13にしている場合に起きるようです。 10以下ならそもそもアイコンは出てきません。以下の解説を参照URLで見つけました。API level 11〜13 (Android 3.x)では、アプリケーションアイコンは常にクリック可能になっ…

ScrollViewでfadingEdgeを指定しているのに有効にならない件

HorizontalScrollViewをICSで使っていてfadingEdgeを使用していたのですが、いつの間にか無効になっていたのでなぜかと思って調べてみた。どうやらAndroidManifest.xmlのtargetSdkVersionをあるタイミングから14に変えたせいであることが判明。参照URLによる…

Android Source Build環境で特定のアプリだけdpiを変更したい時のmakefile

例えばタブレット端末等はシステム全体としてはmdpiがデフォルトですが、スマホ用のアプリはhdpi前提にしか作られてなかったりするので、タブレットのビルド環境でスマホ用のアプリをビルドすると画像がおかしくなったりします。 そのような場合でも以下のよ…

パフォーマンスチューニング【TextView編】

といってもシチュエーションは限定的であんまり同じ状況に遭遇することは多くないと思うが、setCompoundDrawables()やsetCompoundDrawablesWithIntrinsicBounds()を連続して呼び出している場合に注意。上記メソッドはソースコードを見ればわかるが、内部でin…

システム画像の在り処

入力時にステータスバーに登場するキーボードのアイコンを使おうとして、どこにあるかを探し た結果を記しておきます。 ※この画像はアプリからは取得できる場所にはありませんでした。 $(WORKING_DIR)/frameworks/base/packages/SystemUI/res/drawable/ic_sy…

Android Frameworkのソースコードによく出てくるSlog関数のログを取得する方法

adb logcat -b system もしかしたらビルドするときにengを付けないとダメかも知れない。参考URL http://stackoverflow.com/questions/6278406/how-to-watch-logs-from-slog

ThinkPad Tabletで端末初期化する

ThinkPad Tablet(Android 3.1の端末)を購入したが、なぜか特定のアプリをフリーのUninstaller経由でアンインストールすると100%端末リセット、しかも再起動後、Androidシステムのタスクが強制終了しまくってまともに端末が使えない状況に2回も遭遇。 工場出…

ダイアログを出さずにIMEから別のIMEに切り替える方法

自分がIME(InputMethodServiceを継承したクラス)であればswitchInputMethod()を使用することで実現可能。ただし切り替えたい相手のIMEのパッケージ名を知っている必要があります。 class TestIME extends InputMethodService { public void changeIME(){ Inp…

Camera.open(int id)は同時に一つしかできない

カメラが二台以上ある場合、複数カメラのPreview画面を同一Activity上で表示できるのか?と疑問に思ったので試してみた。 結果はCamera.open(int id)を呼び出したらCamera.release()をするまで次のCamera.open(int id)はできない(Exceptionが発生)。 なので…