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上提交错误,尤其是如果您可以可靠地确定在获取摄像机/麦克风之前需要多少延迟.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...