2012-03-10 2 views
0

어떻게 사용자가 시스템 ringTones에서 그녀의 벨소리를 선택할 수 있도록 (항상 설정에 나타나는) 벨소리 활동을 만들 수 있습니까? 나는 그것을 봤지만, 완전한 튜토리얼을 찾지 못했지만, 정말로 혼란 스럽습니다. 튜토리얼 또는 일부 코드를 제공하십시오.내가 환경 설정에서 벨소리를 만들 수 있습니다

또한 내 애플리케이션에서 알림에 대한 특수 벨소리를 선택하도록하려면 공유 환경 설정이나 환경 설정을 사용해야합니까?

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

코드에서 이러한 환경 설정을 읽으려면 onStart() 메소드에서 호출 할 수있는 getPrefs() 메소드를 만들어야합니다. 우리가 대신 onCreate()onStart() 방법을 호출 할 때, 우리는 우리가 그들을 설정하고 우리의 주요 활동에 반환 한 경우 환경 설정로드 확신 할 수, 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를 호출해야합니까? 권리? 또한 두 번째 코드, reingtone에 완전한 코드입니까? 아니면 다른 코드가 필요합니까? – user1257040

+0

@ user1257040 : preferneces.xml 파일의 첫 번째 코드와 선택한 벨소리에 액세스하려는 두 번째 코드. –

+0

전체 코드입니까? 다른 코드를 작성할 필요가 없다는 뜻입니까? – user1257040

1

예, 당신은 사용자가 선택한 벨소리의 URI를 저장하는 SharedPreferences를 사용할 수 있습니다

은 이미 메뉴를했다. 다음을 사용하여 사용자가 벨소리를 선택할 수 있도록 할 수 있습니다.

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

이 코드는 SharedPreferences에 벨소리의 URI를 저장합니다.

+0

코드를 사용하면 사용자가 시스템에서 벨소리를 선택할 수있게됩니까? – user1257040

+0

예. 직접 체험 해보십시오. –

+0

이 코드를 어디에 넣어야합니까? – user1257040

관련 문제