Gibt es eine Möglichkeit, die Gerätelautstärke programmgesteuert zu ändern? vielleicht mit Audio-Session?Wie programmiere ich eine iOS-Gerätelautstärke?
Antwort
Ich bin mir ziemlich sicher, dass es nicht möglich ist, die eigentliche Gerät Lautstärke zu steuern (wie dies auch ein bisschen aufdringlich sein würde) Controlling einige Medien Sie spielen eine andere Sache ist. Sie können jedoch unter MPVolumeView
: https://developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPVolumeView_Class/index.html nachsehen, um eine Ansicht zum Einstellen der Lautstärke anzuzeigen.
Die Frage ist auch hier diskutiert: How to change device Volume on iOS - not music volume
Hier gehen Sie, das hat für mich funktioniert.
#import <MediaPlayer/MediaPlayer.h>
musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
musicPlayer.volume = 1; // max volume
musicPlayer.volume = 0; // min volume (mute)
musicPlayer.volume = 0.0625; // 1 bar on the overlay volume display
Das ändert die relative Lautstärke der Medien, die Sie spielen, aber ich bin mir ziemlich sicher, dass die tatsächliche Lautstärke von 0 bis zur aktuellen Lautstärkeeinstellung des Benutzers reicht. Wenn der Benutzer also die Lautstärke auf 1/2 eingestellt hat, würde Ihre musicPlayer.volume-Einstellung von 1,0 Ihnen tatsächlich 1/2 Lautstärke geben. –
das ist veraltet von ios7 –
Blick auf diese:
import MediaPlayer
let volumeView = MPVolumeView()
if let view = volumeView.subviews.first as? UISlider{
view.value = 0.1 //---0 t0 1.0---
}
Sein für mich arbeiten
Hacky aber Werke (Swift 3):
func setVolumeTo(volume: Float) {
(MPVolumeView().subviews.filter{NSStringFromClass($0.classForCoder) == "MPVolumeSlider"}.first as? UISlider)?.setValue(volume, animated: false)
}
Vergessen Sie nicht import MediaPlayer
Das funktioniert tatsächlich! Stellen Sie nur sicher, dass Sie "MediaPlayer importieren" oben ausführen. –
Sorry ich vermisse diese Diskussion. – DrCachetes
Sieh dir das an: import MediaPlayer lassen Sie volumeView = MPVolumeView() wenn lassen Sie sehen = volumeView.views.first als? UISlider { view.value = 0.1 // --- 0 t0 1.0 --- } Es funktioniert für mich –