2014-03-19 13 views
7

Ich habe viele Beispiele gefunden, wie Standard-Klingelton zu bekommen. Etwas wie das:Wie bekomme ich den aktuellen Klingelton in Android?

Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); 
     Ringtone ringtone = RingtoneManager.getRingtone(getApplicationContext(), alert); 
     ringtone.setStreamType(AudioManager.STREAM_RING); 
     ringtone.play(); 

Aber ich möchte den tatsächlichen aktuellen Klingelton, der vom Benutzer festgelegt wurde, erhalten.

Antwort

10

ich mit diesem Thema und zu kämpfen hatte, so dass die Lösung ist:

Uri defaultRingtoneUri = RingtoneManager.getActualDefaultRingtoneUri(getActivity().getApplicationContext(), RingtoneManager.TYPE_RINGTONE); 
Ringtone defaultRingtone = RingtoneManager.getRingtone(getActivity(), defaultRingtoneUri); 
2

Hier ist die Lösung.

Innen onActivityResult:

Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); 

Ringtone r=RingtoneManager.getRingtone(this, uri); 

String ringToneName=r.getTitle(this)); 

Toast.makeText(getApplicationContext(), "Ringtone Name : +ringtonename+"",Toast.LENGTH_SHORT).show(); 

Aber es wird exception in Emulator zeigen, weil es keinen Klingelton in Emulator ist so auszuführen, das in mobilen

+0

Danke! Also nehme ich an, dass Daten intent sind. Weil ich versuche, es in BroadcastReceivers on onReceive-Methode zu tun, die Context und Intent als übergebene Parameter enthält. Ich werde es später noch einmal versuchen. Danke noch einmal. – chabislav

+0

Versucht, es in Activity-Klasse oder BroadcastReceiver zu arbeiten und keinen Erfolg. r.getTitle (this) gibt "unknown ringtone" zurück und wenn Sie versuchen, den Klingelton abzuspielen, stürzt er ab. – chabislav

1

Versuchen mit:

Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI); 
+0

Dies funktioniert nicht, da RingtoneManager.getDefaultUri nur INT-Parameter akzeptiert, während RingtoneManager.EXTRA_RINGTONE_EXISTING_URI ein String ist. – chabislav

0

Ich habe suchte auch viel nach deinem Problem, das ich auch hatte. Endlich bekam Lösung von diesem selbst.

Verwenden Sie den folgenden Code in der Schaltfläche für Klingelton Absicht.

public void pickRingtone(View view) { 
     // TODO Auto-generated method.stub 

     Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); 
     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE); 
     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Ringtone"); 

    // for existing ringtone 
     Uri urie = RingtoneManager.getActualDefaultRingtoneUri(
       getApplicationContext(), RingtoneManager.TYPE_RINGTONE); 
     intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, urie); 

    startActivityForResult(intent, 5); 
} 
+0

Das hat meine Frage immer noch nicht beantwortet. Ich möchte einfach nur einen URI für den aktuell ausgewählten Klingelton (von einem Benutzer) abrufen. Ich brauche keinen Klingelton-Picker oder ähnliches. Ich muss nur ein Uri bekommen und es spielen, wenn ich es brauche. – chabislav

0

Dies ist die Erweiterung der Antwort des dgabor. Fügen Sie einfach defaultRingtone.play(); hinzu, um den Klingelton abzuspielen.

Uri defaultRintoneUri = RingtoneManager.getActualDefaultRingtoneUri(getApplicationContext(), RingtoneManager.TYPE_RINGTONE); 
Ringtone defaultRingtone = RingtoneManager.getRingtone(getApplicationContext(), defaultRintoneUri); 
defaultRingtone.play(); 
Verwandte Themen