在以前的iOS版本中 api 这个接口是暴露出来的 现在不知道为什么api 不支持了,方法采取和网上的大多数一样,播放一段很短的静音音频,看回调时间,接触iOS开发没多久,对OC不熟悉,直接撸一个Swift的,工具类代码 追求准确性直接上代码:

import Foundation
import AudioToolbox
class MuteDetector: NSObject {static let shared: EBMuteDetector = {let path = Bundle.main.path(forResource: "mute", ofType: "aif")let url = URL(fileURLWithPath: path!)var detector = EBMuteDetector()let status = AudioServicesCreateSystemSoundID(url as CFURL, &detector.soundID)if status == kAudioServicesNoError {AudioServicesAddSystemSoundCompletion(detector.soundID, CFRunLoopGetMain(), CFRunLoopMode.defaultMode.rawValue, completionProc, Unmanaged.passUnretained(detector).toOpaque())var yes = 1AudioServicesSetProperty(kAudioServicesPropertyIsUISound, UInt32(MemoryLayout<SystemSoundID>.size), &detector.soundID, UInt32(MemoryLayout<Bool>.size), &yes)} else {detector.soundID = .max}return detector}()static let completionProc: AudioServicesSystemSoundCompletionProc = {(soundID: SystemSoundID, p: UnsafeMutableRawPointer?) inlet elapsed = Date.timeIntervalSinceReferenceDate - shared.intervallet isMute = elapsed < 0.1shared.completion(isMute)}var completion = { (mute: Bool) in }var soundID: SystemSoundID = 1312var interval: TimeInterval = 1func detect(block: @escaping (Bool) -> ()) {interval = NSDate.timeIntervalSinceReferenceDateAudioServicesPlaySystemSound(soundID)completion = block}deinit {if (soundID != .max) {AudioServicesRemoveSystemSoundCompletion(soundID);AudioServicesDisposeSystemSoundID(soundID);}}}

mute.aif 是一个放在Bundle中无声的音频。调用方法:

var isMute = false
EBMuteDetector.shared.detect{self.isMute = $0}

代码资源下载地址:https://download.csdn.net/download/LJyLy525/12859372

iOS 如何判断静音开关是否打开相关推荐

  1. flash air for ios 静音开关

    flash air for ios 静音开关 SoundMixer.audioPlaybackMode = AudioPlaybackMode.AMBIENT; 加上这句,静音开关就有效了!

  2. ios开发 静音键设置_IOS 静音开关检测

    本文的技术目的为检测苹果手机的物理静音按键的开关状态,但其实真正的需求远没有这么复杂,cry...后面和大家分享. 先说下技术原理吧,为大家分享一个git:git地址 原理就是播放一段0.01秒左右的 ...

  3. IOS开发调用系统相机和打开闪光灯

    IOS开发调用系统相机和打开闪光灯      今天给大家分享一下如何调用iphone的拍照功能和打开闪光灯,有些代码我也不太理解,很多是在网上借鉴其他人的.IOS有两种的拍照和视频的方式:1.直接使用 ...

  4. 设置计算机关机静音,Shortcuts 捷径控制 Windows 电脑:静音开关、音量调节、待机、关机...

    在 iPhone 上通过 Shortcuts 捷径控制 Windows 电脑:静音开关.音量调节.待机.关机 演示视频 : 教程: 一.使用方法: 1.Windows 上安装一个 SSH 服务器软件并 ...

  5. ios 获取是否静音模式_iOS音量和静音按键状态获取

    项目中需要用到判断当前手机音量是否为0或者静音按键是否关闭的状态,本来以为这应该有现成的接口,但没找到,而且获取静音按键的状态还有点麻烦,所以在此记录下. 一. 获取手机系统的音量 获取音量是通过获取 ...

  6. iOS和Android手机浏览器链接打开app store或应用市场下载软件

    iOS和Android手机浏览器链接打开app store或应用市场下载软件 1.Android主流手机跳转链接 // androidId 如:com.xxx.app// oppo oppomarke ...

  7. ios如何判断键盘是否已经显示

    ios如何判断键盘是否已经显示 在群里看到有人问:ios如何判断键盘已经显示在界面上. 其实这个解决很简单: 写一个单例来管理键盘的状态. 这个单例在初始化方法init种监听2个事件,分别是 UIKe ...

  8. iOS如何判断当前网络的运营商

    2019独角兽企业重金招聘Python工程师标准>>> 在IOS上存在retain屏,经常需要在一些时刻用到高清图,有些时候也要到普通图. 在网络条件很爽的情况下,这当然不在话下.如 ...

  9. ajax 微信code获取_获取链接的参数,判断是否是微信打开,ajax获取数据

    //获取链接参数 function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "= ...

最新文章

  1. 面试再被问到 ConcurrentHashMap,把这篇文章甩给他!
  2. 深度学习技术在脑机接口中的应用
  3. png 转数组 工具_推荐8款实用在线制图工具
  4. tomcat服务器访问网址组成
  5. Java 多态、抽象类 笔记
  6. linux解决病毒系列之一,删除十字符libudev.so病毒文件
  7. 如何对抗硬件断点--- 调试寄存器
  8. 【K8S】Docker向私有仓库拉取/推送镜像报错(http: server gave HTTP response to HTTPS client)
  9. Oracle发布了Java SE支持路线图,Java 8 支持到2030年
  10. element-UI 表单校验失效处理
  11. VS2017配置opencv教程(超详细!!!)
  12. 安卓开发环境使用 Lombok
  13. “智慧城市”建设为何需要“顶层设计”
  14. stylegan2报错“undefined symbol: _ZN10tensorflow12OpDefBuilder6OutputESs”的解决方案
  15. java实现普通图片转黑白图片
  16. poi 启用保护后取消_保护模式禁用怎么解除
  17. ESP32S3系列--FLASH及PSRAM配置
  18. JavaScript手机号码格式(正则表达式验证)支持最新电信199移动198联通166
  19. r语言中popsd和sd的区别_读书笔记(R语言)
  20. ifstat网络流量监控之/proc/net/dev文件

热门文章

  1. 收敛因子和黄金正弦指引机制的蝴蝶优化算法
  2. cad化工设备绘图_化工CAD制图基础篇,管道布置图学起来
  3. 机器学习笔记 - 行列式
  4. 玩转f#的一个实例——解拼图游戏
  5. 重置IDEA,将原来的设置清除
  6. 企业微信管理客户如何管理?
  7. (转载)深入了解iOS中的OOM(低内存崩溃)
  8. 自问自答系列——商城相关
  9. 一文搞懂Spark的Task调度器(TaskScheduler)
  10. LT1961 升压型稳压器造就了兼具升压和降压能力的扁平状SEPIC