更新记录

1.0.7(2024-01-06)

修改无法获取到通话录音文件的问题

1.0.6(2023-08-09)

增加音频文件过滤设置函数setFiltration

1.0.5(2023-04-21)

播放逻辑优化,解决有时会出现暂停失败的bug

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.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原生插件配置”->”云端插件“列表中删除该插件重新选择


获取本地音频文件信息安卓原生插件

  • 支持Android平台使用

    插件支持获取本地音频文件名称、文件大小、文件路径、音频时间等信息
  • 函数说明

    序号 函数名称 函数说明
    1 addCallback(callback) 添加回调函数监听,所有结果都使用该回调函数返回
    2 setFiltration(String json) 设置文件过滤,参数说明详见下方
    3 getAudioFiles() 获取音频文件
    4 play(String path) 播放,参数为音频文件路径
    5 pause() 暂停
    6 playAfterPause() 播放,调用暂停后使用该函数从暂停位置开始播放
    7 stop() 停止
    8 start() 开始,调用暂停后可使用该函数从暂停位置开始播放
    9 getCurrentPosition() 获得当前播放的时间
    10 getDuration() 获得音频总时间
    11 seekTo(int msec) 设置播放进度,例如拖动播放进度条,参数为拖动时进度条改变的progress
    12 setPlaySpeed(float speed) 设置倍速播放
    13 isPlaying(callback) 是否正在播放,回调函数返回true/false
  • addCallback(callback)函数参数说明

    以调用getAudioFiles()函数为例,回调函数结果示例如下:
    {
        "code":0,
        "message":"获取数据成功",
        "data":[
            {
                "name":"荣耀",
                "author":"王晓天",
                "album":"华为荣耀主题曲",
                "album_id":"1",
                "duration":270188,
                "path":"\/hw_product\/region_comm\/china\/media\/Pre-loaded\/Music\/Honor.mp3",
                "size":11202577,
                "type":"mp3"
            },
            {
                "name":"20230106_103938",
                "author":"<unknown>",
                "album":"Sounds",
                "album_id":"3",
                "duration":20843,
                "path":"\/storage\/emulated\/0\/Sounds\/20230106_103938.m4a",
                "size":394736,
                "type":"m4a"
            }
        ]
    }
  • setFiltration(String json)函数说明

    该函数为设置文件过滤条件的函数,json参数格式示例如下:
    {
    minSize: 0,//文件最低大小,默认为0,即返回所有大小的音频文件
    fileType: ['mp3', 'm4a', 'awb'] //文件格式,默认返回所有格式的文件
    }
  • code值说明

    序号 code值 说明
    1 -2 过滤参数格式错误
    2 -1 获取数据失败,可能是没有存储读写权限,也可能是其它错误,具体请查看回调函数返回信息
    3 0 获取数据成功,结果在addCallback(callback)函数中返回
    4 1 音频播放完成
    5 2 获取当前播放所在时间成功,结果在addCallback(callback)函数中返回
    6 3 获得音频总时间成功,结果在addCallback(callback)函数中返回
  • 使用示例

    <template>
        <view class="uni-column">
            <button style="margin-top: 60rpx;" @click="clickGetAudio()">获取音频数据</button>
    
            <view class="uni-column" style="margin-top: 60rpx;">
                <view class="uni-row item-audio" v-for="(item,index) in datas">
                    <view class="uni-row title">
                        <text>{{item.name}}</text>
                    </view>
                    <view class="uni-row btn" @click="play(item)">
                        <text>播放</text>
                    </view>
                </view>
            </view>
    
            <view class="uni-row" style="margin-top: 40rpx;width: 100%;justify-content: center;align-items: center;">
                <view class="uni-row btn" style="width: 100rpx;margin-right: 30rpx;" @click="pause()">
                    <text>暂停</text>
                </view>
                <view class="uni-row btn" style="width: 100rpx;margin-right: 30rpx;" @click="playAfterPause()">
                    <text>播放</text>
                </view>
                <view class="uni-row btn" style="width: 100rpx;margin-right: 30rpx;" @click="start()">
                    <text>开始</text>
                </view>
                <view class="uni-row btn" style="width: 100rpx;margin-right: 30rpx;" @click="stop()">
                    <text>停止</text>
                </view>
            </view>
            <view class="uni-row" style="padding: 30rpx;">
                <text>正在播放:{{item.name}}</text>
            </view>
        </view>
    </template>
    
    <script>
        const module = uni.requireNativePlugin("jushi-AudioMedia")
        export default {
            data() {
                return {
                    datas: [],
                    item: {}
                }
            },
            created() {
                this.addCallback()
                module.setFiltration({//设置文件过滤条件
                    minSize: 0,
                    fileType: ['mp3', 'm4a', 'awb']
                })
            },
            methods: {
                addCallback() { //插件结果回调
                    module.addCallback(res => {
                        console.log(res)
                        switch (parseInt(JSON.parse(res).code)) {
                            case 0:
                                this.datas = JSON.parse(res).data
                                break
                            case 1:
                                break
                            case 2:
                                break
                            case 3:
                                break
                        }
                    })
                },
                clickGetAudio() {
                    module.getAudioFiles()
                },
                play(item) {
                    this.item = item
                    module.play(item.path)
                },
                pause(){
                    module.pause()
                },
                playAfterPause(){
                    module.playAfterPause()
                },
                start(){
                    module.start()
                },
                stop(){
                    module.stop()
                }
            }
        }
    </script>
    
    <style>
        page {
            background-color: #ffffff;
        }
    
        .uni-column {
            display: flex;
            flex-direction: column;
        }
    
        .uni-row {
            display: flex;
            flex-direction: row;
        }
    
        .item-audio {
            padding: 20rpx;
            border-bottom: solid 1rpx #efefef;
            justify-content: space-between;
            align-items: center;
        }
    
        .title {
            width: 550rpx;
            font-size: 28rpx;
        }
    
        .btn {
            width: 120rpx;
            font-size: 24rpx;
            color: blue;
            border: 1rpx solid blue;
            border-radius: 10rpx;
            padding: 8rpx;
            align-items: center;
            justify-content: center;
        }
    
        .stream {
            word-break: break-all;
            word-wrap: break-word
        }
    </style>
  • 示例应用下载

    扫码下载体验

    其它插件

    安卓原生插件

  • 文件在线预览

  • 银联支付线上收银台(通用版) 封装

  • 阿里云RTC音视频通话

  • 权限请求

  • 文字转语音

  • MQTT连接

  • 获取手机通讯录联系人

  • 快捷工具悬浮窗

  • 日历日程事件

  • 获取本地音频文件信息

  • 根据经纬度获取位置信息

  • WebSocket连接

  • 高德地图封装安卓原生地图扩展组件

  • 使用ECharts封装的安卓原生扩展组件

  • 给图片添加水印

  • 自定义通知栏通知

    UTS插件

  • 安卓权限请求UTS插件

  • 安卓文字转语音UTS插件

  • 安卓获取音频文件UTS插件

    前端插件

  • ECharts封装全端通用组件

  • 图片添加水印,支持微信小程序、H5

  • 手写签名、电子签名组件

隐私、权限声明

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

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

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

本插件不采集任何数据,使用本插件获取本地音频数据时,插件首先会向用户申请存储读写权限,未获得用户授权则无法使用本插件

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

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