簡體   English   中英

從SharedPreferences將鈴聲加載到Mediaplayer中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM