Как правильно заблокировать / разблокировать камеру при рисовании на SurfaceView? - PullRequest
1 голос
/ 01 июня 2011

Я создал действие с функциональностью дополненной реальности. Частично это должно отображать камеру телефона в фоновом режиме (это SurfaceView в макете Activity).

в действии onCreate () метод, который я делаю:

surfaceHolder = surfaceView.getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceHolder.addCallback(this);

Мои обратные вызовы:

@Override
public void surfaceCreated(SurfaceHolder holder) {

    try {
        camera = Camera.open();
        camera.setDisplayOrientation(90);
        camera.setPreviewDisplay(holder);
    } catch (Exception e) {
        // e.printStackTrace();
    }
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
        int height) {
    camera.startPreview();
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    camera.stopPreview();
    camera.release();
}

Прямо сейчас, когда я закрываю свое приложение (оставляя его в фоновом режиме), приложение Камера не работает, потому что Камера все еще заблокирована внутри моего приложения.

Как реализовать методы onResume () onPause () для блокировки / разблокировки камеры?

Кроме того, если оставить камеру заблокированной в приложении, она займет около 5% процессорного времени в Galaxy S, а после того, как я вернусь к своему приложению, при попытке camera.startPreview ();

Помощь!

1 Ответ

0 голосов
/ 02 июня 2011

Просто добавьте что-то похожее на обратный вызов surfaceCreated:

    if (camera != null) {
        camera.release();
    }
    camera = Camera.open();
    camera.setDisplayOrientation(90);
    try {
        camera.setPreviewDisplay(holder);
    } catch (Exception e) {
    }

А затем внутри onPause () добавьте релиз и вызовите обратный вызов:

    camera.release();
    surfaceCreated(surfaceHolder);

Теперь это работает как шарм!Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...