[英]Load Ringtone into Mediaplayer from SharedPreferences
恐怕我對URI在這里的工作方式有一些根本的誤解。 我試圖將此警報音保存到我的SharedPreferences文件中,然后以相同的方式還原它。
我認為問題在於我如何解析Uri,我不太了解如何檢索URI。
我嘗試將以下內容存儲到我的sharedpreferences中。
//the displayed name of the ringtone
RingtoneManager.getRingtone(this, uri).getTitle(this)
和
data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)
每個字符串都可以正確還原,但是我不知道我需要解析實際的密鑰以檢索所需的警報音。
獲取首選項如下
/** Restore alarm tone and update UI */
if (mSettings.contains(ALARM_TONE)){
alarmTone = mSettings.getString(ALARM_TONE, null);
if (alarmTone != null) {
uri = Uri.parse(alarmTone);
TextView t = (TextView) findViewById(R.id.alarmTone);
t.setText(RingtoneManager.getRingtone(this, uri).getTitle(this));
mp = MediaPlayer.create(getApplicationContext(), uri);
}
}
我找到的解決方案使用Uri.toString()
將Uri保存到首選項。 使用Uri.parse(preferenceString)
重新加載鈴聲
onActivityresult,我立即將uri字符串保存為我的首選項
/** For selecting an alarmtone */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {
case ALARM_URI:
uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
TextView mTextView = (TextView) findViewById(R.id.alarmTone);
mTextView.setText(RingtoneManager.getRingtone(this, uri).getTitle(this));
mp = new MediaPlayer();
mp = MediaPlayer.create(getApplicationContext(), uri);
mp.setLooping(true);
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString(ALARM_TONE, uri.toString());
editor.commit();
break;
default:
break;
}
}
}
從此處開始加載URI
if (mSettings.contains(ALARM_TONE)){
alarmTone = mSettings.getString(ALARM_TONE, null);
if (alarmTone != null) {
uri = Uri.parse(alarmTone);
//update textview to loaded alarm tone
TextView t = (TextView) findViewById(R.id.alarmTone);
t.setText(RingtoneManager.getRingtone(this, uri).getTitle(this));
mp = MediaPlayer.create(getApplicationContext(), uri);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.