macOS下Qt调用OC封装接口获取麦克风是否授权

最近做Qt跨平台项目,实现im语音功能,用QAudioRecorder类去实现,windows上还好说。但到了mac就不容易了,macOS系统自10.14之后需要对麦克风、摄像头等进行授权才能使用,代码调用时需要去判断是否授权。

简单 的几步搞定:

第一步:在用到oc 代码的项目文件(.pro)中加入以下代码:

macx: LIBS +=  -framework Foundation
macx: LIBS +=  -framework AVFoundation
macx: QMAKE_CXXFLAGS +=  -x objective-c++
macx: OBJECTIVE_SOURCES += getMicrophone.mm      //oc代码文件,功能实现文件
HEADERS += \
getMicrophone.h \             //接口声明文件

注意:getMicrophone.mm不能加在

SOURCES += \

下,否则编译是会报错的,因为.mm是oc的源文件。

第二步:定义接口;getMicrophone.h 内容如下:

#ifndef GETMICROPHONE_H
#define GETMICROPHONE_
typedef void(*comannHander)(bool granted);
int isMicrophoneAuthorization(comannHander comandhander);
#endif // GETMICROPHONE_H

第三步:实现接口,在getMicrophone.mm文件中:

int isMicrophoneAuthorization(comannHander comandhander)
{
    qDebug()<<"isMicrophoneAuthorization--start";
    int flag = [PrivacyAuthorizer authorMicphone];
    if(flag == 3)
    {
        [PrivacyAuthorizer requestAuthorMicphone:^(BOOL granted) {
                comandhander(granted);
            }];
    }
    qDebug()<<"isMicrophoneAuthorization--flag--"<<flag;

    return flag;

}

注意:.mm文件中是可以同时使用C++和OC的,PrivacyAuthorizer是我自己封装的oc的类

另外由于授权判断是异步返回的,因此设置了全局回调函数。具体参考代码。

代码链接:https://download.csdn.net/download/engui_1/19762408

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值