2014-07-22 8 views
8

Używam tego kodu do robienia zdjęć, a na emulatorze działa poprawnie. To nie działa na fizycznych urządzeniach mobilnych i ma błąd na Samsung Galaxy S4 i Sony Xperia Z2.Zdjęcie zrobione na prawdziwym urządzeniu

mój kod:

private void takePicture() { 
    openCamera(); 
    camera.takePicture(new ShutterCallback() { 
     @Override 
     public void onShutter() { 
     } 
    }, new PictureCallback() { 
     @Override 
     public void onPictureTaken(byte[] data, Camera camera) { 
     } 
    }, new PictureCallback() { 
     @Override 
     public void onPictureTaken(byte[] data, Camera camera) { 
      Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,data.length); 
      img_screenshot.setImageBitmap(bitmap); 
      closeCamera(); 
     } 
    }); 
} 

private void openCamera() { 
    camera = Camera.open(); 
    Camera.Parameters params = camera.getParameters(); 
    List<Size> sizes = params.getSupportedPictureSizes(); 
    Size mSize = sizes.get(0); 
    params.setPictureSize(mSize.width, mSize.height); 
    camera.setParameters(params); 
} 

private void closeCamera() { 
    camera.release(); 
} 
+1

wysłać zrzut 'logcat' – intrepidkarthi

+0

Nie mogę podłączyć urządzenia do zaćmienia, przetestuj mój kod –

+1

Opublikuj zrzut, gdy będziesz w stanie go podłączyć. Pomożemy. – intrepidkarthi

Odpowiedz

2

najpierw upewnij pozwolenie wykorzystanie w oczywisty

<uses-permission android:name="android.permission.CAMERA" /> 

potem przed wywołaniem takePicture, zadzwoń startPreview jak:

private void takePicture() { 
    openCamera(); 
    camera.startPreview(); 
    camera.takePicture(new ShutterCallback() { 

     @Override 
     public void onShutter() { 
     } 
    }, new PictureCallback() { 

     @Override 
     public void onPictureTaken(byte[] data, Camera camera) { 
     } 
    }, new PictureCallback() { 

     @Override 
     public void onPictureTaken(byte[] data, Camera camera) { 
      Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,data.length); 
      img_screenshot.setImageBitmap(bitmap); 
      closeCamera(); 
     } 
    }); 
} 

private void openCamera() { 
    camera = Camera.open(); 
    Camera.Parameters params = camera.getParameters(); 
    List<Size> sizes = params.getSupportedPictureSizes(); 
    Size mSize = sizes.get(0); 
    params.setPictureSize(mSize.width, mSize.height); 
    camera.setParameters(params); 
} 

private void closeCamera() { 
    camera.release(); 
}