这是我第一次在Android上使用相机开发,我已经测试了我在链接中找到的相机演示https://thenewcircle.com/s/post/39/using__the_camera_api
但我对这段代码有一些问题:(
首先,这似乎有必要将这一行添加到Preview(上下文上下文)的代码中
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB)
(如果我不添加此测试,程序将崩溃)
就在这条线之前
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
因为setType()调用现在似乎被弃用了(这就是Android Studio对我说的)
其次,这似乎有必要对相机进行评论。setParameters()调用SurfaceChanged(SurfaceHolder holder,int format,int w,int h)代码
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
// Now that the size is known, set up the camera parameters and begin
// the preview.
Camera.Parameters parameters = camera.getParameters();
parameters.setPreviewSize(w, h);
// camera.setParameters(parameters);
camera.startPreview();
(如果此行未注释,则会崩溃)
现在,这个例子在我的Android设备上启动时不会崩溃,我可以看到相机预览:)
但现在当我旋转屏幕时,它崩溃了:(
=
编辑:现已部分解决:)
我做了一个小小的改变:
>
当此变量已设置为true时添加camera.stopPreview()调用
调用camera后,将此变量设置为true。startPreview();
<代码><代码>
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h)
{
// Now that the size is known, set up the camera parameters and begin
// the preview
// ERROR : setParameter() is deprecated
// Camera.Parameters parameters = camera.getParameters();
// parameters.setPreviewSize(w, h);
// camera.setParameters(parameters);
if( bPreviewRunning == true)
{
bPreviewRunning = false;
camera.stopPreview();
}
camera.startPreview();
bPreviewRunning = true;
}
<代码><代码>
但是应用程序有时会崩溃,但我不明白为什么:(
(竖屏时预览方向不好)
这里有几个例子:
https://stackoverflow.com/a/19312182/192373
https://stackoverflow.com/a/20883662/192373
https://stackoverflow.com/a/19599599/192373
选择一个适合您需要的(更改相机方向,或保持活动固定,或其他)。
这里是Google官方的摄像头API 2示例:
https://github.com/googlesamples/android-Camera2Basic
谷歌工程师开发的新库,可帮助您轻松支持摄像头API 1和摄像头API 2(请注意,这还不完全稳定,这不是官方示例):
https://github.com/google/cameraview
我已创建WebView活动并正在加载https://web.doar.zone/c冠状病毒 这个URL需要相机权限,这是我在Android中获得的运行时权限。 下面是mainactivity.java的完整代码:
表情测试 图片转文字 相框 拍摄图片
摄像头用于采集图像和影像信息,通过模块间的组合完成各种创意活动。 净重量:8.1g 体积:24×24×22mm 参数 分辨率:1280×720 像素大小:3.4um×3.4um 最大图像传输速率:全尺寸 @ 30fps 视场角:100° 镜片结构:4G+IR 焦比:2.97 有效焦距:2.4mm 功耗:100uA(待机)~240mW(工作) 电源:USB总线电源 抗跌落能力:1m 工作温度:-30
camera 对象提供对设备默认摄像头应用程序的访问。 方法: camera.getPicture 参数: cameraSuccess cameraError cameraOptions camera.getPicture 选择使用摄像头拍照,或从设备相册中获取一张照片。图片以base64编码的字符串或图片URI形式返回。 简单的范例: navigator.camera.getPicture( c
摄像头 打开摄像头 Tida.photo({ // 暂不支持参数传入 }, function (data) { if (data.errorCode) { console.error(data.errorCode, data.errorMessage); } else { var img = document.createElement('i
本类用于展示本地摄像头信号 start(cfg) 开始展示摄像头 具体cfg的类型如下 属性 类型 名称 备注 identifier string 信号源标识符 如传入“”则默认为本地摄像头 width number 组件宽 height number 组件高 needFaceTracker boolean 是否开启人脸检测 skipFaceTrackerNum number 人脸检测帧频 pos