2012-03-10 42 views
0

如何使鈴聲活動(總是出現在設置中),以便用戶可以從系統鈴聲中選擇她的鈴聲我使用了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); 
    } 

回答

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> 

Preferences.class

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

} 
} 

您的代碼去這裏:

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); 
    } 

要從代碼中讀取這些首選項,我們應該創建一個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"); 

androidmanifest .XML

<activity 
     android:name=".Preferences" 
     android:label="@string/set_preferences"> 
</activity> 
+0

mainfist中的第一個代碼?第二個代碼我應該把它放在newActivity中,我應該在菜單中調用newActivity?對?也是第二個代碼,它是完整的代碼重新嗎?還是我需要另一個代碼? – user1257040 2012-03-11 09:01:56

+0

@ user1257040:您的preferneces.xml文件中的第一個代碼,以及您要訪問選定鈴聲的第二個代碼。 – 2012-03-11 09:13:53

+0

它是完整的代碼?我的意思是不需要另一個代碼? – user1257040 2012-03-11 09:21:29

1

是的,你可以使用SharedPreferences來存儲用戶選擇的鈴聲的URI。您可以讓用戶選擇使用此鈴聲:

Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); 
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION); 
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Ringtone"); 
if (mRingtoneUri != null) { 
    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, Uri.parse(mRingtoneUri)); 
} else { 
    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null); 
} 
startActivityForResult(intent, RINGTONE_REQUEST); 

上述代碼將提示用戶從系統中選擇鈴聲。當他們選擇一個,你將需要處理的Activity結果:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == RINGTONE_REQUEST && resultCode == RESULT_OK) { 
     Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); 
     SharedPreferences preferences = getSharedPreferences(PREF, MODE_PRIVATE); 
     Editor editor = preferences.edit(); 
     if (uri == null) 
      editor.putString(RINGTONE, null); 
     else 
      editor.putString(RINGTONE, uri.toString()); 
     editor.commit(); 
     if (uri == null) 
      mRingtoneUri = null; 
     else 
      mRingtoneUri = uri.toString(); 
     } 
    } 
} 

此代碼將保存鈴聲的URI SharedPreferences

+0

您的代碼將讓用戶選擇從系統鈴聲,分辯? – user1257040 2012-03-10 22:58:19

+0

是的。嘗試一下,看看。 – 2012-03-10 23:04:10

+0

我有一個問題,我應該把這個代碼? – user1257040 2012-03-11 13:00:08

相關問題