uni-app uni.getRecorderManager 在harmony next 下无任何反应
uni-app uni.getRecorderManager 在harmony next 下无任何反应
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
PC | Mac | CLI |
手机 | HarmonyOS NEXT | - |
手机版本 | HarmonyOS NEXT Developer Preview | - |
手机厂商 | 华为 | - |
手机机型 | mate60 pro | - |
页面类型 | vue | - |
vue版本 | vue3 | - |
打包方式 | 离线 | - |
CLI版本 | 3.0.0-4020420240722002 | - |
示例代码:
组件中使用uni.getRecorderManager():
```vue
```javascript
beforeMount() {
this.setStyle()
console.log('harmony this.recorder1:', this.recorder)
try {
// #ifndef H5
this.recorder = uni.getRecorderManager()
// #endif
} catch (error) {
console.log('harmony this.recorder error:', error)
}
console.log('harmony this.recorder2:', this.recorder)
}
在真机运行,catch输出:
harmony this.recorder error: TypeError: is not callable at components/u-voice-to-text/index.vue:70
harmony this.recorder2: undefined at components/u-voice-to-text/index.vue:72
执行无效
操作步骤:
函数执行无效,获取为undefined
原生中module.json5配置有麦克风权限:
{
"name": "ohos.permission.MICROPHONE",
"reason": "$string:microphone_tips",
"usedScene": {}
}
预期结果:
返回正确的对象
实际结果:
返回undefined
bug描述:
你好,getRecorderManager需要升级4.28才可以使用,你是4.28吗?
如果听不到声音,可以看一下是不是模拟器的声音没有开,或者是声音太小了
dependencies": { “@dcloudio/uni-app”: “3.0.0-4020420240722002”, “@dcloudio/uni-app-harmony”: “3.0.0-4020420240722002”, “@dcloudio/uni-app-plus”: “3.0.0-4020420240722002”, “@dcloudio/uni-components”: “3.0.0-4020420240722002”, “@dcloudio/uni-h5”: “3.0.0-4020420240722002”, “@dcloudio/uni-mp-alipay”: “3.0.0-4020420240722002”, “@dcloudio/uni-mp-baidu”: “3.0.0-4020420240722002”, “@dcloudio/uni-mp-jd”: “3.0.0-4020420240722002”, “@dcloudio/uni-mp-kuaishou”: “3.0.0-4020420240722002”, “@dcloudio/uni-mp-lark”: “3.0.0-4020420240722002”, “@dcloudio/uni-mp-qq”: “3.0.0-4020420240722002”, “@dcloudio/uni-mp-toutiao”: “3.0.0-4020420240722002”, “@dcloudio/uni-mp-weixin”: “3.0.0-4020420240722002”, “@dcloudio/uni-mp-xhs”: “3.0.0-4020420240722002”, “@dcloudio/uni-quickapp-webview”: “3.0.0-4020420240722002”, … } cli创建的工程,需要升级到3.0.0-alpha-4020820240914001?
回复 2***@qq.com: 是的,需要升级
回复 DCloud_UNI_yuhe: 真的无语,尝试升级立马出现了另外一个 bug:https://ask.dcloud.net.cn/question/198752
回复 2***@qq.com: 运行到鸿蒙DevEco-Studio,现在是在app那一栏里面
在uni-app中使用uni.getRecorderManager
进行录音功能时,如果遇到在harmony next环境下无任何反应的问题,这通常是由于API的适配或者调用方式不正确所导致的。以下是一个基本的录音功能实现代码示例,同时确保你在harmony next环境下正确使用了相关API。
首先,确保你的项目已经正确配置并运行在harmony next模式下。接下来,你可以参考以下代码来实现录音功能:
<template>
<view>
<button @click="startRecording">开始录音</button>
<button @click="stopRecording" :disabled="!isRecording">停止录音</button>
</view>
</template>
<script>
export default {
data() {
return {
recorderManager: null,
isRecording: false,
tempFilePath: ''
};
},
mounted() {
this.recorderManager = uni.getRecorderManager();
this.recorderManager.onStop((res) => {
console.log('录音停止', res);
this.tempFilePath = res.tempFilePath;
this.isRecording = false;
// 这里可以添加保存或播放录音文件的逻辑
});
this.recorderManager.onError((err) => {
console.error('录音错误', err);
this.isRecording = false;
});
},
methods: {
startRecording() {
if (this.isRecording) return;
this.isRecording = true;
this.recorderManager.start({
format: 'mp3', // 或者 'aac'
sampleRate: 44100
});
},
stopRecording() {
if (!this.isRecording) return;
this.recorderManager.stop();
}
}
};
</script>
<style scoped>
button {
margin: 10px;
}
</style>
在上面的代码中,我们创建了一个简单的录音界面,包含两个按钮:一个用于开始录音,另一个用于停止录音。在组件挂载时,我们通过uni.getRecorderManager()
获取录音管理器,并为其绑定onStop
和onError
事件处理函数。
注意几点:
- 确保你的uni-app版本支持harmony next模式,并且相关依赖已经更新到最新版本。
- 检查
manifest.json
文件中是否已经启用了harmony next模式。 - 由于不同平台(如小程序、App等)对录音功能的支持可能有所不同,确保在目标平台上测试你的代码。
- 如果问题依旧存在,可以尝试查看uni-app的官方文档或社区,看看是否有其他开发者遇到并解决了类似的问题。
以上代码提供了一个基本的框架,你可以根据需要进行扩展和修改。