In meiner Anwendung erteilen ich die folgende Erklärung ab:Was ist AudioFlinger und warum schlägt TONE_PROP_ACK fehl?
toneGenerator.startTone(ToneGenerator.TONE_PROP_ACK, 600);
, die auf einem billigen LG LS670 mit Android 2.3.3 funktioniert sehr gut, aber klingen nicht überhaupt auf allen anderen Handys Ich habe von Android 2.2 im Bereich .1 bis Android 2.3.4.
Also ich weiß, dass die Betriebssystemversion hier keine Rolle spielt (Ich habe auch in der Dokumentation verifiziert, dass es seit API 1 unterstützt wurde).
Auch beide Ruftonlautstärke und Medienvolumen auf Maximum eingestellt und toneGenerator initialisiert mit:
toneGenerator = new ToneGenerator(ToneGenerator.TONE_DTMF_1, 100);
Und ich festgestellt, dass Settings.System.DTMF_TONE_WHEN_DIALING
auf 1 gesetzt ist
dieses inkonsistentes Verhalten Baffled (across verschiedene Telefone), habe ich die Systemprotokolle untersucht, wenn dies passiert, und der einzige verdächtige Unterschied, den ich feststellen konnte, ist, dass die Telefone TONE_PROP_ACK
diese Zeile in ihrem Protokoll fehlschicken:
AudioFlinger setParameters(): io 25, keyvalue routing=0, tid 155, calling tid 121
Was ist der Zweck von AudioFlinger und was könnte seine Verbindung zum Muting TONE_PROP_ACK
sein?
Beliebige idea, wie man meinen Code repariert, so dass TONE_PROP_ACK immer klingelt, unabhängig vom Telefonmodell?
Audio flinger ist die Systemkomponente, die das Audio von android userpace verwaltet, bevor es an den Kerneltreiber übergeben wird. Sind Sie in der Lage, Ton von irgendeiner der Tonfunktionen zu erhalten? Haben Sie in den API-Dokumenten gesehen, dass das Audio-Routing variabel ist? Was versuchst du wirklich zu erreichen - du weißt, dass diese Töne nicht über den Anruf-Uplink gehen, richtig? –
@ChrisStratton Ja, ich weiß, dass diese Töne nicht über den Anruf-Uplink gehen. Dies ist eigentlich mein bevorzugtes Verhalten, da ich nur versuche, einen hörbaren Hinweis zu geben (es muss nicht DTMF sein). Ich kann Ton von den Tonfunktionen erhalten, wenn ich die Wählaktivität des Telefons verwende. Können Sie das "Audio-Routing ist variabel" näher erläutern? Wo finde ich diesen Teil in den API-Dokumenten? Direkte URL wäre super. Danke +1. –
'routing = 0' für' io25' bedeutet, dass der AudioFlinger einen bestimmten Audio-Stream (ich vermute einen AudioStreamOut in diesem Fall) anweist, dass er auf "Nirgendwo" routen sollte. Wie die Audio-HAL das handhaben wird, ist implementationsspezifisch - so könnte es z.B. Belassen Sie das Routing für diesen Stream unverändert. – Michael