実際、アプリケーションで現在直面している2つの問題があります。
1) フロントカメラの使用中に RuntimeException が発生する。
2) 背面カメラを使用したキャプチャ画像の向きはデバイスに依存します。つまり、一部のデバイスでは完全に細かい向きが得られましたが、一部のデバイスではそうではありませんでした。
サイトのルールによると、1つの質問で2つの質問をするべきではありませんが、問題の根本は両方の質問で同じである setParameters
ため、1つの質問で質問しています。
コード:
キャプチャーイメージ担当。
public void TakeImage(){
// try {
Camera.Parameters param;
param = mCamera.getParameters();
param.setRotation(90);
Camera.Size bestSize = null;
List<Camera.Size> sizeList = mCamera.getParameters().getSupportedPreviewSizes();
bestSize = sizeList.get(0);
for (int i = 1; i < sizeList.size(); i++) {
if ((sizeList.get(i).width * sizeList.get(i).height) > (bestSize.width * bestSize.height)) {
bestSize = sizeList.get(i);
}
}
List<Integer> supportedPreviewFormats = param.getSupportedPreviewFormats();
Iterator<Integer> supportedPreviewFormatsIterator = supportedPreviewFormats.iterator();
while (supportedPreviewFormatsIterator.hasNext()) {
Integer previewFormat = supportedPreviewFormatsIterator.next();
if (previewFormat == ImageFormat.YV12) {
param.setPreviewFormat(previewFormat);
}
}
param.setPreviewSize(bestSize.width, bestSize.height);
param.setPictureSize(bestSize.width, bestSize.height);
mCamera.setParameters(param);
mCamera.takePicture(null, null, mPicture);
// }
// catch (Exception e){
// Toast.makeText(getApplicationContext(),"camera capture exception",Toast.LENGTH_SHORT).show();
// }
}
フロントカメラ例外使用中の LogCate:
2019-04-19 10:49:14.054 20679-20679/com.example.clapdetection E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.clapdetection, PID: 20679
java.lang.RuntimeException: setParameters failed
at android.hardware.Camera.native_setParameters(Native Method)
at android.hardware.Camera.setParameters(Camera.java:1980)
at com.example.clapdetection.Activity.CameraActivity.TakeImage(CameraActivity.java:465)
at com.example.clapdetection.Activity.CameraActivity$1$1.onClick(CameraActivity.java:110)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22433)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6126)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)