dafeizhu
dafeizhu
  • 发布:2022-11-03 17:21
  • 更新:2022-11-03 18:17
  • 阅读:72

请问iOS如何监听耳机状态?

分类:Native.js

本想着靠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"} ,不知道如何进行下一步,求指点迷津,万分感谢

2022-11-03 17:21 负责人:无 分享
已邀请:
DCloud_heavensoft

DCloud_heavensoft

  • chunge404

    看目前alpha版本uts已经支持ios,uni ext api也不错,大概什么时候,官方的内置组件可以迁移完整,下个月初能完整上线?

    2022-11-03 20:30

要回复问题请先登录注册