如题
用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); }
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥15 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名
- ¥65 汇编语言除法溢出问题
- ¥15 Visual Studio问题
- ¥20 求一个html代码,有偿