From ab3e8d096c0dc6eb0fa802eefbc72dab27337f05 Mon Sep 17 00:00:00 2001 From: wangyue Date: Tue, 10 Dec 2024 16:45:04 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20[Issues:=20#IBAAI6]=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9react-native-audio=E6=96=87=E6=A1=A3demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangyue --- en/react-native-audio.md | 183 +++++++++++++++++++++++++---------- zh-cn/react-native-audio.md | 185 ++++++++++++++++++++++++++---------- 2 files changed, 267 insertions(+), 101 deletions(-) diff --git a/en/react-native-audio.md b/en/react-native-audio.md index 3ba57e87..9507cb01 100644 --- a/en/react-native-audio.md +++ b/en/react-native-audio.md @@ -37,58 +37,141 @@ The following code shows the basic use scenario of the repository: >[!WARNING] The name of the imported repository remains unchanged. -```js -import { AudioRecorder, AudioUtils } from "@react-native-ohos/react-native-audio"; - -// request microphone premission -AudioRecorder.requestAuthorization().then((isAuthorised)=>{ - console.log(`isAuthorised: ${isAuthorised}`) -}) - -// you check premission any time -AudioRecorder.checkAuthorizationStatus().then((hasPermission)=>{ - console.log(`hasPermission: ${hasPermission}`) -}) - -// Initialize recording parameters -const path = `${AudioUtils.FilesDirectoryPath}/demo.m4a` -AudioRecorder.prepareRecordingAtPath(path,{ - SampleRate: 48000, - Channels: 2, - AudioQuality:'High',//only ios - AudioEncoding: 'aac', - AudioEncodingBitRate: 100000, - AudioSource: 1, - OutputFormat: 'm4a', - MeteringEnabled:false,//only ios - MeasurementMode:false,//only ios - IncludeBase64:false -}) - -// start recording -AudioRecorder.start(); - -// pause recording -AudioRecorder.pause(); - -// resume recording -AudioRecorder.resume(); - -// stop recording -AudioRecorder.stop(); - -// add function onProgress -AudioRecorder.onProgress = (data) => { - console.log(data.currentTime) +```tsx +import React, { useState, useEffect } from 'react'; +import { SafeAreaView, StatusBar, Text, Button, TextInput, View, Switch, StyleSheet, TouchableOpacity } from 'react-native'; +import { AudioRecorder, AudioUtils } from 'react-native-audio'; + +type FileType = { + base64: string; + duration: number; + status: string; + audioFileSize: number; + audioFileURL: string; } -// add function onFinished -AudioRecorder.onFinished = (data) => { - console.log(data.base64);//base64 - console.log(data.duration);//audio duration - console.log(data.status);//OK/REEOR - console.log(data.audioFileSize);//audioFileSize - console.log(data.audioFileURL);//audio file url +export default () => { + const [second, setSecond] = useState(0); + const [file, setFile] = useState(); + + const initAudio = async () => { + + // request microphone premission + await AudioRecorder.requestAuthorization() + + // you check premission any time + await AudioRecorder.checkAuthorizationStatus(); + + // Initialize recording parameters + await AudioRecorder.prepareRecordingAtPath( + `${AudioUtils.FilesDirectoryPath}/audio_demo.m4a`, + { + SampleRate: 48000, + Channels: 2, + AudioQuality: 'High',//only ios + AudioEncoding: 'aac', + AudioEncodingBitRate: 100000, + AudioSource: 1, + OutputFormat: 'm4a', + MeteringEnabled: false,//only ios + MeasurementMode: false,//only ios + IncludeBase64: true + }) + AudioRecorder.onProgress = (data) => { + setSecond(data.currentTime); + } + AudioRecorder.onFinished = (data) => { + const { duration, status, audioFileSize, audioFileURL } = data + let str = data.base64.slice(0, 20); + setFile({ base64: str + '...', duration, status, audioFileSize, audioFileURL }) + } + } + const resetRecording = () => { + setFile({ + base64: "", + duration: 0, + status: "", + audioFileSize: 0, + audioFileURL: "" + }) + setSecond(0) + initAudio() + } + const renderFileLinesComp = () => { + if (!file?.base64) return false + return Object.keys(file).map(name => ( + + {name}: + {`${file[name]}`} + )) + } + + useEffect(() => { + initAudio() + return () => { } + }, []) + + return ( + + + + {`currentTime: ${parseInt(`${second}`)}`} + + + + +