mp3 サウンドファイルをアプリ フォルダに入れ、これをアプリの設定でデフォルトの着信音/通知音として設定することはできますか?
とりあえず、アプリから通知が来たときに鳴る着信音を選択できる設定画面があります。これは機能しますが、デバイスに存在するサウンドしか選択できません。私が欲しいのは、アプリのインストール時に自分の着信音ファイルをデバイスに持ち込むことです。これは可能ですか?たとえば、mp3 を assets フォルダーに保存し、そこに呼び出しますか?
編集:
MyApp.class:
public class MyApp extends Application {
public static SharedPreferences sp;
@Override
public void onCreate() {
super.onCreate();
// initialize default settings values if not already done (does not overwrite existing settings)
PreferenceManager.setDefaultValues(this, R.xml.settings, false);
sp = PreferenceManager.getDefaultSharedPreferences(this);
}
public static String getRingtone() {
return sp.getString("ringtone_pref", "DEFAULT_NOTIFICATION_URI");
}
public static boolean getVibrate() {
return sp.getBoolean("vibrate_pref", true);
}
}
SettingsFragment.class:
public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
public void SettingFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
getRingtoneTitle();
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
getRingtoneTitle();
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
updatePreference(key);
}
private void updatePreference(String key) {
Preference pref = findPreference(key);
if (pref instanceof RingtonePreference) {
Uri ringtoneUri = Uri.parse(KitchenHelper.getRingtone());
Ringtone ringtone = RingtoneManager.getRingtone(this.getActivity(), ringtoneUri);
if (ringtone != null) { pref.setSummary(ringtone.getTitle(this.getActivity())); }
}
}
private void getRingtoneTitle() {
Ringtone ringtone = RingtoneManager.getRingtone(this.getActivity(), Uri.parse(KitchenHelper.getRingtone()));
if (ringtone != null) { findPreference("ringtone_pref").setSummary(ringtone.getTitle(this.getActivity())); }
}
}