Приложение «Моя камера» выдает эту ошибку: Java.Lang.RuntimeException: запуск не выполнен. ⇐ C#
-
Гость
Приложение «Моя камера» выдает эту ошибку: Java.Lang.RuntimeException: запуск не выполнен.
Я разрабатываю приложение для съемки коротких видеороликов с помощью основной или задней камеры. Я использую объект camera2 в xamarin.android. Я могу выбрать заднюю линзу и открыть камеру, как показано ниже:
// Создаем экземпляр CameraManager Менеджер CameraManager = (CameraManager)Android.App.Application.Context.GetSystemService(Context.CameraService); строка cameraId = ноль; // Получаем идентификатор задней камеры App.cameraId = менеджер.GetCameraIdList().FirstOrDefault(id => (int)manager.GetCameraCharacteristics(id).Get(CameraCharacteristics.LensFacing) == (int)LensFacing.Back); // Создаем экземпляр CameraDevice CameraDevice cameraDevice = null; менеджер.OpenCamera(cameraId, новый MyCameraDeviceStateCallback (это), ноль); Теперь я создал экземпляр объекта MediaRecorder и настроил его, как показано ниже:
// Создаем новый экземпляр MediaRecorder MediaRecorder mediaRecorder = новый MediaRecorder(); // Устанавливаем источник видео на камеру mediaRecorder.SetVideoSource(VideoSource.Camera); // Устанавливаем выходной формат и путь к файлу mediaRecorder.SetOutputFormat(OutputFormat.Default); mediaRecorder.SetOutputFile(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal).ToString() + "/video.mp4"); // Устанавливаем видеокодер mediaRecorder.SetVideoEncoder(VideoEncoder.Default); // Подготавливаем и начинаем запись mediaRecorder.Prepare(); медиаРекордер.Старт(); Однако каждый раз, когда я отлаживаю приложение с помощью mediaRecorder.Start(), я слышу громкий звук (из динамиков), и через секунду или две появляется описанная выше ошибка.
Это полная трассировка стека ошибок:
$Exception {Java.Lang.RuntimeException: запуск не выполнен. в Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod (Экземпляр Java.Interop.JniObjectReference, Java.Interop.JniMethodInfo метод, Java.Interop.JniArgumentValue* args) [0x00068] в /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/obj/Release/JniEnvironment.g.cs:11884 в Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, параметры Java.Interop.JniArgumentValue*) [0x00030] в /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods_Invoke.cs:66 в Android.Media.MediaRecorder.Start() [0x00000] в /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-33/mcw/Android.Media.MediaRecorder.cs:2440 по IMEI247_Tracker.Droid.MyBroadcastReceiver2.RecordVideoWithoutAudio () [0x0003c] в F:\MobileApps\Customized\Others\IMEITracker\IMEITracker.Android\MyBroadcastReceiver2.cs:4346 по IMEI247_Tracker.Droid.MyBroadcastReceiver2.TakeAVideo3() [0x000f3] в F:\MobileApps\Customized\Others\IMEITracker\IMEITracker.Android\MyBroadcastReceiver2.cs:4229 по IMEI247_Tracker.Droid.MyBroadcastReceiver2.b__18_7() [0x00005] в F:\MobileApps\Customized\Others\IMEITracker\IMEITracker.Android\MyBroadcastReceiver2.cs:520 в System.Threading.ThreadHelper.ThreadStart_Context (System.Object состояние) [0x00014] в /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/thread.cs:74 в System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext ExecutionContext, Обратный вызов System.Threading.ContextCallback, состояние System.Object, System.Boolean saveSyncCtx) [0x00071] в /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:968 в System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext ExecutionContext, Обратный вызов System.Threading.ContextCallback, состояние System.Object, System.Boolean saveSyncCtx) [0x00000] в /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:910 в System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext ExecutionContext, Обратный вызов System.Threading.ContextCallback, состояние System.Object) [0x0002b] в /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:899 в System.Threading.ThreadHelper.ThreadStart() [0x00008] в /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/thread.cs:111 --- Конец управляемой трассировки стека Java.Lang.RuntimeException --- java.lang.RuntimeException: запуск не выполнен. в android.media.MediaRecorder.start (собственный метод) } Java.Lang.RuntimeException
Для тестирования приложения я использую телефон Techno Spark 4 Android 9.
Итак, в чем же на самом деле проблема и как ее решить?
Я разрабатываю приложение для съемки коротких видеороликов с помощью основной или задней камеры. Я использую объект camera2 в xamarin.android. Я могу выбрать заднюю линзу и открыть камеру, как показано ниже:
// Создаем экземпляр CameraManager Менеджер CameraManager = (CameraManager)Android.App.Application.Context.GetSystemService(Context.CameraService); строка cameraId = ноль; // Получаем идентификатор задней камеры App.cameraId = менеджер.GetCameraIdList().FirstOrDefault(id => (int)manager.GetCameraCharacteristics(id).Get(CameraCharacteristics.LensFacing) == (int)LensFacing.Back); // Создаем экземпляр CameraDevice CameraDevice cameraDevice = null; менеджер.OpenCamera(cameraId, новый MyCameraDeviceStateCallback (это), ноль); Теперь я создал экземпляр объекта MediaRecorder и настроил его, как показано ниже:
// Создаем новый экземпляр MediaRecorder MediaRecorder mediaRecorder = новый MediaRecorder(); // Устанавливаем источник видео на камеру mediaRecorder.SetVideoSource(VideoSource.Camera); // Устанавливаем выходной формат и путь к файлу mediaRecorder.SetOutputFormat(OutputFormat.Default); mediaRecorder.SetOutputFile(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal).ToString() + "/video.mp4"); // Устанавливаем видеокодер mediaRecorder.SetVideoEncoder(VideoEncoder.Default); // Подготавливаем и начинаем запись mediaRecorder.Prepare(); медиаРекордер.Старт(); Однако каждый раз, когда я отлаживаю приложение с помощью mediaRecorder.Start(), я слышу громкий звук (из динамиков), и через секунду или две появляется описанная выше ошибка.
Это полная трассировка стека ошибок:
$Exception {Java.Lang.RuntimeException: запуск не выполнен. в Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod (Экземпляр Java.Interop.JniObjectReference, Java.Interop.JniMethodInfo метод, Java.Interop.JniArgumentValue* args) [0x00068] в /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/obj/Release/JniEnvironment.g.cs:11884 в Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, параметры Java.Interop.JniArgumentValue*) [0x00030] в /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods_Invoke.cs:66 в Android.Media.MediaRecorder.Start() [0x00000] в /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-33/mcw/Android.Media.MediaRecorder.cs:2440 по IMEI247_Tracker.Droid.MyBroadcastReceiver2.RecordVideoWithoutAudio () [0x0003c] в F:\MobileApps\Customized\Others\IMEITracker\IMEITracker.Android\MyBroadcastReceiver2.cs:4346 по IMEI247_Tracker.Droid.MyBroadcastReceiver2.TakeAVideo3() [0x000f3] в F:\MobileApps\Customized\Others\IMEITracker\IMEITracker.Android\MyBroadcastReceiver2.cs:4229 по IMEI247_Tracker.Droid.MyBroadcastReceiver2.b__18_7() [0x00005] в F:\MobileApps\Customized\Others\IMEITracker\IMEITracker.Android\MyBroadcastReceiver2.cs:520 в System.Threading.ThreadHelper.ThreadStart_Context (System.Object состояние) [0x00014] в /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/thread.cs:74 в System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext ExecutionContext, Обратный вызов System.Threading.ContextCallback, состояние System.Object, System.Boolean saveSyncCtx) [0x00071] в /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:968 в System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext ExecutionContext, Обратный вызов System.Threading.ContextCallback, состояние System.Object, System.Boolean saveSyncCtx) [0x00000] в /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:910 в System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext ExecutionContext, Обратный вызов System.Threading.ContextCallback, состояние System.Object) [0x0002b] в /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/executioncontext.cs:899 в System.Threading.ThreadHelper.ThreadStart() [0x00008] в /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/thread.cs:111 --- Конец управляемой трассировки стека Java.Lang.RuntimeException --- java.lang.RuntimeException: запуск не выполнен. в android.media.MediaRecorder.start (собственный метод) } Java.Lang.RuntimeException
Для тестирования приложения я использую телефон Techno Spark 4 Android 9.
Итак, в чем же на самом деле проблема и как ее решить?
Мобильная версия