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];
        }

相关推荐

  1. iOS 音量拍照拍照

    2024-05-10 23:22:04       26 阅读
  2. react native 相机拍照

    2024-05-10 23:22:04       37 阅读
  3. 音频筑基:算法分析

    2024-05-10 23:22:04       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-10 23:22:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-10 23:22:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-10 23:22:04       87 阅读
  4. Python语言-面向对象

    2024-05-10 23:22:04       96 阅读

热门阅读

  1. ruoyi-vue-pro 使用记录(3)

    2024-05-10 23:22:04       25 阅读
  2. [Android]单元测试和模块测试

    2024-05-10 23:22:04       24 阅读
  3. 修改页签标题 + 页签图表

    2024-05-10 23:22:04       31 阅读
  4. Vue 过渡

    2024-05-10 23:22:04       27 阅读
  5. 2024.5.10

    2024.5.10

    2024-05-10 23:22:04      24 阅读
  6. 基于POSIX标准库的读者-写者问题的简单实现

    2024-05-10 23:22:04       31 阅读
  7. 蓝桥杯 算法提高 ADV-1163 网格贪吃蛇 python AC

    2024-05-10 23:22:04       36 阅读
  8. 哪里可以获得正规的行政区底图?

    2024-05-10 23:22:04       32 阅读