Ich habe 2 VoIP-Anwendungen, die ich entwickle, die zusammenarbeiten müssen; eine ist eine Softphone-App (App A), die verschiedene Audio-Modi wie erwartet verwendet, d. h. RINGTONE, IN_COMMUNICATION usw. Die andere App (App B) benötigt den Audio-Modus NORMAL. Ich versuche sicherzustellen, dass sie gut miteinander spielen, wenn also die Softphone-App A einen Anruf beendet, bringt sie den Audiomodus auf NORMAL zurück. Wenn App B in der Mitte von App A ausgeführt werden muss, speichert es den gefundenen Audiomodus und stellt es nach Abschluss wieder her.Android AudioManager.setMode (MODE_NORMAL) schlägt fehl
Zum Beispiel für einen eingehenden Anruf, kann App A Audio-Modi ändern wie folgt:
- MODE_RINGTONE wenn Anruf kommt
- MODE_IN_COMMUNICATION wenn Anruf verbunden ist
- MODE_NORMAL nach Aufruf beendet wird
Wenn App B etwas, während ein Anruf (Schritt 2) verbunden ist, tun muss, wird es
- speichern MODE_IN_COMMUNICATION
- Satz MODE_NORMAL
- tun, was es
- wiederherstellen MODE_IN_COMMUNICAITON
Beide Anwendungen erhalten die Android Audio-Manager mit ihren Anwendungskontext tun muss.
Das Problem, das ich habe, und das ich nicht verstehe, ist, dass App A, nachdem die obigen Schritte ausgeführt wurden, nicht versucht, den Audiomodus nach Beendigung des Anrufs auf NORMAL zurückzusetzen.
myAudioManagerReference.setMode(AudioManager.MODE_NORMAL);
if (myAudioManagerReference.getMode() != AudioManager.MODE_NORMAL)
Log.w(CLASSTAG, "failure to set audio mode to MODE_NORMAL);
Ist es möglich, meine App B eine Art Sperre auf dem Audio-Manager-Modus zu haben? Oder die Berechtigungen für App A so geändert haben, dass der Modus nicht wieder in NORMAL geändert werden kann? Ich habe festgestellt, dass App A den Modus erfolgreich auf NORMAL ändern kann, sobald ich App B beendet habe.