如题
用camera2+surfaceview预览画面拉长,怎么破。。。。
Android camera2+surfaceview预览画面拉长
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 不知道你这个问题是否已经解决, 如果还没有解决的话:- 你可以看下这个问题的回答https://ask.csdn.net/questions/820
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Android Camera SurfaceView
- 除此之外, 这篇博客: Android自定义camera相机 系列(一)中的 2.3.1 通过 SurfaceView 获取需要数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
// 部分对象的声明 private Camera mCamera; private SurfaceHolder mHolder; mHolder = svContent.getHolder(); mHolder.addCallback(this); // SurfaceHolder 的监听事件 @Override public void surfaceCreated(SurfaceHolder holder) { // 相机预览 startPreview(mCamera, holder); } // 画布改变 调用 相机预览 @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { mCamera.stopPreview(); startPreview(mCamera, holder); } // 画布销毁 回收相机 @Override public void surfaceDestroyed(SurfaceHolder holder) { releaseCamera(); } /** * 预览相机 */ private void startPreview(Camera camera, SurfaceHolder holder) { try { // 确认相机预览尺寸 setupCamera(camera); camera.setPreviewDisplay(holder); cameraInstance.setCameraDisplayOrientation(this, mCameraId, camera); camera.startPreview(); isView = true; } catch (IOException e) { e.printStackTrace(); } } /** * 设置surfaceView的尺寸 因为camera默认是横屏,所以取得支持尺寸也都是横屏的尺寸 * 我们在startPreview方法里面把它矫正了过来,但是这里我们设置设置surfaceView的尺寸的时候要注意 previewSize.height<previewSize.width * previewSize.width才是surfaceView的高度 * 一般相机都是屏幕的宽度 这里设置为屏幕宽度 高度自适应 你也可以设置自己想要的大小 */ private void setupCamera(Camera camera) { Camera.Parameters parameters = camera.getParameters(); if (parameters.getSupportedFocusModes().contains( Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) { parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); } //根据屏幕尺寸获取最佳 大小 Camera.Size previewSize = cameraInstance.getPicPreviewSize(parameters.getSupportedPreviewSizes(), screenHeight, screenWidth); parameters.setPreviewSize(previewSize.width, previewSize.height); Camera.Size pictrueSize = cameraInstance.getPicPreviewSize(parameters.getSupportedPictureSizes(), screenHeight,screenWidth); parameters.setPictureSize(pictrueSize.width, pictrueSize.height); camera.setParameters(parameters); // picHeight = (screenWidth * pictrueSize.width) / pictrueSize.height; picWidth = pictrueSize.width; picHeight = pictrueSize.height; FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(screenWidth, (screenWidth * pictrueSize.width) / pictrueSize.height); svContent.setLayoutParams(params); }
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥35 平滑拟合曲线该如何生成
- ¥100 c语言,请帮蒟蒻写一个题的范例作参考
- ¥15 名为“Product”的列已属于此 DataTable
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 自己瞎改改,结果现在又运行不了了
- ¥15 链式存储应该如何解决
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站