From 3e8437ae559487362fae3525beb79c534c213a51 Mon Sep 17 00:00:00 2001 From: 单军华 Date: Thu, 12 Jul 2018 13:44:34 +0800 Subject: [PATCH] bug修复和功能优化 --- screendisplay/Pods/ZFPlayer/ZFPlayer/Classes/Core/ZFPlayerNotification.m | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 112 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/ZFPlayer/ZFPlayer/Classes/Core/ZFPlayerNotification.m b/screendisplay/Pods/ZFPlayer/ZFPlayer/Classes/Core/ZFPlayerNotification.m new file mode 100755 index 0000000..a7d6836 --- /dev/null +++ b/screendisplay/Pods/ZFPlayer/ZFPlayer/Classes/Core/ZFPlayerNotification.m @@ -0,0 +1,112 @@ +// +// ZFPlayerNotification.m +// ZFPlayer +// +// Copyright (c) 2016��� ��������� ( http://github.com/renzifeng ) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "ZFPlayerNotification.h" +#import <AVFoundation/AVFoundation.h> +#import <MediaPlayer/MPMusicPlayerController.h> + +@interface ZFPlayerNotification () + +@property (nonatomic, assign) ZFPlayerBackgroundState backgroundState; + +@end + +@implementation ZFPlayerNotification + +- (instancetype)init { + self = [super init]; + if (self) { + + } + return self; +} + + +- (void)addNotification { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(audioSessionRouteChangeNotification:) + name:AVAudioSessionRouteChangeNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(applicationWillResignActiveNotification) + name:UIApplicationWillResignActiveNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(applicationDidBecomeActiveNotification) + name:UIApplicationDidBecomeActiveNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(volumeDidChangeNotification:) + name:@"AVSystemController_SystemVolumeDidChangeNotification" + object:nil]; +} + +- (void)removeNotification { + [[NSNotificationCenter defaultCenter] removeObserver:self name:AVAudioSessionRouteChangeNotification object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillResignActiveNotification object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil]; +} + +- (void)dealloc { + [self removeNotification]; +} + +- (void)audioSessionRouteChangeNotification:(NSNotification*)notifi { + dispatch_async(dispatch_get_main_queue(), ^{ + NSDictionary *interuptionDict = notifi.userInfo; + NSInteger routeChangeReason = [[interuptionDict valueForKey:AVAudioSessionRouteChangeReasonKey] integerValue]; + switch (routeChangeReason) { + case AVAudioSessionRouteChangeReasonNewDeviceAvailable: { + if (self.newDeviceAvailable) self.newDeviceAvailable(self); + } + break; + case AVAudioSessionRouteChangeReasonOldDeviceUnavailable: { + if (self.oldDeviceUnavailable) self.oldDeviceUnavailable(self); + } + break; + case AVAudioSessionRouteChangeReasonCategoryChange: { + if (self.categoryChange) self.categoryChange(self); + } + break; + } + }); +} + +- (void)volumeDidChangeNotification:(NSNotification *)notification { + float volume = [[[notification userInfo] objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue]; + if (self.volumeChanged) self.volumeChanged(volume); +} + +- (void)applicationWillResignActiveNotification { + self.backgroundState = ZFPlayerBackgroundStateBackground; + if (_willResignActive) _willResignActive(self); +} + +- (void)applicationDidBecomeActiveNotification { + self.backgroundState = ZFPlayerBackgroundStateForeground; + if (_didBecomeActive) _didBecomeActive(self); +} + +@end -- Gitblit v1.8.0