Android SDK Tips #1
PapiJump for Androidを作る時にいろいろ調べたので、メモ。
Activityの状態遷移が複雑すぎ…
自動的に画面が暗くならないように
View#setKeepScreenOn(true);
キーボードを開いた時などに、画面が自動的に回転しないようにする
manifestファイルのactivity要素に以下のような属性を追加
<activity android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation" ...
android:configChangesをつけないと、キーボードを開いたときに、Activityが勝手に再起動してしまう。
画面サイズに合うように、SurfaceViewの内容を拡大縮小
SurfaceViewのサイズは画面サイズに合わせておいて、Canvas#scale()を使うと良い。
もし、SurfaceView#setFixedSize()を使う場合は、Canvasを取得する時にSurfaceHolder#lockCanvas(Rect)を使う。(そうしないと、画面サイズでクリッピングされてしまうっぽい)
端末固有ID
以下のように取得できる。emulatorでは取れない。
String android_id = android.provider.Settings.System.getString(getContentResolver(), System.ANDROID_ID);
DevPhoneで試したところ、"200"+IMEIの16進数表現 になるっぽい。
ちなみに、TelephonyManager#getDeviceId() は、READ_PHONE_STATEパーミッション(端末の電話番号まで取れてしまう)が必要なので、使いづらい。
ブラウザ起動
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://...")));
ブラウザでは常に新しいウィンドウが開いてしまう(最大8個)。なんとかならないものか…。