2012-02-11 21 views
9

Sono in procinto di sviluppare un'app per Android.Android SDK. AudioManager. setStreamVolume valore int max

sono stato in grado di impostare con successo il volume dell'altoparlante tramite:

AudioManager audioManager = (Audiomanager)getSystemService(Context.AUDIO_SERVICE); 

audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, sb2value, 0); 

La domanda è: qual è il valore massimo int che "sb2value" può essere?

FYI, "sb2value" è un valore di un cursore. Mentre l'utente scorre, il volume audio viene modificato.

Consentire che il valore del cursore passi da 0 a 100. È possibile utilizzare 100 come valore del secondo argomento o il limite inferiore, ad esempio 20?

Grazie,

P.S. La maggior parte delle mie domande sono le stesse perché sono nuovo, capisco che ogni domanda ha bisogno di un nuovo post e ho molti problemi per un programma semplice.

risposta

15

Per ottenere il volume massimo è possibile impostare sb2value:

sb2value = audioManager.getStreamMaxVolume(audioManager.STREAM_MUSIC); 
+1

Questo è quello che ho fatto. Voglio che il volume abbia la possibilità di variare tra 0 e 100. Ho mantenuto la mia variabile sb2value. Creo una seconda variabile e ottengo il numero intero massimo consentito del volume utilizzando la funzione, dividerlo per 100 (il valore massimo desiderato) e quindi multiplo per il valore corrente al quale è sb2value. Ciò mi consente di variare virtualmente il volume di qualsiasi telefono da min a max con incrementi intermedi. –

+0

Ma non riesco a ricordare se INT può contenere numeri decimali. –

+0

Casting, da C++ ... sb2value è già un int. Intendevo dire che la risposta risultante potrebbe finire come un decimale. se sb2value = 100, 10 (StreamMax)/100 = 0,1. Va bene, però. –

3

Invece di difficile codifica il valore massimo del cursore (o SeekBar se si utilizza tale), impostare l'attributo Max per audioManager.getStreamMaxVolume(audioManager.STREAM_MUSIC) questo funzionerà meglio perché diversi dispositivi possono avere limiti di volume diversi.

Per quanto riguarda il limite effettivo, mi immagino che non è al di sopra 10.