調用Camera.Parameters params = mCamera.getParameters();報錯:
java.lang.RuntimeException: getParameters failed (empty parameters)
at android.hardware.Camera.native_getParameters(Native Method)
at android.hardware.Camera.getParameters(Camera.java:1662)
原因是,getParameters不能在mCamera.startPreview()之後獲取。所以如果有什麼參數要獲取的話,比如獲取相機支持的預覽尺寸:
List<Camera.Size> sizes = mCamera.getParameters().getSupportedPreviewSizes();
這個就要在mCamera.startPreview()之前完成。
順便說下,設置相機預覽尺寸一般這麼寫:
CamcorderProfile mProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_1080P);
mediaRecorder.setVideoSize(mProfile.videoFrameWidth, mProfile.videoFrameHeight);
但有些手機不支持1080的分辨率,會直接崩潰
報錯
java.lang.RuntimeException: start failed. at android.media.MediaRecorder.start(Native Method)
所以要先調用getSupportedPreviewSizes獲取相機支持的分辨率,再設置setVideoSize,而不是像有些文章裏說的註釋掉setVideoSize這個設置。