gpt4 book ai didi

android - 谷歌 GDK : Differences in calling app with voice trigger or menu affecting camera service?

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:54 25 4
gpt4 key购买 nike

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

通过此菜单启动 Activity 的方式与通过语音触发器启动的方式有区别吗?

部分相关代码如下。

@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();
}

最佳答案

由于它在使用语音触发器时不起作用,这听起来像是一种可能的竞争条件,即当您的 Activity 显示在屏幕上时麦克风还没有松开。

您能否尝试一种使用指数退避来捕获相机的方法?基本上 try catch 相机,如果出现异常,请在短时间后重试,稍微增加固定尝试次数的等待时间。

还请考虑在 issue tracker 上提交错误,特别是如果您能够可靠地找出在获取相机/麦克风之前需要多少延迟。

关于android - 谷歌 GDK : Differences in calling app with voice trigger or menu affecting camera service?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20153535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com