2012-01-23 9 views
6

Sto tentando di registrare un destinatario di trasmissione per gestire l'evento VOLUME_CHANGED_ACTION, solo per il tipo di flusso volume_voice (che vedo empiricamente come indice 0 in Settings.System.VOLUME_SETTINGS).Come ricevere gli eventi modificati dal volume per il tipo di flusso vocale (in chiamata)?

L'etichetta EXTRA_VOLUME_STREAM_TYPE è nascosta, quindi ho utilizzato la stringa esplicita "android.media.EXTRA_VOLUME_STREAM_TYPE". Tutto ha funzionato bene su Android 2.3.4 (ha ottenuto il valore 0 per volume_voice come previsto), ma su 2.3.5 il valore che questo extra detiene è 10, che dà uno ArrayIndexOutOfBoundsException su Settings.System.VOLUME_SETTINGS. Inoltre, vedo che volume_voice è ancora indice 0 in Settings.System.VOLUME_SETTINGS.

Esiste un modo più efficace per gestire i tipi di flusso VOLUME_CHANGED_ACTION per volume_voice?

Modifica O altro modo per fare ciò che richiede il titolo?

risposta

2

La mia soluzione temporanea (e probabilmente negativa) consiste nel prendere lo ArrayIndexOutOfBoundsException e nel blocco catch per verificare il tipo di flusso in modo che abbia il valore di Settings.System.VOLUME_SETTINGS.length.

Questo è il migliore che ho finora. Non so se potrebbe prendere altri tipi di stream e anche se funzionerà su altre versioni di Android rispetto alla 2.3.3-2.3.5.

8

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

There is no VOLUME_CHANGED_ACTION in the Android SDK.

L'EXTRA_VOLUME_STREAM_TYPE etichetta è nascosta, quindi ho usato le esplicite stringa "android.media .EXTRA_VOLUME_STREAM_TYPE ".

Non c'è EXTRA_VOLUME_STREAM_TYPE nel SDK di Android.

Esiste un modo più efficace per gestire VOLUME_CHANGED_ACTION per i tipi di flusso volume_voice?

Non c'è VOLUME_CHANGED_ACTION nell'SDK di Android.

Qualsiasi cosa si stia tentando di fare è non documentata, non supportata, potrebbe non funzionare su alcuna versione di Android (passato/presente/futuro), e potrebbe non funzionare su un dato dispositivo (poiché i produttori possono cambiare tutto ciò che non è in l'SDK). Non sarà mai "robusto", per definizione.

Problemi correlati