我可以在偏好中制作铃声吗?

use*_*040 0 java android preference ringtone

如何制作铃声活动(总是出现在设置中),以便用户可以从系统铃声中选择她的铃声我用Google搜索但我没有找到完整的教程,我真的很困惑,请给我教程或一些代码.

此外,如果我希望用户在我的应用程序中选择通知的特殊铃声,我应该使用共享偏好还是首选项?

我已经做了菜单:

      // Menu Code Part#2
    public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.about:
  startActivity(new Intent(this, About.class));
    return true;
    case R.id.help:
  startActivity(new Intent(this, Help.class));
    return true;
    case R.id.setting:
   startActivity(new Intent(this, Setting.class));
        return true;
    default:
    return super.onOptionsItemSelected(item);
   }
Run Code Online (Sandbox Code Playgroud)

ρяσ*_*я K 6

完整代码:

RES/XML /的preferences.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
      <PreferenceCategory
                android:title="Second Category">

        <RingtonePreference
                android:name="Ringtone Preference"
                android:summary="Select a ringtone"
                android:title="Ringtones"
                android:key="ringtonePref" />

</PreferenceCategory>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

Preferences.class

public class Preferences extends PreferenceActivity {
@Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                addPreferencesFromResource(R.xml.preferences); 

 }
}
Run Code Online (Sandbox Code Playgroud)

你的代码在这里:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.about:
   // startActivity(new Intent(this, About.class));
    return true;
    case R.id.help:
    startActivity(new Intent(this, Help.class));
    return true;
    case R.id.setting:
    Intent settingsActivity = new Intent(getBaseContext(),
                                                Preferences.class);
                                startActivity(settingsActivity);


        return true;
    default:
    return super.onOptionsItemSelected(item);
    } 
Run Code Online (Sandbox Code Playgroud)

要从代码中读取这些首选项,我们应该创建一个getPrefs()方法,我们可以在onStart()方法中调用它.当我们在onStart()方法中调用它而不是onCreate(),我们可以确定在我们设置它们并返回到我们的主要活动时加载首选项,该getPrefs()方法可能如下所示:

String ringtonePreference;
// Get the xml/preferences.xml preferences
                SharedPreferences prefs = PreferenceManager
                                .getDefaultSharedPreferences(getBaseContext());
 ringtonePreference = prefs.getString("ringtonePref",
                                "DEFAULT_RINGTONE_URI");
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml中

<activity
        android:name=".Preferences"
        android:label="@string/set_preferences">
</activity>
Run Code Online (Sandbox Code Playgroud)