Androidプログラミングの小技を3つほど

昨日は音声再生でハマってあまり進まなかったので、今日も帰宅してからプログラミングをしていました。なぜかとても調子良く進んだので、役立ったテクニックを書いておきます。



小技1
今、効果音を再生するアプリを作っているのですが、普通に音量を変更しようとすると、着信音の変更になってしまいます。本当はメディアの音量の変更がしたいのに…と思ってググったところ、Techfirmさんのブログにズバリ解決策が。
どうやら

setVolumeControlStream(AudioManager.STREAM_MUSIC);

をActivityのonCreate()メソッド内に記述するだけとのこと。早速やってみたら、できました。

こういう、ごく普通のことができるようになるってすばらしい。



小技2
またまたTechfirmさんのブログを参考に、音の再生ON/OFF等の設定画面を作成しました。PreferenceActivityを継承したActivityで簡単に実装できます。で、チェックボックスxmlで記述・配置すると、デフォルトではチェックOFF(false)なのですが、
android:defaultValue="true"
と追記すると、デフォルトでチェックON(true)になりました。



小技3
小技2の設定用Activityの画面ですが、元のメインActivityに戻る時は端末のBackキーを押します。でもそれだけじゃ明らかに不親切。元の画面へ戻りたい時、一瞬悩んでしまう可能性があります。

そこで、日本アンドロイドの会のMLの過去ログを参考にして、以下のように解決しました。
まず、PreferenceActivityのレイアウトファイルであるpreference.xmlのPreferenceCategoryタグ内の最下に

<Preference
android:key="back_key"
android:title="@string/setting_back">
</Preference>

と追加記述。これで設定行の最下に「戻る」行が作成できます。


一方Activityのコードには以下を追記して、追加した「戻る」行が押下された時の処理を記述します。
//onCreate()内から呼び出すメソッド
private void setBackLine(){
Preference prefBack = findPreference("back_key");
prefBack.setOnPreferenceClickListener(new PreferenceClickListener());
}

//リスナー
private class PreferenceClickListener implementsOnPreferenceClickListener {
public boolean onPreferenceClick(Preference preference) {
finish();
return true;
}
}


これでキーだけでなく、「戻る」をタッチして元の画面に戻すことができます。キーだけよりもずっと親切だと思います。


※コードが左揃えになってしまい、読みにくくてすいません。
※上記XMLの記述ですが、タグと認識されてしまい、変なタグが入ったりリンクになっちゃったりしましたので、一部全角で記述しています。「:」「<」など。
xmlとかコードの揃えとかをそのまま載せたい時はどうするのかな?調べてみるか。