2013-08-24 6 views
0

Существует проблема с пользовательским приложением камеры и телефоном Samsung Galaxy S4. Иногда, когда приложение делает снимок, телефон S4 может принимать сразу несколько снимков. Иногда бывает, что тот же самый код работает для других устройств. Вот код, который делает снимок:Ошибка Android Galaxy S4

Parameters params = camera.getParameters(); 
params.setRotation(rotation); 
camera.setParameters(params); 
camera.autoFocus(new Camera.AutoFocusCallback() { 

    @Override 
    public void onAutoFocus(boolean success, Camera camera) { 
     camera.takePicture(shutterCallback, null, PreviewCallback.this); 
    } 
}); 

@Override 
public void onPictureTaken(byte[] data, Camera camera) { 
    pictureCallback.onPictureTaken(previewData, data); 
    camera.startPreview(); 
    Parameters params = camera.getParameters(); 
    params.setRotation(rotationOrig); 
    camera.setParameters(params); 
} 

Вращение предназначено только для правильных тегов вращения exif.

ответ

3

contract for Camera.AutoFocusCallback.onAutoFocus не предполагает, что он будет запущен только один раз после вызова камеры .autoFocus(). Итак, я бы просто добавил логическую переменную, например.

camera.autoFocus(new Camera.AutoFocusCallback() { 

    boolean once = true; 
    @Override 
    public void onAutoFocus(boolean success, Camera camera) { 
    if (once && success) { 
     camera.takePicture(shutterCallback, null, PreviewCallback.this); 
     once = false; 
     } 
    } 
}); 

BTW, вы должны проверить первое значение параметра - если автофокус не удалось, вероятно, вы не хотите, чтобы сделать снимок в первую очередь.

+0

Спасибо, я попробую – nemezis

+1

Это сработало как шарм! – nemezis

Смежные вопросы