Android エミュレータに着信音を追加する でいくつか着信音、通知音、アラーム音を追加しておきます。
Android アプリ設定画面を作成するで作成したxmlレイアウトにRingtonePreferenceを追加します。
※キーはres/values/ids.xmlでname=ringtone,value=ringtoneで設定しています。
※タイトル、要約はベタ書きしていますがres/values/strings.xmlで設定します。
RingtonePreferenceで選択できる「音」を着信音だけにしたり、アラーム音だけにしたりするには、xmlレイアウトのxmlを直接変更します。
以下ではandroid:ringtoneType="all"ですべての「音」を選択できるようにします。
着信音だけにするには"ringtone"、通知音だけにするには"notification"、アラーム音だけにするには"alarm"を指定します。
<RingtonePreference
android:key="@string/ringtone"
android:summary="着信音の要約"
android:title="着信音のタイトル"
android:ringtoneType="all">
</RingtonePreference>
PreferenceActivityを継承したアクティビティでは作成したxmlレイアウトを、onCreate()メソッドではaddPreferencesFromResource()メソッドでxmlを読み込みます。
RingtonePreferenceの選択音が変更されたイベントを処理するには
Context#findPreference()メソッドで、xmlレイアウトで設定したキーの値をもとにRingtonePreferenceインスタンスを取得します。
このRingtonePreferenceインスタンスにOnPreferenceChangeListenerをハンドルします。
package my.study.android;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.RingtonePreference;
import android.preference.Preference.OnPreferenceChangeListener;
public class MainActivity extends PreferenceActivity {
// 着信音Preferenceの PreferenceChangeリスナー
private OnPreferenceChangeListener ringtonePreference_OnPreferenceChangeListener =
new OnPreferenceChangeListener(){
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
return ringtonePreference_OnPreferenceChange(preference,newValue);
}};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//xmlレイアウトの読み込み
this.addPreferencesFromResource(R.xml.pref);
// キーを基に、着信音設定のインスタンスを取得する
CharSequence cs = getText(R.string.ringtone);
RingtonePreference pref = (RingtonePreference)findPreference(cs);
// リスナーを設定する
pref.setOnPreferenceChangeListener(ringtonePreference_OnPreferenceChangeListener);
}
private boolean ringtonePreference_OnPreferenceChange(Preference preference, Object newValue){
String url = (String)newValue;
Uri uri;
Ringtone ringtone;
if ("".equals(url)) {
preference.setSummary("サイレント");
} else {
uri = Uri.parse(url);
ringtone = RingtoneManager.getRingtone(this, uri);
preference.setSummary(ringtone.getTitle(this));
}
return true;
}
}
【関連項目】
Android プリファレンスの編集
Android アプリ設定画面を作成する
Android アプリ設定画面を作成する CheckBoxPreference
Android アプリ設定画面を作成する EditTextPreference
Android アプリ設定画面を作成するRingtonePreference
Android アプリ設定画面を作成するListPreference
Android アプリ設定画面を作成する 依存関係を設定する
Android アプリ設定画面を作成する PreferenceScreen
Androidアプリ設定画面を作成する PreferenceScreen(別アクティビティ)
0 件のコメント:
コメントを投稿