2010-03-29 6 views
6

Um für den Benutzer die Lautstärke zu steuern, hat meine Android-Anwendung ein Menü, bestehend aus einem Schieberegler, der Int-Werte von 0 bis 10 bietet, wenn gezogen wird. Nachdem ich einen Wert erhalten habe, muss ich die Lautstärke auf den entsprechenden Wert einstellen, der vom Benutzer gewählt wurde, und nun, das ist der Teil, den ich nicht zu implementieren weiß, und ich würde gerne darüber herausfinden.Legen Sie die Lautstärke einer Android-Anwendung

Antwort

11

Verwenden Sie die Klasse AudioManager. Im Wesentlichen geht der Code wie folgt:

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
audioManager.setStreamVolume(streamType, volume, flags); 

Das Problem ist, dass das Volumen der Vorrichtung nicht notwendigerweise von 0 bis 10 zugeordnet ist, wie Sie in Ihrem Schieber haben. Auf meinem Emulator ist es von 0 bis 7. Also, was Sie tun müssen, ist getStreamMaxVolume(...), um zu wissen, was Ihr Maximum ist, und dann berechnen Sie Ihren Wert als ein Bruchteil davon. Wenn Ihr Benutzer beispielsweise Volumen 8 von 10 wählt, entspricht das 0,8 * 7 = 5,6, was auf 6 von 7 gerundet werden sollte.

Der "Stream" bezieht sich auf Dinge wie Klingellautstärke, Benachrichtigungslautstärke , Musiklautstärke usw. Wenn Sie die Lautstärke des Klingeltons ändern möchten, müssen Sie sicherstellen, dass alle Ihre Befehle AudioManager.STREAM_RING als streamType haben.

Verwandte Themen