Wystąpił błąd "Błąd 5001" w aparacie podczas ładowania obiektu Aparat w mojej aplikacji na Androida.Błąd aparatu Android 5001
E/Camera: Error 5001
Nie mogę nawet wyjść z aplikacji przyciskiem "dom", to zawiesza się na 90 sekund. Nie mogę znaleźć żadnej dokumentacji dotyczącej tego błędu.
Co oznacza 5001?
po 90 sekundach, dzienniki logcat:
W/CameraBase: Camera service died!
Teraz nie mogę uruchomić aplikację normalnie. Ekran jest zielony i nie można załadować aparatu.
Restart ustalona, że problem aparatu, ale chciałbym wiedzieć:
- co właściwie stało
- jak uniknąć go
Urządzenie jest Moto X z systemem Android 4.4.2.
Dziękuję za wszelkie informacje.
EDIT
public final class BarcodePreview extends SurfaceView implements SurfaceHolder.Callback {
private Activity mActivity;
private SurfaceHolder mSurfaceHolder;
private Camera mCamera;
private PreviewCallback mPreviewCallback;
private AutoFocusCallback mAutoFocusCallback;
public BarcodePreview(final Activity activity, final Camera camera, final PreviewCallback previewCallback, final AutoFocusCallback autoFocusCallback) throws Exception {
super(activity);
mActivity = activity;
mCamera = camera;
mPreviewCallback = previewCallback;
mAutoFocusCallback = autoFocusCallback;
mSurfaceHolder = getHolder();
if (mSurfaceHolder == null) {
// ...
}
mSurfaceHolder.addCallback(this);
}
@Override
public void surfaceCreated(final SurfaceHolder surfaceHolder) {
try {
mCamera.setPreviewDisplay(surfaceHolder);
}
catch (Exception e) {
// ...
}
}
@Override
public void surfaceDestroyed(final SurfaceHolder surfaceHolder) {
// ...
}
@Override
public void surfaceChanged(final SurfaceHolder surfaceHolder, final int format, final int width, final int height) {
if (mSurfaceHolder.getSurface() == null) {
// ...
return ;
}
try {
mCamera.stopPreview();
// ...
mCamera.setPreviewDisplay(mSurfaceHolder);
mCamera.setPreviewCallback(mPreviewCallback);
mCamera.startPreview();
mCamera.autoFocus(mAutoFocusCallback);
}
catch (Exception e) {
// ...
}
}
}
Przełączałem się między aparatem w mojej aktywności i myślę, że musiałem wywołać 'release()' pomiędzy następującymi po sobie 'stopPreview()' i 'startPreview()'. – shkschneider
Nop, który powoduje 'AndroidRuntime: FATAL EXCEPTION: main' na niektórych urządzeniach. – shkschneider
Widziałem to też, to samo urządzenie i wersja Androida. Naprawiono go, wywołując 'mCamera.setPreviewDisplay' przed' mCamera.startPreview' –