当前位置: 首页 > 知识库问答 >
问题:

摄像头API工作示例?

蓬新
2023-03-14

这是我第一次在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;  
}

<代码><代码>

但是应用程序有时会崩溃,但我不明白为什么:(
(竖屏时预览方向不好)

共有2个答案

栾烨华
2023-03-14

这里有几个例子:

https://stackoverflow.com/a/19312182/192373
https://stackoverflow.com/a/20883662/192373
https://stackoverflow.com/a/19599599/192373

选择一个适合您需要的(更改相机方向,或保持活动固定,或其他)。

商和雅
2023-03-14

这里是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