2016-04-27 4 views
0

ich erhalte System-Lautstärke einzustellenWie aus folgenden Code-System Volumen programmatisch in iOS

[[NSNotificationCenter defaultCenter] 
     addObserver:self 
     selector:@selector(volumeChanged:) 
     name:@"AVSystemController_SystemVolumeDidChangeNotification" 
     object:nil]; 
- (void) volumeChanged:(NSNotification *) 
{ 
    float volume = [[[notification userInfo] 
        objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] 
        floatValue]; 

    // here volume is the ..... 
} 

aber wie System oder Geräte Volumen von Xcode (Objective C) setzen

+0

Dies für Ihre Referenz http://stackoverflow.com/questions/4859402/ios-change-device-volume. Hoffe, du wirst einige hilfreiche Informationen finden. – HDT

+0

Überprüfen Sie meine Antwort hier http://stackoverflow.com/questions/36688123/how-to-set-app-volume-separately-from-system-volume-ios-device-volume-physical/36813028#36813028 –

Antwort

0

Es ist nicht möglich, programmatisch auf das Systemvolume, ohne private Methoden aufzurufen/private APIs zu verwenden.

Sie müssten _commitVolumeChange aufrufen, was eine private API ist und Ihre App definitiv ablehnen wird.

Weiterführende Literatur here.

0

Vielleicht hilft Ihnen das (wenn Sie Zugriff auf das AVPlayer-Objekt haben und die Lautstärke Ihres abspielenden Assets ändern möchten), verwende ich diesen Code zum Ändern der Lautstärke in meinem AVPlayer während der Videowiedergabe.

- (void)setVolume:(CGFloat)volumeToSet forPlayer:(AVPlayer *)avPlayer { 
    AVURLAsset *asset = (AVURLAsset *) [[avPlayer currentItem] asset]; 
    NSArray *audioTracks = [asset tracksWithMediaType:AVMediaTypeAudio]; 

    NSMutableArray *allAudioParams = [NSMutableArray array]; 
    for (AVAssetTrack *track in audioTracks) { 
     AVMutableAudioMixInputParameters *audioInputParams = [AVMutableAudioMixInputParameters audioMixInputParameters]; 
     [audioInputParams setVolume:volumeToSet atTime:kCMTimeZero]; 
     [audioInputParams setTrackID:[track trackID]]; 
     [allAudioParams addObject:audioInputParams]; 
    } 
    AVMutableAudioMix *audioZeroMix = [AVMutableAudioMix audioMix]; 
    [audioZeroMix setInputParameters:allAudioParams]; 

    [[avPlayer currentItem] setAudioMix:audioZeroMix]; 
} 

Weitere Details zu dieser Lösung hier Adjusting the volume of a playing AVPlayer

Wenn Sie Gerät ändern Lautstärke hier die möchten, diese Problemumgehung ist und in einigen iOS Versionen brach, aber funktioniert jetzt in iOS 7, iOS 8, iOS 9 (getestet). iOS 9: How to change volume programmatically without showing system sound bar popup?

Verwandte Themen