2019独角兽企业重金招聘Python工程师标准>>>

Posted on  2011年09月3日

enum { // typedef UInt32 AudioSessionPropertyID
kAudioSessionProperty_PreferredHardwareSampleRate = 'hwsr', // Float64 (get/set)
kAudioSessionProperty_PreferredHardwareIOBufferDuration = 'iobd', // Float32 (get/set)
kAudioSessionProperty_AudioCategory = 'acat', // UInt32 (get/set)
kAudioSessionProperty_AudioRoute = 'rout', // CFStringRef (get only)
kAudioSessionProperty_AudioRouteChange = 'roch', // CFDictionaryRef (property listener)
kAudioSessionProperty_CurrentHardwareSampleRate = 'chsr', // Float64 (get only)
kAudioSessionProperty_CurrentHardwareInputNumberChannels = 'chic', // UInt32 (get only)
kAudioSessionProperty_CurrentHardwareOutputNumberChannels = 'choc', // UInt32 (get only)
kAudioSessionProperty_CurrentHardwareOutputVolume = 'chov', // Float32 (get only/property listener)
kAudioSessionProperty_CurrentHardwareInputLatency = 'cilt', // Float32 (get only)
kAudioSessionProperty_CurrentHardwareOutputLatency = 'colt', // Float32 (get only)
kAudioSessionProperty_CurrentHardwareIOBufferDuration = 'chbd', // Float32 (get only)
kAudioSessionProperty_OtherAudioIsPlaying = 'othr', // UInt32 (get only)
kAudioSessionProperty_OverrideAudioRoute = 'ovrd', // UInt32 (set only)
kAudioSessionProperty_AudioInputAvailable = 'aiav', // UInt32 (get only/property listener)
kAudioSessionProperty_ServerDied = 'died', // UInt32 (property listener)
kAudioSessionProperty_OtherMixableAudioShouldDuck = 'duck', // UInt32 (get/set)
kAudioSessionProperty_OverrideCategoryMixWithOthers = 'cmix', // UInt32 (get, some set)
kAudioSessionProperty_OverrideCategoryDefaultToSpeaker = 'cspk', // UInt32 (get, some set)
kAudioSessionProperty_OverrideCategoryEnableBluetoothInput = 'cblu', // UInt32 (get, some set)
kAudioSessionProperty_InterruptionType = 'type', // UInt32 (get only)
};

//具体作用如果字面不理解可以查看AudioServices.h(相关设置值,返回值头文件中也有)

listener使用:
AudioSessionInitialize (NULL, NULL, NULL, NULL);//初始化
OSStatus state = AudioSessionAddPropertyListener(
kAudioSessionProperty_AudioRouteChange,
audioRouteChangeListenerCallback,self);
//state返回值如下
enum
{
kAudioSessionNoError = 0,
kAudioSessionNotInitialized = '!ini',
kAudioSessionAlreadyInitialized = 'init',
kAudioSessionInitializationError = 'ini?',
kAudioSessionUnsupportedPropertyError = 'pty?',
kAudioSessionBadPropertySizeError = '!siz',
kAudioSessionNotActiveError = '!act',
kAudioServicesNoHardwareError = 'nohw',
kAudioSessionNoCategorySet = '?cat',
kAudioSessionIncompatibleCategory = '!cat',
kAudioSessionUnspecifiedError = 'what'
};

//get的使用
UInt32 propertySize = sizeof(CFStringRef);
AudioSessionInitialize(NULL, NULL, NULL, NULL);
CFStringRef state = nil;
AudioSessionGetProperty(
kAudioSessionProperty_AudioRoute,
&propertySize,&state);

//set的使用
UInt32 propertySize = sizeof(UInt32);
AudioSessionInitialize(NULL, NULL, NULL, NULL);
UInt32 state = (1);
AudioSessionSetProperty(
kAudioSessionProperty_OtherMixableAudioShouldDuck,
propertySize,&state);

Posted in iPad, iPhone, Study Notes, 技巧 |  Tagged iPhone, objc, 开发 |  Leave a reply

Sep 03

检测iphone插入/拔出耳机事件

Posted on  2011年09月3日

void audioRouteChangeListenerCallback (
void *inUserData,
AudioSessionPropertyID inID,
UInt32 inDataSize,
const void *inData)
{
UInt32 propertySize = sizeof(CFStringRef);
AudioSessionInitialize(NULL, NULL, NULL, NULL);
CFStringRef state = nil;
AudioSessionGetProperty(kAudioSessionProperty_AudioRoute
,&propertySize,&state);

NSLog(@"%@",(NSString *)state);//return @"Headphone" or @"Speaker" and so on.
}
- (void)viewDidLoad {
[super viewDidLoad];

AudioSessionInitialize (NULL, NULL, NULL, NULL);
OSStatus status = AudioSessionAddPropertyListener(
kAudioSessionProperty_AudioRouteChange,
audioRouteChangeListenerCallback,self);
//if(status == 0){//ok;}
}

