Skip to content

Commit

Permalink
调整音量
Browse files Browse the repository at this point in the history
  • Loading branch information
changsanjiang committed Dec 21, 2017
1 parent b9470c5 commit d3958a9
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 40 deletions.
19 changes: 9 additions & 10 deletions SJVideoPlayer/Player/SJVideoPlayer.m
Original file line number Diff line number Diff line change
Expand Up @@ -792,7 +792,7 @@ - (void)gesturesHandleWithTargetView:(UIView *)targetView {
}
break;
case SJPanLocation_Right: {
CGFloat value = translate.y * 0.012;
CGFloat value = translate.y * 0.015;
self.volBrigControl.volume -= value;
}
break;
Expand Down Expand Up @@ -1103,6 +1103,7 @@ - (NSURL *)assetURL {
}

- (void)setAsset:(SJVideoPlayerAssetCarrier *)asset {
[self stop];
objc_setAssociatedObject(self, @selector(asset), asset, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
_presentView.asset = asset;
_controlView.asset = asset;
Expand Down Expand Up @@ -1401,12 +1402,6 @@ - (AVLayerVideoGravity)videoGravity {
return objc_getAssociatedObject(self, _cmd);
}

- (void)_cleanSetting {
[self.asset cancelPreviewImagesGeneration];
self.asset = nil;
self.rate = 1;
}

- (void)setRate:(float)rate {
if ( self.rate == rate ) return;
objc_setAssociatedObject(self, @selector(rate), @(rate), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
Expand Down Expand Up @@ -1464,12 +1459,12 @@ - (BOOL)pause {
}

- (void)stop {
[self _pause];
[self _cleanSetting];

_sjAnima(^{
[self _unknownState];
});
if ( !self.asset ) return;
[self _pause];
if ( self.generatePreviewImages && !self.asset.hasBeenGeneratedPreviewImages ) [self.asset cancelPreviewImagesGeneration];
}

- (void)jumpedToTime:(NSTimeInterval)time completionHandler:(void (^ __nullable)(BOOL finished))completionHandler {
Expand Down Expand Up @@ -1513,6 +1508,10 @@ - (SJPrompt *)prompt {
SJPrompt *prompt = objc_getAssociatedObject(self, _cmd);
if ( prompt ) return prompt;
prompt = [SJPrompt promptWithPresentView:self.presentView];
prompt.update(^(SJPromptConfig * _Nonnull config) {
config.cornerRadius = 4;
config.font = [UIFont systemFontOfSize:12];
});
objc_setAssociatedObject(self, _cmd, prompt, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
return prompt;
}
Expand Down
43 changes: 13 additions & 30 deletions SJVideoPlayer/VolBrigControl/SJVolBrigControl.m
Original file line number Diff line number Diff line change
Expand Up @@ -7,43 +7,37 @@
//

#import "SJVolBrigControl.h"
#import <MediaPlayer/MPVolumeView.h>
#import "SJVideoPlayerTipsView.h"
#import "SJVideoPlayerResources.h"
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MPMusicPlayerController.h>

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"


@interface SJVolBrigControl ()

@property (nonatomic, strong, readwrite) SJVideoPlayerTipsView *brightnessView;
@property (nonatomic, strong, readonly) UISlider *systemVolume;

@end

@implementation SJVolBrigControl
@synthesize systemVolume = _systemVolume;
@synthesize volume = _volume;

- (instancetype)init {
self = [super init];
if ( !self ) return nil;

[self systemVolume];
[self brightnessView];

[[AVAudioSession sharedInstance] addObserver:self forKeyPath:@"outputVolume" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:(void *)[AVAudioSession sharedInstance]];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeDidChange) name:MPMusicPlayerControllerVolumeDidChangeNotification object:nil];
return self;
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
if( context == (__bridge void *)[AVAudioSession sharedInstance] ){
float newValue = [[change objectForKey:@"new"] floatValue];
if ( _volumeChanged ) _volumeChanged(newValue);
}
- (void)volumeDidChange {
if ( _volumeChanged ) _volumeChanged([MPMusicPlayerController applicationMusicPlayer].volume);
}

- (void)dealloc {
[[AVAudioSession sharedInstance] removeObserver:self forKeyPath:@"outputVolume"];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMusicPlayerControllerVolumeDidChangeNotification object:nil];
}

- (SJVideoPlayerTipsView *)brightnessView {
Expand All @@ -56,23 +50,11 @@ - (SJVideoPlayerTipsView *)brightnessView {
return _brightnessView;
}

- (UISlider *)systemVolume {
if ( _systemVolume ) return _systemVolume;
MPVolumeView *volumeView = [[MPVolumeView alloc] init];
for (UIView *view in [volumeView subviews]){
// [[UIApplication sharedApplication].keyWindow addSubview:volumeView]; // 隐藏系统volume
// volumeView.frame = CGRectMake(-1000, -100, 100, 100);
if ([view.class.description isEqualToString:@"MPVolumeSlider"]){
_systemVolume = (UISlider *)view;
break;
}
}
return _systemVolume;
}

- (void)setVolume:(float)volume {
if ( isnan(volume) || volume < 0 ) volume = 0;
else if ( volume > 1 ) volume = 1;
_volume = volume;
_systemVolume.value = volume;
[[MPMusicPlayerController applicationMusicPlayer] setVolume:volume];
}

- (void)setBrightness:(float)brightness {
Expand All @@ -89,3 +71,4 @@ - (float)brightness {
}

@end
#pragma clang diagnostic pop
Binary file not shown.

0 comments on commit d3958a9

Please sign in to comment.