java.lang.IllegalStateException: Must register a callback before starting capture, to manage resources in response to MediaProjection states

283 views Asked by At

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

0

There are 0 answers