美文网首页
iPhone 音量键拍照 自拍杆拍照功能

iPhone 音量键拍照 自拍杆拍照功能

作者: little_ma | 来源:发表于2018-07-24 22:09 被阅读327次

本文采用通知方式控制音量键的执行:

优点:
可以监听到音量键的每次调节,即使音量调整到最大或者最小依然能够收到通知。手机静音条件下也能收到此通知。

- (void)addCameraSystemVolumeObserver:(void(^)(void))block
{
    [self hiddenVolumeView];
    NSError *error;
    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    [audioSession setActive:YES error:&error];
    // 记住当前的音量,防止拍照影响APP的音量
    CGFloat currentVol = audioSession.outputVolume;
    
    __weak typeof(self) weakSelf = self;
    [[NSNotificationCenter defaultCenter] addObserverForName:@"AVSystemController_SystemVolumeDidChangeNotification"
                                                      object:nil
                                                       queue:nil
                                                  usingBlock:^(NSNotification * _Nonnull note)
    {
        dispatch_async(dispatch_get_main_queue(), ^{
            
            NSString *changeReason = [note.userInfo valueForKey:@"AVSystemController_AudioVolumeChangeReasonNotificationParameter"];
            // 判断监听的消息是否为我们需要的调整音量的操作
            if ([changeReason isEqualToString:@"ExplicitVolumeChange"]) {
                
                float volumeValue = [[note.userInfo valueForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue];
                // 判断是否为恢复操作
                if (volumeValue != currentVol) {
                    if (block) {
                        block();
                    }
                    
                    [weakSelf returnToOriginVolume:currentVol];
                }
            }
        });
    }];
}


针对AVSystemController_SystemVolumeDidChangeNotification通知的方式所遇到的问题及解决方案:
1)、该消息除了监听音量键之外,应用切换前后台也会发送该消息,所以,还需要判断消息的userInfo的字段AVSystemController_AudioVolumeChangeReasonNotificationParameter,确定发送消息的理由,value值为ExplicitVolumeChange就是我们所需要的。

NSNotification === {
    "AVSystemController_AudioCategoryNotificationParameter" = "Audio/Video";
    "AVSystemController_AudioVolumeChangeReasonNotificationParameter" = RouteChange;
    "AVSystemController_AudioVolumeNotificationParameter" = "0.3125";
    "AVSystemController_UserVolumeAboveEUVolumeLimitNotificationParameter" = 0;
}
NSNotification === {
    "AVSystemController_AudioCategoryNotificationParameter" = "Audio/Video";
    "AVSystemController_AudioVolumeChangeReasonNotificationParameter" = ExplicitVolumeChange;
    "AVSystemController_AudioVolumeNotificationParameter" = "0.375";
    "AVSystemController_UserVolumeAboveEUVolumeLimitNotificationParameter" = 0;
}

2)、如何解决音量键拍照会改变系统的音量问题:
开始监听时,获取当前的音量,并记下;在执行音量拍照后恢复原来的音量。当然恢复原来的音量,又会收到对应的调节音量的通知,注意排除掉本次的回调。

相关文章

  • iPhone 音量键拍照 自拍杆拍照功能

    本文采用通知方式控制音量键的执行: 优点:可以监听到音量键的每次调节,即使音量调整到最大或者最小依然能够收到通知。...

  • 秀美外观让人沉醉,创意设计出类拔萃——MIPOW麦拍宝自拍杆体

    随着手机拍照功能的日益强大,做为辅助拍照的自拍杆火了起来,看似简单的设计,却因为加长了拍摄距离、加高了拍摄角度,通...

  • iOS-蓝牙拍照

    需求:使用蓝牙快门遥控器控制拍照 APP 进行拍照。 解决思路 苹果手机系统相机可以通过按音量键进行拍照,目前市面...

  • iOS监听音量按键(长按 短按)

    啦啦啦,先给大家拜个晚年,有时间把之前优化的小功能总结下,这个demo是仿照Snapchat的短按音量键拍照...

  • 二凡今日分享|自拍照

    今天二凡来跟大家唠一唠关于—自拍这件事儿。 现在手机的拍照功能是越发强大,加上各种拍照app,自拍不再是烦恼,自拍...

  • 手残党也能p图

    我是一个普通的女孩子,喜欢美美的图 ,喜欢拍照,苦于没人帮忙拍照,于是在家玩自拍。 这里利用了带有三脚架的自拍杆,...

  • 关于新时代的手机用途

    新时代拍照长眼睛的手机 新时代,手机人人都能拍照,而且拍得非常清晰 ,手机拍照的功能很多人觉得只是自拍,错了,...

  • 摄影课第二次课20210413

    一、人像拍照 拍照姿势: 一个手拿手机,手指按音量键拍 另一只手指挥,要快速捕捉。 脚要一前一后, 外景拍照: 道...

  • 114:又一个自拍达人

    我喜欢拍照,实在没人拍就自拍,iPhone的自带相机自拍是不敢的,只能用美颜相机自拍。今天整理手机,据然发现儿子也...

  • 【笔记】手机摄影17:怎样自拍好看又不落俗套

    1、手机相机的自拍 闭上眼睛自拍、拍投在树上或岩石上的影子、通过镜子自拍拍出比较有特色的自拍照 2、使用自拍杆的自...

网友评论

      本文标题:iPhone 音量键拍照 自拍杆拍照功能

      本文链接:https://www.haomeiwen.com/subject/gdwymftx.html