汕头网站推广seo,物流 网站 模板,wordpress 国内 模板,苏州机械加工网系列文章目录
【ArkTS】关于ForEach的第三个参数键值 【ArkTS】“一篇带你读懂ForEach和LazyForEach” 【小白拓展】 【ArkTS】“一篇带你掌握TaskPool与Worker两种多线程并发方案” 【ArkTS】 一篇带你掌握“语音转文字技术” --内附详细代码 【ArkTS】技能提高–“用户授权”…系列文章目录
【ArkTS】关于ForEach的第三个参数键值 【ArkTS】“一篇带你读懂ForEach和LazyForEach” 【小白拓展】 【ArkTS】“一篇带你掌握TaskPool与Worker两种多线程并发方案” 【ArkTS】 一篇带你掌握“语音转文字技术” --内附详细代码 【ArkTS】技能提高–“用户授权”跳转设置页的两种方式详解 文章目录 系列文章目录一、录音授权二、使用 AvRecorder 录音1.创建一个文件, 准备用来存储音频数据2.参考官网, cv配置3.创建录音实例对象4.开始准备状态 注意些await5.整合开始录制代码6.停止录制代码 总结 一、录音授权
目标使用权限请求工具在录音页面实现请求权限无权限不可进入 录音授权有在别的文章里详解过大家可以点下面两个链接看一下。我们这里就直接放封装好的代码。 【鸿蒙开发】超全面解读 带你充分掌握—“向用户申请授权”
import { promptAction, router } from kit.ArkUI
import { abilityAccessCtrl, Permissions } from kit.AbilityKitclass permission{confirmConfig: promptAction.ShowDialogOptions {title: 温馨提示,message: 未授权使用麦克风将无法使用该面试录音功能是否前往设置进行授权,buttons: [{ text: 离开, color: #ffaeabab },{ text: 去授权, color: #000000 }]}/** 请求权限 */async getPermission(permissions:Permissions[]) {// . requestPermissionsFromUser()const mgr abilityAccessCtrl.createAtManager()const ctx getContext(this)const res await mgr.requestPermissionsFromUser(ctx, permissions)if (res.authResults[0] abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) {return}// 第一次没有授权const res2 await promptAction.showDialog(this.confirmConfig)// 用户选了离开, 没有选二次授权if (res2.index 0) {router.back()return}//拉起授权页const res3 await mgr.requestPermissionOnSetting(ctx, permissions)if (res3[0] abilityAccessCtrl.GrantStatus.PERMISSION_DENIED) {router.back()}}
}export const Permissionnew permission()效果示例图
二、使用 AvRecorder 录音
目标使用 AvRecorder 实现音频录制存储到应用沙箱 实现步骤 1.创建一个文件, 准备用来存储音频数据 // 1. 创建一个文件, 准备用来存储音频数据const context getContext(this)const filePath ${context.filesDir}/${Date.now()}.m4athis.file fileIo.openSync(filePath, fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE)2.参考官网, cv配置
开发步骤及注意事项
let avProfile: media.AVRecorderProfile {audioBitrate: 100000, // 音频比特率audioChannels: 2, // 音频声道数audioCodec: media.CodecMimeType.AUDIO_AAC, // 音频编码格式当前支持ACCMP3G711MUaudioSampleRate: 48000, // 音频采样率fileFormat: media.ContainerFormatType.CFT_MPEG_4A, // 封装格式当前支持MP4M4AMP3WAV}let avConfig: media.AVRecorderConfig {audioSourceType: media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, // 音频输入源这里设置为麦克风profile: avProfile,//改为自己的文件url: fd:// this.file.fd, // 参考应用文件访问与管理中的开发示例获取创建的音频文件fd填入此处}3.创建录音实例对象
this.record await media.createAVRecorder()4.开始准备状态 注意些await await this.record.prepare(avConfig)this.record.start()5.整合开始录制代码
async startRecord() {// 1. 创建一个文件, 准备用来存储音频数据const context getContext(this)const filePath ${context.filesDir}/${Date.now()}.m4athis.file fileIo.openSync(filePath, fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE)// 2. 参考官网, cv配置let avProfile: media.AVRecorderProfile {audioBitrate: 100000, // 音频比特率audioChannels: 2, // 音频声道数audioCodec: media.CodecMimeType.AUDIO_AAC, // 音频编码格式当前支持ACCMP3G711MUaudioSampleRate: 48000, // 音频采样率fileFormat: media.ContainerFormatType.CFT_MPEG_4A, // 封装格式当前支持MP4M4AMP3WAV}let avConfig: media.AVRecorderConfig {audioSourceType: media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC, // 音频输入源这里设置为麦克风profile: avProfile,// 3. 改为自己的文件url: fd:// this.file.fd, // 参考应用文件访问与管理中的开发示例获取创建的音频文件fd填入此处}// 4. 创建录音实例对象this.record await media.createAVRecorder()// 5. 开始准备状态 注意些awaitawait this.record.prepare(avConfig)this.record.start()}6.停止录制代码 async stopRecord() {await this.record?.stop()// 销毁实例await this.record?.release();fileIo.closeSync(this.file?.fd)promptAction.showToast({ message: 音频录制成功 })}总结
以上就是录音机部分代码明日更新完整版