diff --git a/en/react-native-audio.md b/en/react-native-audio.md index 3ba57e87f844ad677faf02214c8c752283105f8c..9507cb0142d7cf4bf542d2bf733e48b441815ed7 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}`)}`} + + + + +