Closed OhYee closed 7 years ago
程序会跟你设置的minWidth,maxWidth 查找设备支持的视频宽高尺寸,进行设置。如果找不到就会抛异常。
所有尽量 minWidth-maxWidth区间设置大一点,比较容易找到尺寸。 高度是根据你设置的区间,查找的尺寸只能够获得的。
相关代码: Camera.Parameters parameters = mCamera.getParameters();
List
int[] destRange = {config.fps * 1000, config.fps * 1000};
List<int[]> supportedPreviewFpsRange = parameters.getSupportedPreviewFpsRange();
for (int[] range : supportedPreviewFpsRange
) {
if (range[PREVIEW_FPS_MAX_INDEX] >= config.fps * 1000) {
destRange = range;
Log.d(TAG, String.format("find fps range :%s", Arrays.toString(destRange)));
break;
}
}
if (previewSize == null) {
throw new RuntimeException("find previewSize error");
}
@blueberryCoder 我看到这一块的实现了 我打印出了我的设备所有支持的格式: 1920x1080,1440x1080,1280x720,1088x1088,1056x864,960x720,880x720,800x480,720x480,640x480,528x432,352x288,320x240,176x144
可以看出1080以上的有1920x1080,1440x1080,1088x1088 然后最大值设置成1088,最小设置成1080可以正常使用 但是我把最大值和最小值同时设置成1080,就会出错
跟据log发现if内的代码没有执行,而根据if的条件,应该是可以执行的,不知道问题在哪
if (size.width >= config.minWidth && size.width <= config.maxWidth) {
previewSize = size;
Log.d(TAG, String.format("find preview size width=%d,height=%d", previewSize.width,
previewSize.height));
break;
}
不知道我这里出了什么问题
报错信息如下:
com.oyohyee.record E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.oyohyee.record, PID: 13502
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.oyohyee.record/com.oyohyee.record.MainActivity}: java.lang.RuntimeException: find previewSize error
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3319)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
at android.app.ActivityThread.access$1100(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7325)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
Caused by: java.lang.RuntimeException: find previewSize error
at com.blueberry.media.VideoGatherer.setCameraParameters(VideoGatherer.java:244)
at com.blueberry.media.VideoGatherer.initCamera(VideoGatherer.java:90)
at com.blueberry.media.MediaPublisher.initVideoGatherer(MediaPublisher.java:101)
at com.oyohyee.record.MainActivity.doNext(MainActivity.java:72)
at com.oyohyee.record.MainActivity.checkPermissions(MainActivity.java:197)
at com.oyohyee.record.MainActivity.onCreate(MainActivity.java:55)
at android.app.Activity.performCreate(Activity.java:6904)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3266)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
at android.app.ActivityThread.access$1100(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7325)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
我蠢了,把高度和宽度搞反了…… 原来大的是宽度
这里的MaxWidth和MinWidth应该以什么原则来设置? (我尝试调了比较大的数值,直接崩溃了)
另外高度是根据宽度自动设置了么?