转载于:https://my.oschina.net/u/1049180/blog/136460

AudioSession property 详解及使用方法,包括检测是否有声音正在运行,音量更改等。...相关推荐

  1. Objective-C中的@Property详解

    Objective-C中的@Property详解 @Property (属性) class vairs 这个属性有nonatomic, strong, weak, retain, copy等等 我把它 ...

  2. linux中date使用方法,linux命令详解date使用方法(计算母亲节和父亲节日期脚本示例)...

    linux命令详解date使用方法(计算母亲节和父亲节日期脚本示例) 发布于 2016-02-07 15:58:40 | 108 次阅读 | 评论: 0 | 来源: 网友投递 LinuxLinux是一 ...

  3. PHP开发中常见的安全问题详解和解决方法

    PHP开发中常见的安全问题详解和解决方法 参考文章: (1)PHP开发中常见的安全问题详解和解决方法 (2)https://www.cnblogs.com/walblog/articles/83313 ...

  4. C语言中三个数比较大小详解——三种方法

    ​ C语言中三个数比较大小详解--三种方法 方法一:if-else法 方法二:函数法 方法三:三目运算符法 C语言中比较三个数的大小有很多方法,以下是我总结的三种方法: 首先我定义 int a = 1 ...

  5. csrf漏洞防御方案_CSRF 漏洞原理详解及防御方法

    跨站请求伪造:攻击者可以劫持其他用户进行的一些请求,利用用户身份进行恶意操作. 例如:请求http://x.com/del.php?id=1是一个删除ID为1的账号,但是只有管理员才可以操作,如果攻击 ...

  6. 计算机网络ping所有用法,ping命令详解和使用方法【详解】

    随着科技的发展,计算机的发展也非常快,如今已经进入大部分的家庭之中,成为人们日常生活中必不可少的一个部分.当计算机出现一些小问题,我们就可以通过ping命令来查看电脑出现问题的原因,从而找到解决问题的 ...

  7. findindex遍历 js_详解ES6数组方法find()、findIndex()的总结

    本文主要讲解ES6数组方法find()与findIndex(),关于JS的更多数组方法,可参考以下: 1. find() 该方法主要应用于查找第一个符合条件的数组元素,即返回通过测试(函数内判断)的数 ...

  8. 【搜集】mDNSResponder.exe进程详解和卸载方法

    安装ADOBE CS3后会出现这个进程,或者是一个叫Bonjour的软件. 下面是搜集的进程详解和卸载方法: mDNSResponder.exe 进程文件:mDNSResponder 或者 mDNSR ...

  9. GRE配置详解和路由黑洞及检测机制

    GRE配置详解和路由黑洞及检测机制 基本路由配置先省略,直接上GRE配置: 合肥: int tunnel 0/0/1 //创建隧道 ip add 192.168.13.1 24 //给隧道口ip地址, ...

  10. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

    Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...

最新文章

  1. 2020牛客多校第3场:Two Matchings[找规律+dp]
  2. MySQL的EXPLAIN的SELECT TYPE
  3. Mysql Type中的all和index区别?
  4. 2016/12/3-问鼎杯线上赛1-1-Misc
  5. Angular应用页面里appId的生成逻辑和位置
  6. 如何实现SAP UI5 Web Component React控件的加载效果
  7. sap 打印预览界面点击打印时记录打印次数_SAP打印机设置
  8. 当.NET遇到机器学习
  9. 【数据结构与算法】【算法思想】Dijkstra算法
  10. APL开发日志--2013-01-17
  11. centos7 安装mysql8
  12. 驰骋工作流引擎-自由表单
  13. 用什么软件测试电视分辨率,4k电视分辨率测试图
  14. 海思烧录工具HiTool的使用方法以及烧录uboot
  15. 408计算机及格要什么水平,2019考研计算机408难度水平?
  16. linux命令 速记表图片,linux命令速记
  17. 雪の华 雪之华——不可不玩的好游戏(繁体中文版,附攻略、下载、歌词)...
  18. windows server关闭系统自动更新
  19. android看黑白电子书软件,如何优雅解决App启动黑白屏
  20. java毕业设计瓷砖仓库管理mybatis+源码+调试部署+系统+数据库+lw

热门文章

  1. SQL Server 建库,表,约束(一)
  2. JS获取DropDownList的value值与text值
  3. vue项目解决: Invalid prop: type check failed for prop “index“问题
  4. SpringBoot使用RestTemplate 摘要认证
  5. iOS ImageView不规则图片自适应缩放
  6. magento -- 如何在magento中进行产品的批量上传
  7. 如何将驱动程序静态编译进内核
  8. mysqldump怎么用 mysqldump没反应 mysqldump语法错误 mysqldump备份 mysql恢复 source命令 采用Navicat备份与mysqldump备份的区别...
  9. 关于引用外部JS文件
  10. 078 numpy模块