2017-02-09 2 views
0

У меня есть приложение, которое использует старый API-интерфейс камеры. Все работает отлично на большинстве устройств, однако на некоторых он будет продолжать просмотр даже после захвата изображения. Обратный вызов изображения по-прежнему вызывается, но предварительный просмотр не останавливается. Я действительно не хочу, чтобы преобразовать данные изображения в растровое изображение и отобразить его, поскольку он имеет второе или около того отставание и выглядит плохо. Мне было интересно, есть ли какие-нибудь проблемы для устройств, на которых он не работает?API-интерфейс камеры не останавливается после захвата

Мои кнопки захвата вызывает следующий метод

private void photoCapture() 
{ 
    if (mCamera == null) 
     return; 
    toggleBar(); 
    mCamera.takePicture(null, null, mPicture); 
    takenPicture = true; 
} 

Вот мой обратный вызов

private Camera.PictureCallback mPicture = new Camera.PictureCallback() { 
    @Override 
    public void onPictureTaken(byte[] data, Camera camera) { 
     imageData = data; 
     Bitmap bMap = BitmapFactory.decodeByteArray(data, 0, data.length); 
     if (currentCameraId == Camera.CameraInfo.CAMERA_FACING_FRONT) { 
      frontFacing = true; 
     } 
    } 
}; 

Я был под впечатлением, что метод takePicture будет автоматически остановить просмотр? Нет?

Благодаря

+0

Пожалуйста, разместите код, который вы используете. Здесь может быть не так много миллионов. –

+0

Просто отредактирован. Пожалуйста, дайте мне знать, если вам нужно что-нибудь еще. На устройствах, где он не замерзает, он по-прежнему вызывает метод обратного вызова. Просто не останавливает просмотр автоматически, как это делают некоторые устройства. @bremen_matt – drew

ответ

0

Если вы показываете поверхность для предварительного просмотра камеры, то вы должны вызвать camera.stopPreview(), если вы хотите, чтобы остановить просмотр. В противном случае предварительный просмотр будет продолжаться до тех пор, пока вид не будет уничтожен.