编程语言
首页 > 编程语言> > android-Google GDK:通过语音触发或菜单调用呼叫应用程序的差异会影响相机服务吗?

android-Google GDK:通过语音触发或菜单调用呼叫应用程序的差异会影响相机服务吗?

作者:互联网

我正在尝试创建一个使用Camera服务显示预览的Glass GDK应用.不幸的是,我目前有一个错误,当尝试使用Camera.open()打开Camera时抛出RuntimeException.通过语音触发器打开活动时,我只会遇到此错误,而不能从“启动器”菜单中选择该应用程序.

通过此菜单启动“活动”与语音触发器的方式有何不同?

一些相关代码如下.

@Override
public void onCreate(Bundle savedInstanceState) {
    mGestureDetector = createGestureDetector(this);
    super.onCreate(savedInstanceState);
    ctx = this;
    act = this;
    setContentView(R.layout.activity_main);
    preview = new Preview(this, (SurfaceView)findViewById(R.id.surfaceView));
    ((FrameLayout) findViewById(R.id.preview)).addView(preview);
    preview.setKeepScreenOn(true);
}

@Override
protected void onResume() {
    super.onResume();
    try {
        if (camera == null) {
        Log.d(TAG, "Opening a camera on resume.");
        camera = Camera.open();
        preview.setCamera(camera);
        camera.startPreview();
        }
    } catch(java.lang.RuntimeException e) {
        Log.e(TAG, e.getMessage());
    }
}

@Override
protected void onPause() {
    if(camera != null) {
        camera.stopPreview();
        preview.setCamera(null);
        Log.d(TAG, "Releasing a camera on pause.");
        camera.release();
        camera = null;
    }
    super.onPause();
}

@Override
protected void onDestroy() {
    if(camera != null) {
        camera.stopPreview();
        preview.setCamera(null);
        Log.d(TAG, "Releasing a camera on destory.");
        camera.release();
        camera = null;
    }
    super.onDestroy();
}

解决方法:

由于使用语音触发器时该按钮不起作用,因此听起来像是一种可能的竞赛情况,即在屏幕上显示您的活动时麦克风没有松开.

您可以尝试使用指数补偿来捕获摄像机的方法吗?基本上是尝试捕获相机,如果遇到异常,请在短时间后重试,以固定的尝试次数稍微增加等待时间.

还请考虑在issue tracker上提交错误,尤其是如果您可以可靠地确定在获取摄像机/麦克风之前需要多少延迟.

标签:camera,google-gdk,android,google-glass
来源: https://codeday.me/bug/20191030/1965794.html