setAudioSessionActive getAudioSessionCategory availableCategories availableModes setAudioSessionCategory setAudioSessionMode
AVAudioSession
音频输出作为硬件资源,对于iOS系统来说是唯一的,那么要如何协调和各个App之间对这个稀缺的硬件持有关系呢? iOS给出的解决方案是"AVAudioSession" ,通过它可以实现对App当前上下文音频资源的控制,比如 插拔耳机、接电话、是否和其他音频数据混音等。当你遇到:
这些场景的时候,就可以考虑一下“AVAudioSession”了。
详情参考 简书技术博客。
激活 AVAudioSession
setAudioSessionActive({params},callback(ret, err))
active:
options:
ret:
{
status: true //布尔型;true||false,是否激活成功
}
err:
{
code: 0, //数字类型;错误码
msg:'' //字符串类型;错误信息
}
var AudioSession = api.require('AudioSession');
AudioSession.setAudioSessionActive(function(ret, err) {
if (ret.status) {
api.alert({msg:JSON.stringify(ret)});
} else {
api.alert({msg:JSON.stringify(err)});
}
});
iOS 系统
可提供的 1.0.0 及更高版本
获取当前 seesion 的 category
getAudioSessionCategory(callback(ret))
ret:
{
currentCategory:'' //字符串类型;当前category
}
var AudioSession = api.require('AudioSession');
AudioSession.getAudioSessionCategory(function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统
可提供的 1.0.0 及更高版本
获取当前设备支持的 category
availableCategories(callback())
{
availableCategories: //JSON数组;当前设备支持的category组成的数组
}
var AudioSession = api.require('AudioSession');
AudioSession.availableCategories(function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统
可提供的 1.0.0 及更高版本
获取当前设备支持的 modes
availableModes(callback())
{
availableModes: //JSON数组;当前设备支持的mode组成的数组
}
var AudioSession = api.require('AudioSession');
AudioSession.availableModes(function(ret) {
api.alert({msg:JSON.stringify(ret)});
});
iOS 系统
可提供的 1.0.0 及更高版本
设置 AVAudioSession 的 category
setAudioSessionCategory({params},callback(ret, err))
category:
options:
ret:
{
status: true //布尔型;true||false,是否设置成功
}
err:
{
code: 0, //数字类型;错误码
msg:'' //字符串类型;错误信息
}
var AudioSession = api.require('AudioSession');
AudioSession.setAudioSessionCategory({
category:'AVAudioSessionCategoryAmbient',
options:['AVAudioSessionCategoryOptionMixWithOthers','AVAudioSessionCategoryOptionDuckOthers','AVAudioSessionCategoryOptionAllowBluetooth']
},function(ret, err) {
if (ret.status) {
api.alert({msg:JSON.stringify(ret)});
} else {
api.alert({msg:JSON.stringify(err)});
}
});
iOS 系统
可提供的 1.0.0 及更高版本
设置 AVAudioSession 的 mode
setAudioSessionMode({params},callback(ret, err))
mode:
ret:
{
status: true //布尔型;true||false,是否设置成功
}
err:
{
code: 0, //数字类型;错误码
msg:'' //字符串类型;错误信息
}
var AudioSession = api.require('AudioSession');
AudioSession.setAudioSessionMode({
mode:'AVAudioSessionModeVoiceChat'
},function(ret, err) {
if (ret.status) {
api.alert({msg:JSON.stringify(ret)});
} else {
api.alert({msg:JSON.stringify(err)});
}
});
iOS 系统
可提供的 1.0.0 及更高版本