Erstellen Sie einen zufälligen Klingelton auf Android
Posted bydurch Moyens Staff
Vor 5 Jahren
5 min lesen
Android-Nutzer sind immer auf der Suche nach Apps, die das Verhalten ihrer Geräte auf neue und innovative Weise ändern können. Die Android-Plattform bietet ihren Entwicklern viel Freiheit beim Erstellen solcher Anwendungen. In diesem Tutorial erfahren Sie, wie Sie eine App erstellen, die den Klingelton eines Android-Telefons bei jedem Anruf zufällig anordnet.
Voraussetzungen
Wenn Sie verfolgen möchten, stellen Sie sicher, dass Sie die neueste Version von Android Studio installiert haben. Sie können es von bekommen Android-Entwickler-Website.
Da dies ein Zwischen-Tutorial ist, werde ich die Grundlagen nicht zu detailliert behandeln. Ich gehe davon aus, dass Sie bereits eine oder mehrere Android-Apps erstellt haben und die Grundlagen des Android SDK kennen.
1. Erstellen Sie ein neues Projekt
Starten Sie Android Studio und erstellen Sie ein neues Projekt. Setzen Sie den App-Namen auf Alarm. Stellen Sie sicher, dass Sie einen eindeutigen Paketnamen auswählen.
Diese App kann auf allen Telefonen mit API-Level 8 oder höher verwendet werden. SDK-Minimum beim Android 2.2.
Dann wähle Fügen Sie keine Aktivität hinzu und klicken Sie auf Fertig.
2. Manifest bearbeiten
Unsere App benötigt folgende Berechtigungen:
android.permission.READ_PHONE_STATE eingehende Anrufe zu erkennen
android.permission.WRITE_SETTINGS um die Standardeinstellung für den Klingelton zu ändern
android.permission.READ_EXTERNAL_STORAGE um die Liste der verfügbaren Klingeltöne abzurufen
Fügen Sie Folgendes hinzu: AndroidManifest.xml::
Diese App hat eine Activity, damit der Benutzer das Klingeländerungsverhalten aktivieren / deaktivieren kann.
Es hat auch eine BroadcastReceiver um Änderungen im Anrufstatus zu erkennen. Wie unten gezeigt, ist die Absichtsaktion, die er hört, wie folgt android.intent.action.PHONE_STATE.
3. Modifikator strings.xml
das string.xml Die Datei enthält die von der Anwendung verwendeten Zeichenfolgen. Aktualisieren values / strings.xml Wie nachfolgend dargestellt:
Ringtone RandomizerActivate Ringtone RandomizerDeactivate Ringtone RandomizerRingtones available on this device:
4. Erstellen Sie ein Aktivitätslayout
das Activity benötigt folgende Ansichten:
ein ToggleButton um das zufällige Klingeln zu aktivieren / deaktivieren
ein ListView um alle verfügbaren Klingeltöne anzuzeigen
ein TextView welches als Etikett fungiert
Erstellen Sie eine Datei mit dem Namen layout / activity_main.xml und ersetzen Sie den Inhalt durch den folgenden. Wie Sie sehen können, ist das Layout recht einfach und unkompliziert.
5. Erstellen RingtoneHelper Assistenzklasse
Um den Umgang mit dem zu vermeiden RingtoneManager direkt in der Activity oder der BroadcastReceiverWir erstellen eine Hilfsklasse mit dem Namen RingtoneHelper.
public class RingtoneHelper {
}
das RingtoneHelper Klasse wird zwei statische Methoden haben, die die verwenden RingtoneManager Klassenzimmer.
fetchAvailableRingtones
das fetchAvailableRingtones Die Methode ruft die Liste der verfügbaren Klingeltöne ab und gibt a zurück List von Ringtone Objekte.
public static List fetchAvailableRingtones(Context context){
List ringtones = new ArrayList<>();
RingtoneManager mgr = new RingtoneManager(context);
mgr.setType(RingtoneManager.TYPE_RINGTONE);
int n = mgr.getCursor().getCount();
for(int i=0;i
Im fetchAvailableRingtones Methode beginnen wir mit der Erstellung einer Instanz der RingtoneManager Klassenzimmer. das RingtoneManager Objekt kann alle auf dem Gerät verfügbaren Sounds auflisten. Dies schließt Töne für Alarme und andere Benachrichtigungen ein.
Wir nehmen das setType Methode zum Festlegen des Typs auf TYPE_RINGTONE weil wir nur an Klingeltönen interessiert sind.
Wir rufen dann die getCount Methode, um herauszufinden, wie viele Klingeltöne verfügbar sind, und rufen Sie die getRingtone Methode in a for Schleife, wobei jeder Klingelton hinzugefügt wird ringtones.
changeRingtone
das changeRingtone Methode ist verantwortlich für die Änderung des Klingeltons des Geräts, das Hauptmerkmal unserer Anwendung.
public static void changeRingtone(Context context){
SharedPreferences preferences = context.getSharedPreferences("randomizer", Context.MODE_PRIVATE);
if(!preferences.getBoolean("active", false))
return;
RingtoneManager mgr = new RingtoneManager(context);
Random random = new Random(System.currentTimeMillis());
int n = random.nextInt(mgr.getCursor().getCount());
RingtoneManager.setActualDefaultRingtoneUri(context,
RingtoneManager.TYPE_RINGTONE, mgr.getRingtoneUri(n));
}
Wir checken zuerst ein SharedPreferences ob der Benutzer das zufällige Klingeln aktiviert hat. Wir benutzen dann die Random Klasse, um eine Zufallszahl zu wählen, die kleiner als die Anzahl der verfügbaren Ringe ist.
das getRingtoneUri wird aufgerufen, um den URI des entsprechenden Klingeltons abzurufen und an den zu senden setActualDefaultRingtoneUri Methode zum Ändern des Klingeltons.
6. Erstellen Sie einen Rundfunkempfänger
Erstellen Sie eine neue Klasse mit dem Namen RingReceiver wer erbt von BroadcastReceiver. Die neue Klasse hat nur eine benannte Methode onReceive. Bei dieser Methode rufen wir lediglich die Hilfsklasse auf changeRingtone Methode, wenn die folgenden Kriterien erfüllt sind:
der Wert des Suchschlüssels EXTRA_STATE entspricht TelephonyManager.EXTRA_STATE_RINGING
Das ist was die RingReceiver Die Klasse sollte aussehen wie:
public class RingReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)) {
String callState = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (callState.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
RingtoneHelper.changeRingtone(context);
}
}
}
}
sept. Erstellen Sie eine Aktivität
Erstellen Sie eine neue Klasse mit dem Namen MainActivity wer erbt von Activity. Wir ersetzen die onCreate Methode und führen Sie die folgenden Aktionen aus:
aufrufen setContentView um das in definierte Layout zu verwenden activity_main.xml
Helferklasse anrufen fetchAvailableRingtones Methode zum Füllen a List Klingeltöne
Initialisieren Sie die ListView
Initialisieren Sie die ToggleButton
das MainActivity Die Klasse sollte jetzt so aussehen:
in dem initializeToggle Methode definieren wir den Zustand der Umschalttaste nach a boolean benannter Wert aktiv im SharedPreferences. Dieser Wert wird auf gesetzt false standardmäßig.
Wir fügen auch ein OnCheckedChangeListener auf die Umschalttaste, um den Wert in zu aktualisieren SharedPreferences. das putBoolean und commit Methoden von Editor werden verwendet, um dies zu erreichen.
das initializeList Methode erstellt eine Adapter beyogen auf List von Klingeltönen. benutzen android.R.layout.simple_list_item_1 wie das Layout der Elemente der ListView. Es ist nichts als ein TextView. Es sollte den Klingelton-Titel mit dem anzeigen Ringtone Klassenzimmer getTitle Methode. Dies sollte innerhalb der erfolgen getView Methode von Adapter, nachdem es abgesagt wurde.
Sobald die Adapter ist bereit, weisen Sie es zu ListView Verwendung der ListViewvon setAdapter Methode.
Unsere App kann jetzt auf einem Android-Handy bereitgestellt werden. Sie sollten in der Lage sein, alle auf Ihrem Telefon verfügbaren Klingeltöne anzuzeigen, wenn Sie die App starten. Klicken Sie auf die Umschalttaste, um den Randomizer zu aktivieren.
Rufen Sie mehrmals von einem anderen Telefon aus an. Wenn Sie zum ersten Mal einen Anruf erhalten, wird Ihr ursprünglicher Klingelton abgespielt. Beim nächsten Anruf hören Sie jedes Mal einen zufälligen Klingelton.
Beachten Sie, dass diese App den Standardklingelton Ihres Telefons ändert. Wenn Sie einem Kontakt oder einer Kontaktgruppe einen bestimmten Klingelton zugewiesen haben, wird dieser Klingelton immer verwendet.
Fazit
Sie wissen jetzt, wie Sie die in der RingtoneManager Klassenzimmer. Sie haben auch gelernt, wie Sie eingehende Anrufe erkennen. Verlassen Sie sich auf diese App, um andere Benachrichtigungen auf die gleiche Weise zufällig zu sortieren. Besuche den Android-Entwickler-Website um mehr über die zu erfahren RingtoneManager Klassenzimmer.
Unterstützen Sie unsere Arbeit ❤️
Wenn Ihnen dieser Artikel gefallen hat, können Sie uns mit einem Trinkgeld unterstützen, damit wir weiterhin großartige Inhalte veröffentlichen können.