サービスを開始するときには通知を設定しないといけない。でも通知を設定すると通知音が鳴ってしまう。これをなんとかしたいんだけど、通知を長く押して通知をサイレントにする方法しか見つからない。プログラム側で無音にする方法がないものか。
OptionMenuアイテムのLongClick
StackOverflowにはsetActionViewしてgetActionView.setOnLongClickListenerすれば良いと書いてあるんだが、なぜかリスナーが呼ばれない。
Activity遷移でSpinnerのDefaultSelectionに苦しんだ話
アプリの起動時にはSpinnerの最初の項目をEditTextに表示したい。
別のActivityを起動して新たに項目を選択した場合は新しい項目をEditTextに表示したい。
でも元のActivityに制御が戻ったときにSpinnerのEditTextやらSpinnerの初期化をやってしまうと、結局Activtyで選択した項目がロストしてしまう。
とりあえずSpinnerのDefaultSelectionの問題はカウンタを使って回避した。リスナーを登録する前にカウンタをゼロクリアすることで対応。コードはこんな感じ。
int chkSpinnerMusic = 0;
private AdapterView.OnItemSelectedListener onMusicItemSelected = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
if( chkSpinnerMusic++ <= 0 ) {
Log.d(DTAG, "onMusicItemSelected Skip 1st default selection.");
return;
}
新しいActivityでの選択が無効になってしまう問題については、OnActivityResultでセットして、OnResumeでフラグをリセットして、フラグが立っている処理を迂回、という感じで対応。
API 30のAVDは動かないようだ。バグってるのか??
Theme色の変更
res/values/colors.xmlでデフォルトのテーマカラーを変更する。
<color name=”colorPrimary”>#A9A9B1</color>
<color name=”colorPrimaryDark”>#3D3F3F</color>
<color name=”colorAccent”>#97F106</color>
AndroidStudioでカラーエディタを呼び出して変更できる。
androidのバージョンコードを区別した処理の切り分け
バージョンを意識した切り分け方
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { }
名前 | バージョン | SDK_INT |
11 | 30 | |
10 | 29 | |
Pie | 9 | 28 |
Oreo | 8 | 26 |
Nougat | 7 | 24 |
Mashmallow | 6 | 23 |
Lolipop | 5 | 21 |
KitKat | 4 | 19 |