本想着靠native.js来实现,可编写过程遇到的问题却不知道如何解决
下边贴iOS的实现源码:
- (BOOL)isHeadSetPlugging {
AVAudioSessionRouteDescription* route = [[AVAudioSession sharedInstance] currentRoute];
for (AVAudioSessionPortDescription* desc in [route outputs]) {
if ([[desc portType] isEqualToString:AVAudioSessionPortHeadphones])
return YES;
}
return NO;
}
转写如下:
let AVAudioSession = plus.ios.importClass('AVAudioSession');
let audioManager = AVAudioSession.sharedInstance();
let currentRoute = audioManager.currentRoute();
let aa = currentRoute.plusGetAttribute('outputs');
let bb = plus.ios.invoke(currentRoute, 'outputs');
console.log(currentRoute);
console.log('aa', aa);
console.log('bb', bb);
iOS源码中,获取到AVAudioSessionRouteDescription之后,直接遍历[route outputs]能得到AVAudioSessionPortDescription项desc,再拿其中的属性值portType便可知道设备是否插着耳机
但js的实现,我这边卡在了AVAudioSessionPortDescription项获取的这一步,如上边代码执行后的aa、bb,打印出来均是{"TYPE":"JSBObject","UUID":"native_25","className":"__NSSingleObjectArrayI"} ,不知道如何进行下一步,求指点迷津,万分感谢
chunge404
看目前alpha版本uts已经支持ios,uni ext api也不错,大概什么时候,官方的内置组件可以迁移完整,下个月初能完整上线?
2022-11-03 20:30