Come ricevere gli events modificati dal volume per il tipo di stream vocale (in-call)?

Sto cercando di registrare un ricevitore broadcast per gestire l'evento VOLUME_CHANGED_ACTION , solo per il tipo di stream volume_voice (che vedo empiricamente da indice 0 in Settings.System.VOLUME_SETTINGS ).

L'etichetta EXTRA_VOLUME_STREAM_TYPE è nascosta, quindi ho usato la string esplicita "android.media.EXTRA_VOLUME_STREAM_TYPE" . Tutto ha funzionato benissimo su Android 2.3.4 (ha ottenuto il valore 0 per volume_voice come previsto), ma sul valore 2.3.5 il valore che questa contiene è 10 , che dà un ArrayIndexOutOfBoundsException su Settings.System.VOLUME_SETTINGS . Inoltre, vedo che volume_voice è ancora indice 0 in Settings.System.VOLUME_SETTINGS .

  • android riducono le size del file per le immagini catturate dalla camera a less di 500 kb
  • trovare la posizione dei pixel dell'elemento di Listview sembra restituire il valore sbagliato
  • Caricamento dell'image sul server in Multipart insieme ai dati JSON in Android
  • Carica video da asset in HTML5 webview - Android
  • È isReleaseBuild () parte del Android Gradle DSL?
  • onPause () e onStop () in Attività
  • Esiste un modo più robusto per gestire VOLUME_CHANGED_ACTION per i tipi di stream volume_voice ?

    Modifica o qualsiasi altro modo per fare quello che richiede il titolo?

    2 Solutions collect form web for “Come ricevere gli events modificati dal volume per il tipo di stream vocale (in-call)?”

    Sto cercando di registrare un ricevitore broadcast per gestire l'evento VOLUME_CHANGED_ACTION

    Non esiste VOLUME_CHANGED_ACTION nel SDK Android.

    L'etichetta EXTRA_VOLUME_STREAM_TYPE è nascosta, quindi ho usato la string esplicita "android.media.EXTRA_VOLUME_STREAM_TYPE".

    Non esiste EXTRA_VOLUME_STREAM_TYPE nel SDK Android.

    Esiste un modo più robusto per gestire VOLUME_CHANGED_ACTION per i tipi di stream volume_voice?

    Non esiste VOLUME_CHANGED_ACTION nel SDK Android.

    Qualsiasi cosa stai cercando di eseguire è non documentato, non supportto, potrebbe non funzionare su una determinata versione di Android (passato / presente / futuro) e potrebbe non funzionare su un determinato dispositivo (in quanto i produttori possono modificare qualsiasi cosa che non sia nell' SDK). Non sarà mai "robusto", per definizione.

    La mia soluzione temporanea (e probabilmente ctriggers) è trovare l' ArrayIndexOutOfBoundsException e nel block di cattura per verificare il tipo di stream per avere il valore di Settings.System.VOLUME_SETTINGS.length .

    Questo è il migliore che ho finora. Non so se potrebbe anche catturare altri tipi di stream e anche se funziona su altre versioni Android di 2.3.3-2.3.5.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.