在某些 Android 手机中找不到相机分辨率 CamcorderProfile

Dmi*_*din 2 android android-camera

我有一个代码示例:

mediaRecorder = new MediaRecorder();
mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
mediaRecorder.setCamera(camera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_480P));
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,以及 CamcorderProfile.QUALITY_LOW

但是当我尝试获取 360p 视频并使用 CamcorderProfile.QUALITY_CIF (int = 3) 时,我在 Sony Xperia Z3 (android 6.0.1) 中出现错误

MediaProfiles: The given camcorder profile camera 0 quality 3 is not found
System.err: java.lang.RuntimeException: Error retrieving camcorder profile params
System.err:     at android.media.CamcorderProfile.native_get_camcorder_profile(Native Method)
System.err:     at android.media.CamcorderProfile.get(CamcorderProfile.java:471)
System.err:     at android.media.CamcorderProfile.get(CamcorderProfile.java:402)
<...>
Run Code Online (Sandbox Code Playgroud)

AOSP 测试套件还没有测试 SDK 相机质量常数吗?我可以在生产中使用哪些常量并期望所有手机(至少从 5.0 开始)都支持它?

Com*_*are 7

但是当我尝试获取 360p 视频并使用 CamcorderProfile.QUALITY_CIF (int = 3) 时,我在 Sony Xperia Z3 (android 6.0.1) 中出现错误

如果您调用hasProfile(), 以查看配置文件是否受支持,并返回true,但您仍然遇到此崩溃,则设备固件中存在错误。

如果您没有调用hasProfile(),或者您忽略了它的结果,那么您的应用程序中存在错误。

我可以在生产中使用哪些常量并期望所有手机(至少从 5.0 开始)都支持它?

我不相信这是官方记录的。我认为QUALITY_LOWQUALITY_HIGH应始终存在,虽然输出从他们可能会或可能无法正常工作。