iOS 音量键拍照(延时拍照)

写在前面
  • 下面有两种方法可以实现,一种简单,一种复杂,简单的方法曾经遇到过无法实现的问题,目前不确定为什么。

  • 这是复杂实现的demo,使用很简单,就不做文字解释了

一. 思路
  • 首先需要监听音量键的点击,然后对此进行处理,这里是采用通知的方式,获得用户点击的操作,然后在通知方法里面进行拍照的处理
  • 这里还有一个问题,就是按音量键时,会弹出音量变化的提示框,我们需要使用自定义的弹出框来达到预期的效果
  • 延时拍照需要在监听到音量键被按下时,加入延时代码
二. 简单方法代码
  • dealloc方法

  • 需要注意

    • 注销监听

    • 取消响应

      • (void)dealloc{

    //在离开页面时记得注销监听,并且取消响应

    \[NSNotificationCenter defaultCenter removeObserver:self name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];

    //取消相应

    \[UIApplication sharedApplication endReceivingRemoteControlEvents];

    }

  • 设置音量键的监听

  • 需要注意

    • 注册监听

    • 打开响应

    • 添加自定义的响应view

      /**

      * 设置音量键的监听

      */

      • (void)setVolumeEvent{

    //注册监听音量键的点按

    \[NSNotificationCenter defaultCenter addObserver:self selector:@selector(volumeClicked:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];

    //仅仅监听是不起作用的,因为@"AVSystemController_SystemVolumeDidChangeNotification"需要对它进行响应,所以要在监听后加下面这行代码

    \[UIApplication sharedApplication beginReceivingRemoteControlEvents];

    //使用自定义的提示框来代替系统的提示框,这里要注意

    //1. 需要把提示框放到屏幕外面

    //2. 需要import MediaPlayer.framework 才能使用MPVolumeView

    MPVolumeView *volumeView = \[MPVolumeView allocinitWithFrame:CGRectMake(-20, -20, 10, 10)];

    //这里必须设置hidden为NO,否则系统的还是会显示的

    volumeView.hidden = NO;

    self.view addSubview:volumeView;

    }

  • 监听方法

  • 需要注意

    • 在此加入拍照的代码

    • 延时在这里处理,只需要加入一行代码即可

      /**

      * 音量键监听响应方法

      */

      • (void)volumeClicked:(NSNotification *)noti{
        //在这里我们就可以实现对音量键进行监听,完成响应的操作。noti中也有一些相关的信息可以看看
        //延时拍照的重点在下面这一行代码,括号里面是延时的时间参数
        sleep(3);
        self stillImage:nil;
        }
相关推荐
Mininglamp_27185 小时前
Cider量化配置与性能调优:在M系列Mac上压榨Mano-P的每一点推理性能
macos
xuefuhe7 小时前
MacOS EAGAIN无法打开terminal
macos
传奇开心果编程1 天前
【SwiftUI入门练中学】第7课 动画与手势:让界面更灵动
学习·macos·ui·ios·swiftui·swift
知潮网1 天前
发售刚十天,9999 元的 iPhone 18 Pro 解锁就重启
ios·iphone
2501_916007471 天前
苹果应用商店App Store上架费用标准及原因解析
android·ios·小程序·https·uni-app·iphone·webview
the3clipse1 天前
MacOS、Linux 与 Windows 视频编解码对比:AV1、HEVC、ProRes 与硬件加速优劣势
linux·windows·macos·hevc·av1·视频解码·硬件解码
传奇开心果编程2 天前
【SwiftUI娓娓道来】第3课:让界面活起来——交互与动画指南
学习·macos·ui·ios·swiftui·swift
可乐鸡翅yeah_2 天前
新手梳理:M3U8 线上问题,哪些是前端锅,哪些是后端锅
前端·ios·音视频·实时音视频·m3u8·音视频在线播放
朋友圈自动点赞工具2 天前
Gmail 委托邮箱在手机上关不掉
macos·智能手机·cocoa·硬件评测
小黄人软件2 天前
AndroidStudio老项目 macOS运行BlueTooth蓝牙串口助手(Android+Studio源码).rar
android·macos