2012-03-10 3 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

Полный код:

Рез/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? и второй код i должен поместить его в newActivity, и я должен вызвать newActivity в меню? правильно? также второй код, полный код для reingtone? или мне нужен другой код? – user1257040

+0

@ user1257040: первый код в файле preferneces.xml и втором коде, где вы хотите получить доступ к выбранному рингтону. –

+0

это полный код? я имею в виду, что нет необходимости в другом коде? – user1257040

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

Ваш код позволит пользователю выбрать рингтон из системы, rigth? – user1257040

+0

Да. Попробуйте сами и посмотрите. –

+0

У меня проблема, где я должен положить этот код? – user1257040

Смежные вопросы