React native version "react-native": "0.73.2",
Library Version "react-native-record-screen": "^0.6.1",
After implementing this library i checked it on ios it is working fine but in android when i click on start recording i got response started but when i click on stop nothing happened.
After debugging i opened android studio and see there was an error:
java.lang.IllegalStateException: Must register a callback before starting capture, to manage resources in response to MediaProjection states.
Can anyone help me in this issue.
#Code implementation
import React, { useState } from 'react'
import { View, Text, Button } from 'react-native'
import RecordScreen from 'react-native-record-screen'
import Video from 'react-native-video';
const Home = () => {
const [isStarted, setStarted] = useState(false)
const [url, setUrl] = useState('')
const startRecording = async () => {
RecordScreen.clean();
try {
const res = await RecordScreen.startRecording({
mic: false,
bitrate: 1024000, // default 236390400
fps: 24, // default 60
})
console.log(res, 'Start Recording Response......')
setStarted(true)
} catch (error: any) {
console.log(error, 'Start Recording Error......')
}
}
const stopRecording = async () => {
try {
const res: any = await RecordScreen.stopRecording()
setStarted(false)
if (res) {
console.log(res, 'Stop Recording Response')
setUrl(res.result.outputURL)
}
} catch (error: any) {
console.log(error, 'Stop Recording Error......')
}
}
return (
<View style={{ paddingTop: '40%' }} >
{isStarted ? (
<Button onPress={stopRecording}
title="Stop Recording...."
color="#841584"
/>
) : (
<Button onPress={startRecording}
title="Start Recording...."
color="#841584"
/>
)}
{url ? (
<Video
source={{ uri: url }} // Your video file URI
style={{ width: '100%', height: 300 }}
controls={true}
/>
) : ''}
</View>
)
}
export default Home
Full error when i click on start recording button
2024-01-25 18:32:59.157 27556-27624 System.out com.middleapp I /storage/emulated/0/Android/data/com.middleapp/files/ReactNativeRecordScreen
2024-01-25 18:32:59.186 27556-27624 System.out com.middleapp I startRecording
2024-01-25 18:32:59.325 3447-3867 ActivityManagerWrapper com.miui.home E getRecentTasks: mainTaskId=1543 userId=0 windowMode=1 baseIntent=Intent { act=android.intent.action.MAIN flag=270532608 cmp=ComponentInfo{com.middleapp/com.middleapp.MainActivity} }
2024-01-25 18:32:59.356 3447-3867 ActivityManagerWrapper com.miui.home E getRecentTasks: mainTaskId=1543 userId=0 windowMode=1 baseIntent=Intent { act=android.intent.action.MAIN flag=270532608 cmp=ComponentInfo{com.middleapp/com.middleapp.MainActivity} }
2024-01-25 18:32:59.856 27556-28712 TrafficStats com.middleapp D tagSocket(144) with statsTag=0x90000, statsUid=-1
2024-01-25 18:33:00.237 27556-27623 ReactNativeJS com.middleapp I 'started', 'Start Recording Response......'
2024-01-25 18:33:00.260 27556-27556 CameraInjector com.middleapp D updateCloudCameraControllerInfoAsync: has aleardy start update task.
2024-01-25 18:33:00.260 27556-27556 CameraInjector com.middleapp D waitForResult:
2024-01-25 18:33:00.260 27556-28721 TrafficStats com.middleapp D tagSocket(144) with statsTag=0xffffffff, statsUid=-1
2024-01-25 18:33:00.260 27556-27556 libc com.middleapp W Access denied finding property "vendor.camera.aux.packagelist"
2024-01-25 18:33:00.260 27556-27556 libc com.middleapp W Access denied finding property "vendor.camera.aux.packagelistext"
2024-01-25 18:33:00.263 27556-27556 CameraInjector com.middleapp D updateCloudCameraControllerInfoAsync: has aleardy start update task.
2024-01-25 18:33:00.263 27556-27556 CameraInjector com.middleapp D waitForResult:
2024-01-25 18:33:00.263 27556-27556 libc com.middleapp W Access denied finding property "vendor.camera.aux.packagelist"
2024-01-25 18:33:00.263 27556-27556 libc com.middleapp W Access denied finding property "vendor.camera.aux.packagelistext"
2024-01-25 18:33:00.267 27556-27556 CameraInjector com.middleapp D updateCloudCameraControllerInfoAsync: has aleardy start update task.
2024-01-25 18:33:00.267 27556-27556 CameraInjector com.middleapp D waitForResult:
2024-01-25 18:33:00.267 27556-27556 libc com.middleapp W Access denied finding property "vendor.camera.aux.packagelist"
2024-01-25 18:33:00.267 27556-27556 libc com.middleapp W Access denied finding property "vendor.camera.aux.packagelistext"
2024-01-25 18:33:00.268 27556-27556 CameraInjector com.middleapp D updateCloudCameraControllerInfoAsync: has aleardy start update task.
2024-01-25 18:33:00.268 27556-27556 CameraInjector com.middleapp D waitForResult:
2024-01-25 18:33:00.268 27556-27556 libc com.middleapp W Access denied finding property "vendor.camera.aux.packagelist"
2024-01-25 18:33:00.268 27556-27556 libc com.middleapp W Access denied finding property "vendor.camera.aux.packagelistext"
2024-01-25 18:33:00.308 27556-27556 MediaRecorder com.middleapp E SurfaceMediaSource could not be initialized!
2024-01-25 18:33:00.311 27556-27556 MediaRecorder com.middleapp E start called in an invalid state: 4
2024-01-25 18:33:00.316 27556-27556 HandWritingStubImpl com.middleapp I refreshLastKeyboardType: 1
2024-01-25 18:33:00.316 27556-27556 HandWritingStubImpl com.middleapp I getCurrentKeyboardType: 1
2024-01-25 18:33:00.337 27556-27556 System.out com.middleapp I HBRecorderOnError
2024-01-25 18:33:00.337 27556-27556 System.out com.middleapp I errorCode
2024-01-25 18:33:00.337 27556-27556 System.out com.middleapp I 100
2024-01-25 18:33:00.337 27556-27556 System.out com.middleapp I reason
2024-01-25 18:33:00.337 27556-27556 System.out com.middleapp I java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.middleapp/files/ReactNativeRecordScreen/HD2024-01-25-18-33-00.mp4: open failed: ENOENT (No such file or directory)
2024-01-25 18:33:00.337 27556-27556 System.out com.middleapp I at libcore.io.IoBridge.open(IoBridge.java:574)
2024-01-25 18:33:00.337 27556-27556 System.out com.middleapp I at java.io.RandomAccessFile.<init>(RandomAccessFile.java:289)
2024-01-25 18:33:00.337 27556-27556 System.out com.middleapp I at java.io.RandomAccessFile.<init>(RandomAccessFile.java:152)
2024-01-25 18:33:00.337 27556-27556 System.out com.middleapp I at android.media.MediaRecorder.prepare(MediaRecorder.java:1358)
2024-01-25 18:33:00.337 27556-27556 System.out com.middleapp I at com.hbisoft.hbrecorder.ScreenRecordService.initRecorder(ScreenRecordService.java:557)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at com.hbisoft.hbrecorder.ScreenRecordService.onStartCommand(ScreenRecordService.java:249)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:5045)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at android.app.ActivityThread.-$$Nest$mhandleServiceArgs(Unknown Source:0)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2427)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at android.os.Handler.dispatchMessage(Handler.java:106)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at android.os.Looper.loopOnce(Looper.java:224)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at android.os.Looper.loop(Looper.java:318)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at android.app.ActivityThread.main(ActivityThread.java:8720)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at java.lang.reflect.Method.invoke(Native Method)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:561)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at libcore.io.Linux.open(Native Method)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at libcore.io.ForwardingOs.open(ForwardingOs.java:563)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at libcore.io.BlockGuardOs.open(BlockGuardOs.java:274)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at libcore.io.ForwardingOs.open(ForwardingOs.java:563)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8596)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I at libcore.io.IoBridge.open(IoBridge.java:560)
2024-01-25 18:33:00.338 27556-27556 System.out com.middleapp I ... 15 more
2024-01-25 18:33:00.341 3447-3867 ActivityManagerWrapper com.miui.home E getRecentTasks: mainTaskId=1543 userId=0 windowMode=1 baseIntent=Intent { act=android.intent.action.MAIN flag=270532608 cmp=ComponentInfo{com.middleapp/com.middleapp.MainActivity} }
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I HBRecorderOnError
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I errorCode
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I 100
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I reason
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I java.lang.IllegalStateException: failed to get surface
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I at android.media.MediaRecorder.getSurface(Native Method)
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I at com.hbisoft.hbrecorder.ScreenRecordService.initVirtualDisplay(ScreenRecordService.java:563)
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I at com.hbisoft.hbrecorder.ScreenRecordService.onStartCommand(ScreenRecordService.java:273)
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:5045)
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I at android.app.ActivityThread.-$$Nest$mhandleServiceArgs(Unknown Source:0)
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2427)
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I at android.os.Handler.dispatchMessage(Handler.java:106)
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I at android.os.Looper.loopOnce(Looper.java:224)
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I at android.os.Looper.loop(Looper.java:318)
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I at android.app.ActivityThread.main(ActivityThread.java:8720)
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I at java.lang.reflect.Method.invoke(Native Method)
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:561)
2024-01-25 18:33:00.347 27556-27556 System.out com.middleapp I at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I HBRecorderOnError
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I errorCode
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I 38
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I reason
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I java.lang.IllegalStateException
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I at android.media.MediaRecorder.start(Native Method)
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I at com.hbisoft.hbrecorder.ScreenRecordService.onStartCommand(ScreenRecordService.java:319)
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:5045)
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I at android.app.ActivityThread.-$$Nest$mhandleServiceArgs(Unknown Source:0)
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2427)
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I at android.os.Handler.dispatchMessage(Handler.java:106)
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I at android.os.Looper.loopOnce(Looper.java:224)
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I at android.os.Looper.loop(Looper.java:318)
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I at android.app.ActivityThread.main(ActivityThread.java:8720)
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I at java.lang.reflect.Method.invoke(Native Method)
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:561)
2024-01-25 18:33:00.350 27556-27556 System.out com.middleapp I at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1013)
I tried to change the sdk version but its not working with that. Also i tried it on multiple devices and simulators but same happen