使用 TextReader 实现文本朗读import TextReader from '@ohos.multimedia.textreader'; import { Resource } from '@ohos.global.resource'; import { DEFAULT_STRING } from '@ohos.console.default_string'; import { CommonEventManager } from '@ohos.multimedia.media'; // 定义文本阅读器的参数 const readerParam: TextReader.ReaderParam = { isVoiceBrandVisible: true, businessBrandInfo: { panelName: ' XiaoYiReading ' } }; // 初始化 TextReader async function initTextReader() { try { await TextReader.init(readerParam); return true; } catch (err) { console.error(`TextReader failed to init. Code: ${err.code}, message: ${err.message}`); return false; } } // 设置 TextReader 事件监听器 function setEventListener() { TextReader.on('stop', () => { console.log('TextReader stopped'); }); TextReader.on('stateChange', (state: TextReader.ReadState) => { if (state.state === TextReader.ReadState.COMPLETED) { console.log('TextReader completed'); } }); } // 播放文本 async function playText(text: string) { const playParam: TextReader.PlayParam = { text: text, textId: '1', voiceType: TextReader.VoiceType.NORMAL, speed: 1.0, pitch: 1.0, volume: 1.0, language: 'zh-CN', interrupt: TextReader.InterruptType.NORMAL }; try { await TextReader.play(playParam); return true; } catch (err) { console.error(`TextReader failed to play. Code: ${err.code}, message: ${err.message}`); return false; } } // 暂停文本播放 async function pauseText() { try { await TextReader.pause(); return true; } catch (err) { console.error(`TextReader failed to pause. Code: ${err.code}, message: ${err.message}`); return false; } } // 停止文本播放 async function stopText() { try { await TextReader.stop(); return true; } catch (err) { console.error(`TextReader failed to stop. Code: ${err.code}, message: ${err.message}`); return false; } } //释放 TextReader 资源 async function releaseTextReader() { try { await TextReader.release(); return true; } catch (err) { console.error(`TextReader failed to release. Code: ${err.code}, message: ${err.message}`); return false; } } // 页面组件示例 @Entry @Component struct TextReaderExample { @State isPlaying: boolean = false; @State text: string = 'Hello, HarmonyOS Next!'; build() { Column() { Text(this.text) .fontSize(20) .margin(20) Button(this.isPlaying ? 'Pause' : 'Play') .onClick(async () => { if (this.isPlaying) { this.isPlaying = await pauseText(); } else { this.isPlaying = await playText(this.text); } }) .margin(20) Button('Stop') .onClick(async () => { this.isPlaying = false; await stopText(); }) .margin(20) } .onAppear(async () => { const isInit = await initTextReader(); if (isInit) { setEventListener(); } }) .onDisappear(async () => { await releaseTextReader(); }) } }代码说明初始化 TextReader :在组件的 onAppear 生命周期方法中调用 initTextReader 函数来初始化 TextReader,并在初始化成功后调用 setEventListener 设置事件监听器。播放文本 :点击 “Play” 按钮时,调用 playText 函数,将文本内容传递给 TextReader 进行播放,并更新播放状态。暂停播放 :点击 “Pause” 按钮时,调用 pauseText 函数暂停文本播放,并更新播放状态。停止播放 :点击 “Stop” 按钮时,调用 stopText 函数停止文本播放,并重置播放状态。释放资源 :在组件的 onDisappear 生命周期方法中调用 releaseTextReader 函数释放 TextReader 资源
使用 TextReader 实现文本朗读
代码说明
初始化 TextReader :在组件的 onAppear 生命周期方法中调用 initTextReader 函数来初始化 TextReader,并在初始化成功后调用 setEventListener 设置事件监听器。
播放文本 :点击 “Play” 按钮时,调用 playText 函数,将文本内容传递给 TextReader 进行播放,并更新播放状态。
暂停播放 :点击 “Pause” 按钮时,调用 pauseText 函数暂停文本播放,并更新播放状态。
停止播放 :点击 “Stop” 按钮时,调用 stopText 函数停止文本播放,并重置播放状态。
释放资源 :在组件的 onDisappear 生命周期方法中调用 releaseTextReader 函数释放 TextReader 资源