「設定画面を簡単に作る」において、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の詳細な使用方法については、
「音声ファイルを再生する」にて紹介してますので、そちらも参考になさってください。