Я пишу собственное приложение камеры с некоторыми функциями.Я хочу использовать стандартные сценические режимы камеры Android в своем приложении.Потому что я запрашиваю все поддерживаемые сюжетные режимы по
Camera.Parameters.getSupportedSceneModes()
Для моего телефона (Honor 8c) у меня есть все доступные сюжетные режимы, включая HDR.Когда я устанавливаю любой режим сцены, все в порядке, и я могу делать снимки.Но после вызова
Camera.Parameters parameters = mCamera.getParameters();
parameters.setSceneMode(scene_mode);
mCamera.setParameters(parameters);
, а затем через некоторое время
mCamera.takePicture(shutterCallback, rawCallback, postviewCallback, mPicture);
я вижу, что работают только два обратных вызова (затвор и raw), другие обратные вызовы вообще не вызываются.
Все, что у меня есть в Logcat после вызова метода takePicture:
D/MyApp: shutterCallback: works
D/MyApp: rawCallback: works
E/Camera: Error 1
Я вижу, что снимок сделан, и мой предварительный просмотр камеры остановлен, но тогда ничего не происходит.
Возможно ли, что режим HDR на самом деле не поддерживается камерой, но getSupportedSceneModes возвращает HDR в списке поддерживаемых режимов?И если это правда, как избежать использования неподдерживаемых сюжетных режимов, если они есть в этом списке?
Может быть, я должен что-то делать в обратном вызове затвора или в необработанном режиме при включенном режиме HDR?
Это полный журнал (подробный уровень и выше), начиная с вызова метода setSceneMode:
01-30 13:11:18.285 20980-20980/com.example.me.myapp V/AudioManager: playSoundEffect effectType: 0
01-30 13:11:18.352 20980-20980/com.example.me.myapp D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.23, mControlPoint1y = 0.06, mControlPoint2x = 0.09, mControlPoint2y = 0.97
01-30 13:11:18.352 20980-20980/com.example.me.myapp D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.6, mControlPoint1y = 0.9, mControlPoint2x = 0.8, mControlPoint2y = 1.0
01-30 13:11:18.353 20980-20980/com.example.me.myapp D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.23, mControlPoint1y = 0.06, mControlPoint2x = 0.09, mControlPoint2y = 0.97
01-30 13:11:18.353 20980-20980/com.example.me.myapp D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.6, mControlPoint1y = 0.9, mControlPoint2x = 0.8, mControlPoint2y = 1.0
01-30 13:11:18.367 20980-20980/com.example.me.myapp D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.23, mControlPoint1y = 0.06, mControlPoint2x = 0.09, mControlPoint2y = 0.97
01-30 13:11:18.367 20980-20980/com.example.me.myapp D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.6, mControlPoint1y = 0.9, mControlPoint2x = 0.8, mControlPoint2y = 1.0
01-30 13:11:18.368 20980-20980/com.example.me.myapp D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.23, mControlPoint1y = 0.06, mControlPoint2x = 0.09, mControlPoint2y = 0.97
01-30 13:11:18.368 20980-20980/com.example.me.myapp D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.6, mControlPoint1y = 0.9, mControlPoint2x = 0.8, mControlPoint2y = 1.0
01-30 13:11:18.388 20980-20980/com.example.me.myapp D/HwRTBlurUtils: check blur style for HwPhoneWindow, themeResId : 0x010302d7, context : android.view.ContextThemeWrapper@ba85eca, Nhwext : 0, get Blur : disable with , null
01-30 13:11:18.397 20980-21069/com.example.me.myapp D/OpenGLRenderer: HWUI Binary is disabled
01-30 13:11:18.405 20980-20987/com.example.me.myapp I/zygote64: Compiler allocated 4MB to compile void android.view.View.<init>(android.content.Context, android.util.AttributeSet, int, int)
01-30 13:11:18.488 20980-20987/com.example.me.myapp I/zygote64: Do full code cache collection, code=222KB, data=196KB
01-30 13:11:18.489 20980-20987/com.example.me.myapp I/zygote64: After code cache collection, code=217KB, data=153KB
01-30 13:11:18.541 20980-20980/com.example.me.myapp I/ViewRootImpl: jank_removeInvalidNode all the node in jank list is out of time
01-30 13:11:18.543 20980-21069/com.example.me.myapp D/OpenGLRenderer: HWUI Binary is disabled
01-30 13:11:29.002 20980-20980/com.example.me.myapp I/ViewRootImpl: jank_removeInvalidNode all the node in jank list is out of time
01-30 13:11:29.075 20980-20980/com.example.me.myapp D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.23, mControlPoint1y = 0.06, mControlPoint2x = 0.09, mControlPoint2y = 0.97
01-30 13:11:29.075 20980-20980/com.example.me.myapp D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.6, mControlPoint1y = 0.9, mControlPoint2x = 0.8, mControlPoint2y = 1.0
01-30 13:11:29.076 20980-20980/com.example.me.myapp D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.23, mControlPoint1y = 0.06, mControlPoint2x = 0.09, mControlPoint2y = 0.97
01-30 13:11:29.076 20980-20980/com.example.me.myapp D/CubicBezierInterpolator: CubicBezierInterpolator mControlPoint1x = 0.6, mControlPoint1y = 0.9, mControlPoint2x = 0.8, mControlPoint2y = 1.0
01-30 13:11:30.161 20980-20980/com.example.me.myapp V/AudioManager: playSoundEffect effectType: 0
[ 01-30 13:11:30.168 26496:21400 I/ ]
~AppDegreeProfiles, destruction here
01-30 13:11:30.235 20980-20980/com.example.me.myapp V/InputMethodManager: Reporting focus gain, without startInput
И это журнал после вызова метода takePicture:
01-30 13:11:56.211 20980-20980/com.example.me.myapp V/AudioManager: playSoundEffect effectType: 0
01-30 13:11:56.896 20980-20980/com.example.me.myapp D/MyApp: onShutter: works
01-30 13:11:56.896 20980-20980/com.example.me.myapp D/MyApp: previewCallback: works
01-30 13:12:05.614 20980-20980/com.example.me.myapp E/Camera: Error 1
И это все.Затем, если я прячу свое приложение и показываю его обратно, я вижу следующие журналы:
01-30 13:22:46.065 20980-20980/com.example.me.myapp I/PermissionManager: camera remind result:true
01-30 13:22:46.070 20980-20980/com.example.me.myapp D/Error: Error setting camera preview: setPreviewTexture failed
01-30 13:22:46.071 20980-20980/com.example.me.myapp D/MyApp: surfaceChanged: stop Preview
01-30 13:22:46.155 20980-20980/com.example.me.myapp I/PermissionManager: camera remind result:true
01-30 13:22:46.156 20980-20980/com.example.me.myapp I/Camera: camera number: 2, for app: com.example.me.myapp
01-30 13:22:46.158 20980-20980/com.example.me.myapp D/Error: Error starting camera preview: startPreview failed
01-30 13:22:46.161 20980-20980/com.example.me.myapp W/InputMethodManager: startInputReason = 1
01-30 13:22:46.189 20980-20980/com.example.me.myapp I/ViewRootImpl: jank_removeInvalidNode all the node in jank list is out of time
01-30 13:23:12.579 20980-20980/com.example.me.myapp D/MyApp: surfaceDestroyed: stop Preview
01-30 13:23:14.081 20980-20980/com.example.me.myapp D/ActivityThread: Remove activity client record, r= ActivityRecord{ea46a70 token=android.os.BinderProxy@e78f13c {com.example.me.myapp/com.example.me.myapp.EnterActivity}} token= android.os.BinderProxy@e78f13c
01-30 13:23:14.115 20980-20980/com.example.me.myapp D/ActivityThread: Remove activity client record, r= ActivityRecord{69bcc36 token=android.os.BinderProxy@2eecac0 {com.example.me.myapp/com.example.me.myapp.CameraActivity}} token= android.os.BinderProxy@2eecac0
И теперь я не могу использовать камеру в своем приложении, пока я не перезапущу ее.Без исключений, только сообщение об ошибке в журнале.