「設定画面を簡単に作る」において、PreferenceActivityを用いて簡単に設定画面を作成する方法を紹介しました。
今回は、端末にデフォルトで登録されている「Ringtone」「Notification」「Alarm」の3種類のデータから音データを選択することができる、RingtonePreferenceを紹介します。
RingtonePreferenceを使用することで、端末にデフォルトで登録されている音データをユーザに選択させ、アプリケーション内で使用することができます。
詳細な使用方法は続きをどうぞ。
RingtonePreferenceを使用し、音設定を行う際に必要なことは、以下の点です。
- XMLファイルの作成(PreferenceActivityのレイアウト)
- PreferenceActivityにて、上記XMLファイルのロード
それでは、一つづつ見ていきましょう。
・XMLファイルの作成(PreferenceActivityのレイアウト)
まず、PreferenceActivityが読み込むXMLファイルを作成します。
記述するファイルは、「設定画面を簡単に作る」の時と同じく、preference.xmlを作成しています。
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <RingtonePreference android:key="alarm_music_key" android:title="Set Alarm Music" android:ringtoneType="all" android:showDefault="true" android:showSilent="true" /> </PreferenceScreen>
ソースコード内で指定している内容
| android:key | preferenceのkey |
| android:title | 選択ウィンドウのタイトル |
| ringtoneType | 「ringtone」「notification」「alarm」「all」を指定。「all」以外を和演算指定も可能。 |
| showDefault | デフォルト着信音を表示するか |
| shouwSilent | サイレントを表示するか |
・PreferenceActivityにて、上記XMLファイルのロード
PreferenceActivityのレイアウトファイルが作成出来れば、PreferenceActivityにおいて読み出します。
public class Main extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* 作例したPreferenceのレイアウトファイル読み出し */
addPreferencesFromResource(R.xml.preferences);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
/* プリファレンスが変更された時に呼び出される */
}
以上までが、RingtonePreferenceの使用方法です。
最後に、RingtonePreferenceを使用し選択されたデータをアプリケーション内で使用する際の一例を記載します。
/* デフォルトのpreferenceを取得 */
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
/* RingtonePreferenceの設定値取得 */
String url = sp.getString("alarm_music_key", "");
if(url == null){
/* サイレントの場合 */
}else{
/* その他 */
Uri uri = Uri.parse(url);
MediaPlayer mp = MediaPlayer.create(this, uri);
mp.setLooping(true);
mp.seekTo(0);
mp.start();
}
RingtonePreferenceを使用し、設定されたデータを参照する場合に注意しなければならないのは、
サイレントを設定した場合、NULLが書き込まれる点です。
一例では、NULLの場合はMediaPlayerの呼び出しを行っていません。
MediaPlayerの詳細な使用方法については、
「音声ファイルを再生する」にて紹介してますので、そちらも参考になさってください。

