首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前端Camera2 API GLSurfaceview

前端Camera2 API GLSurfaceview
EN

Stack Overflow用户
提问于 2016-06-01 14:44:00
回答 3查看 1.7K关注 0票数 2

我正试图使用一个实际的设备通过Camera2 API访问前面的摄像头

这个问题发生在试图

CameraManager.openCamera(.,.)

代码语言:javascript
复制
try {
        CameraCharacteristics characteristics = manager.getCameraCharacteristics(mCameraID);
            if (!mCameraOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) {
                throw new RuntimeException("Time out waiting to lock camera opening.");
            }
            manager.openCamera(mCameraID, mStateCallback, mBackgroundHandler);
        } catch (CameraAccessException e) {
            Log.e("mr", "OpenCamera - Camera Access Exception");
        } catch (IllegalArgumentException e) {
            Log.e("mr", "OpenCamera - Illegal Argument Exception");
        } catch (SecurityException e) {
            e.printStackTrace();
            Log.e("mr", "OpenCamera - Security Exception:");
        } catch (InterruptedException e) {
            Log.e("mr", "OpenCamera - Interrupted Exception");
        }

凯美拉马纳格说

I/CameraManagerGlobal:连接照相机服务

它来自于这个CameraManager.java函数

代码语言:javascript
复制
private void connectCameraServiceLocked() {
            // Only reconnect if necessary
            if (mCameraService != null) return;

            Log.i(TAG, "Connecting to camera service");

那么我的GLSurfaceView仍然是空白

AndroidMainfest.xml

代码语言:javascript
复制
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.permission.PROVIDE_BACKGROUND" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

P.S.:

  • 它和后面的摄像机一起工作
  • 它与nexus 6 API 23仿真器一起工作。
  • 运行时对Android请求权限
  • 我用GLSurfaceView做取景器
  • 前摄像头使用普通的CameraAPI和TextureView,在同一台设备上工作得很好。
  • 尝试卸载/重新引导/清除缓存
  • 我使用的设备是索尼Z5的特价

我正在使用这个例子,在Android 21或更高版本上使用OpenGL ES 2.0渲染摄像机预览

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-03 19:52:02

最后,我把索尼Xperia Z5的溢价换成了另一款设备,而且效果很好。看起来,就像我在下面的链接中看到的那样,索尼在新API方面面临着一些问题:

索尼Camera2 API限制

可能会有一些工作要做,但无论如何,我正在为特定的目的制作一个应用程序,我不希望它在所有的设备上工作。

票数 0
EN

Stack Overflow用户

发布于 2016-06-03 00:59:03

如果您只是在复制该示例,我注意到它有以下一行:

代码语言:javascript
复制
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);

前摄像头可能不支持这一点,因为它可能没有闪光灯。您需要检查哪些AE模式实际上是支持的-同样适用于不同的其他设置的样本集,在那里它没有检查设备实际支持什么。

尽管如此,如果值是坏的,您应该会得到一个错误,但是它可能会出现在CameraCaptureSession.CaptureListener.onCaptureFailed,上,并且示例没有监听这些错误。如果你查看所有的日志记录,而不仅仅是你自己的应用程序日志,相机服务中可能也有一些日志。

但是试着移除那条线,看看它是否有效。

票数 1
EN

Stack Overflow用户

发布于 2018-01-22 03:58:40

首先获得这样的Camera服务

代码语言:javascript
复制
CameraManager cameraManager = (CameraManager)getSystemService(Context.CAMERA_SERVICE);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37571920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档