My Camera App is throwing this error: Java.Lang.RuntimeException: start failed

87 Views Asked by At

I am developing an app to take short videos using the rear or back camera. I am using the camera2 object in xamarin.android. I am able to select the rear lens and open the camera like below:

            // Create an instance of CameraManager
            CameraManager manager = (CameraManager)Android.App.Application.Context.GetSystemService(Context.CameraService);

            string cameraId = null;

            // Get the ID of the back-facing camera
            App.cameraId = manager.GetCameraIdList().FirstOrDefault(id => (int)manager.GetCameraCharacteristics(id).Get(CameraCharacteristics.LensFacing) == (int)LensFacing.Back);
          

            // Create an instance of CameraDevice
            CameraDevice cameraDevice = null;
            manager.OpenCamera(cameraId, new MyCameraDeviceStateCallback(this), null);

Now, I created an instance of MediaRecorder object and set it up as below:

    // Create a new instance of MediaRecorder
    MediaRecorder mediaRecorder = new MediaRecorder();

    // Set the video source to the camera
    mediaRecorder.SetVideoSource(VideoSource.Camera);

    // Set the output format and file path
    mediaRecorder.SetOutputFormat(OutputFormat.Default);
    mediaRecorder.SetOutputFile(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal).ToString() + "/video.mp4");

    // Set the video encoder
    mediaRecorder.SetVideoEncoder(VideoEncoder.Default);

    // Prepare and start recording
    mediaRecorder.Prepare();
    mediaRecorder.Start();

However, anytime I debug the app to mediaRecorder.Start(), I hear a loud sound (from the speakers) and after a second or two the error above pops up.

This is the complete error stack trace:

  • $exception  {Java.Lang.RuntimeException: start failed.   at Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod
    

(Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00068] in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/obj/Release/JniEnvironment.g.cs:11884 at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00030] in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods_Invoke.cs:66 at Android.Media.MediaRecorder.Start () [0x00000] in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-33/mcw/Android.Media.MediaRecorder.cs:2440 at IMEI247_Tracker.Droid.MyBroadcastReceiver2.RecordVideoWithoutAudio () [0x0003c] in F:\MobileApps\Customized\Others\IMEITracker\IMEITracker.Android\MyBroadcastReceiver2.cs:4346 at IMEI247_Tracker.Droid.MyBroadcastReceiver2.TakeAVideo3 () [0x000f3] in F:\MobileApps\Customized\Others\IMEITracker\IMEITracker.Android\MyBroadcastReceiver2.cs:4229 at IMEI247_Tracker.Droid.MyBroadcastReceiver2.b__18_7 () [0x00005] in F:\MobileApps\Customized\Others\IMEITracker\IMEITracker.Android\MyBroadcastReceiver2.cs:520 at System.Threading.ThreadHelper.ThreadStart_Context (System.Object state) [0x00014] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/thread.cs:74 at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00071] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:968 at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:910 at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state) [0x0002b] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:899 at System.Threading.ThreadHelper.ThreadStart () [0x00008] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/thread.cs:111 --- End of managed Java.Lang.RuntimeException stack trace --- java.lang.RuntimeException: start failed. at android.media.MediaRecorder.start(Native Method) } Java.Lang.RuntimeException

I am using a Techno Spark 4 Android 9 phone for testing my app.

So, what is really the issue and how do I resolve it?

0

There are 0 best solutions below