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 alloc\]initWithFrame:CGRectMake(-20, -20, 10, 10)\]; //这里必须设置hidden为NO,否则系统的还是会显示的 volumeView.hidden = NO; \[self.view addSubview:volumeView\]; }

  • 需要注意

    • 在此加入拍照的代码

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

      /**

      * 音量键监听响应方法

      */

      • (void)volumeClicked:(NSNotification *)noti{
        //在这里我们就可以实现对音量键进行监听,完成响应的操作。noti中也有一些相关的信息可以看看
        //延时拍照的重点在下面这一行代码,括号里面是延时的时间参数
        sleep(3);

        self stillImage:nil\]; }

相关推荐
Digitally2 小时前
如何将真我(realme)手机数据传输至 iPhone
ios·智能手机·iphone
Sephiroth.Ma6 小时前
Mac 提示“Docker 已损坏,无法打开”?我这样排查后 10 分钟修好
macos·docker·容器
量子炒饭大师6 小时前
【OpenClaw修炼宝典】—— 【macOS安装篇】想玩《爪子船长》复刻版却卡在安装?OpenClaw 从零环境搭建与编译全攻略 (小白避坑指南)
macos·openclaw·小龙虾·龙虾
JFSJHFZJ6 小时前
解密iPhone核心技术,读懂苹果的硬实力
ios·cocoa·iphone
不才小强7 小时前
macOS 屏幕录制开发完全指南:ScreenCaptureKit与音频采集实战
macos·音视频
JXSJHF8 小时前
iPhone隐藏功能大盘点,免费好用不占内存
ios·iphone
ShiLuoHeroKing17 小时前
Mole:面向专业用户的Mac系统清理开源方案
macos
ZZH_AI项目交付1 天前
为什么很多复杂跳转,最后都得先回首页?
flutter·ios
vx-bot5556661 天前
企业微信ipad协议在客户画像构建中的应用实践
ios·企业微信·ipad
2501_916008891 天前
2026 iOS 证书管理,告别钥匙串依赖,构建可复制的签名环境
android·ios·小程序·https·uni-app·iphone·webview