Я пытаюсь создать приложение Glass GDK, которое использует службу камеры для предварительного просмотра. К сожалению, в настоящее время у меня есть ошибка, из-за которой возникает исключение RuntimeException при попытке открыть камеру с помощью Camera.open(). Я сталкиваюсь с этой ошибкой только при открытии активности с помощью голосового триггера, а не при выборе приложения в меню «лаунчер».
Есть ли разница в том, как действие запускается через это меню по сравнению с голосовым триггером?
Часть соответствующего кода приведена ниже.
@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();
}