更新记录

1.2.1(2024-06-20)

解决targetSdkVersion>=30的时候,提示没有权限获取录音文件的问题

1.2.0(2024-02-02)

  1. 通话记录中添加SIM卡信息
  2. 获取通话记录列表的方法进行录音文件匹配

1.1.2(2024-01-06)

优化部分手机拨号状态监听权限问题

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:6.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


监听通话状态,获取通话记录和录音文件插件使用说明

  • 在Uni项目中引入插件:const muCall = uni.requireNativePlugin('Mu-Call')

目录

[TOC]


muCall.init(params, callback)

初始化。

参数说明

参数名 类型 必填 说明
params Object 初始化参数
- simId int 拨号卡序号,默认-1
- recordFolder String 系统录音文件目录 针对特殊机型
- count int 通话记录最多查询次数,默认10
- saveFlag boolean 是否保存录音临时文件,默认false
- recordFolderTemp String 录音临时保存目录
callback Function 初始化回调

示例

    var recordFolderTemp = plus.io.convertLocalFileSystemURL("_www");
    muCall.init({
        simId: -1, // -1默认SIM卡拨号, 0卡1拨号, 1卡2拨号
        count: 10, // 通话记录最多查询次数
        saveFlag: true, // 是否保存录音临时文件
        recordFolderTemp // 录音临时保存目录
    }, res => {
        uni.showToast({
            title: res.message,
            icon: 'none'
        })
    })

muCall.setSimId(simId)

设置拨号SIM卡(0卡1, 1卡2)。

参数说明

参数名 类型 必填 说明
simId int 拨号卡序号

示例

    muCall.setSimId(1);

muCall.setRecordFolder(recordFolder)

设置系统录音文件目录(主流手机无需设置,目前已适配小米、华为、OPPO、VIVO、魅族、酷我等等)。

参数说明

参数名 类型 必填 说明
recordFolder String 系统录音文件目录 针对特殊机型

示例

    muCall.setRecordFolder('系统录音文件目录');

muCall.setSaveFlag(saveFlog)

是否保存录音临时文件。

参数说明

参数名 类型 必填 说明
saveFlag boolean 是否保存录音临时文件

示例

    muCall.setSaveFlag(true);

muCall.setRecordFolderTemp(recordFolderTemp)

设置录音临时保存目录。

参数说明

参数名 类型 必填 说明
recordFolderTemp String 录音临时保存目录

示例

    var recordFolderTemp = plus.io.convertLocalFileSystemURL("_www");
    muCall.setRecordFolderTemp(recordFolderTemp);

muCall.requestIgnoreBattery()

请求加入电池优化。

示例

    muCall.requestIgnoreBattery();

muCall.startForegroundService()

开启前台服务。

示例

    muCall.startForegroundService();

muCall.stopForegroundService()

关闭前台服务。

示例

    muCall.stopForegroundService();

muCall.startPermissionSetting()

打开权限设置页面。

示例

    muCall.startPermissionSetting();

muCall.checkAutoRecordEnableStatus()

检测自动录音是否开启:1开启, 0未开启, -1检测失败。

示例

    let status = muCall.checkAutoRecordEnableStatus();
    console.log(status)

muCall.startSystemRecordSetting()

打开自动录音设置界面。

示例

    let success = muCall.startSystemRecordSetting();
    if(!success) {
        console.log("请前往系统拨号打开通话录音")
    }

muCall.hasSimCard(simId)

判断SIM卡是否存在:0表示卡1,1表示卡2。

参数说明

参数名 类型 必填 说明
simId int 拨号卡序号

示例

    if(muCall.hasSimCard(0)) {
        console.log('SIM卡1存在')
    } else {
        console.log('SIM卡1不存在')
    }

muCall.getSimInfo(simId)

获取SIM卡信息(注意:需要开启手机状态信息权限,小米、红米手机需要手动进入权限设置页面将手机状态权限设置为始终允许)。

参数说明

参数名 类型 必填 说明
simId int 拨号卡序号

示例

    let simInfo = muCall.getSimInfo(0)
    console.log("本机号码:" + simInfo.number)

muCall.registerCallListener(callback)

注册通话监听。

响应结果说明

字段 类型 说明
code int 响应码:200状态, 0获取通话记录失败, 1获取通话记录成功
status int 通话状态:0通话结束, 1响铃, 2拨号/接通
message String 响应消息
data Object 通话记录
- number String 被叫号码
- talkTime long 拨号时间戳
- lastModified long 通话结束时间戳
- duration long 通话时间
- type int 通话类型
- location String 被叫号码归属地
- simInfo Object 主叫SIM卡信息
-- number String 主叫号码
-- operatorName String 主叫号码运营商
-- iccId String 主叫SIM卡的iccId
-- simSlotIndex int 主叫simId
recordFile Object 系统录音文件
- name String 文件名称
- size long 文件大小
- path String 文件路径
- lastModified long 文件保存时间戳
tempFile String 临时录音文件路径

示例

    muCall.registerCallListener(res => {
        let {
            code, // 响应码(200状态, 0获取通话记录失败, 1获取通话记录成功)
            status, // 通话状态(0通话结束, 1响铃, 2拨号/接通)
            message, // 响应消息
            data, // 通话记录
            recordFile, // 系统录音文件
            tempFile // 临时录音文件
        } = res
    })

muCall.makePhoneCall(phoneNumber)

拨号。

参数说明

参数名 类型 必填 说明
phoneNumber String 被叫号码

示例

    muCall.makePhoneCall("手机号码")

muCall.getRecordFileList()

获取系统录音文件列表。

示例

    let recordFileList = muCall.getRecordFileList()
    console.log(recordFileList)

muCall.getLatestRecordFile()

获取最新一条系统录音文件。

示例

    let recordFile = muCall.getLatestRecordFile()
    console.log(recordFile)

muCall.getCallLogList()

获取通话记录。

示例

    let callLogList = muCall.getCallLogList()
    console.log(callLogList)

muCall.uploadFile()

文件上传。

示例

    muCall.uploadFile({
        url: "上传服务地址",
        filePath: "录音文件本地路径",
        name: "文件二进制字段, 默认file",
        header: {
            // 请求头
        },
        formData: {
            // 请求表单数据
        },
        timeout: 60000 // 响应超时时间, 单位ms
    }, res => {
        let {
            code, // 响应码
            message, // 响应消息
            data // 接口响应数据
        } = res
        console.log(res)
    })

muCall.endCall()

挂断电话。

示例

    muPhoneCall.endCall()

End

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> <uses-permission android:name="android.permission.READ_CALL_LOG" /> <uses-permission android:name="android.permission.WRITE_CALL_LOG" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问