

はじめまして、Android開発の初心者です。  
Camera APIを使用していますが、API 28でビルドと下記のエラーが出ました：

[code]

    E/SurfaceView: Exception configuring surface
        java.lang.RuntimeException: setParameters failed
            at android.hardware.Camera.native_setParameters(Native Method)
            at android.hardware.Camera.setParameters(Camera.java:2102)
            at jp.image_management.ui.camera.widget.CameraPreview.updateCameraParameters(CameraPreview.java:314)
            at jp.image_management.ui.camera.widget.CameraPreview.surfaceCreated(CameraPreview.java:157)
            at android.view.SurfaceView.updateSurface(SurfaceView.java:670)
            at android.view.SurfaceView$2.onPreDraw(SurfaceView.java:143)
            at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:977)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2474)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949)
            at android.view.Choreographer.doCallbacks(Choreographer.java:761)
            at android.view.Choreographer.doFrame(Choreographer.java:696)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
            at android.os.Handler.handleCallback(Handler.java:873)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:193)
            at android.app.ActivityThread.main(ActivityThread.java:6669)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
    E/Camera: Error 2
    
[/code]

API28以前ではエラーにはなりません、正常に動作しています。  
コードの一部です：

[code]

       if (mCamera != null) {
                Camera.Parameters params = mCamera.getParameters();
                setParameters(params);
                try {
                    mCamera.setParameters(params);
                } catch (RuntimeException e) {
                    Camera.Size previewSize = findBestPreviewSize(params);
                    Camera.Size pictureSize = findPictureSize(params);
                    params.setPreviewSize(previewSize.width, previewSize.height);
                    params.setPictureSize(pictureSize.width, pictureSize.height);
                   //ここでエラーになります(API 28)
                    mCamera.setParameters(params);
                }
            }
        }
    
[/code]

API28で何か変更があるでしょう？よろしくお願いします。


CC BY-SA 4.0
2020-04-19T15:48:31.210
65767
2020-05-06T05:49:39.340
2020-05-06T05:49:39.340
3060
39710
question
java android
API 28 以降でビルドすると java.lang.RuntimeException: setParameters failed


android api 28 から、バックグラウンドからの起動は不可となっています。  
詳細は[公式](https://developer.android.com/guide/topics/media/camera?hl=ja)をご確認ください。

[補足1]  
api 21以降のみをサポートする場合、camera2を使用する事が推奨されています。  
詳しくは上記公式の同ページをご確認ください。

[補足2]  
過去、setParametersでfailedになる一因として、必要なサイズ(width, height)が、  
カメラでサポートされていないためfailedする事があります。  
実行環境で指定しているサイズを調べてみると良いかもしれません。  
<https://stackoverflow.com/questions/33579918/camera-java-lang-
runtimeexception-setparameters-failed>


CC BY-SA 4.0
2020-05-06T04:15:18.567
66338
2020-05-06T04:15:18.567
39410
65767
answer