2014-07-22 10 views
8

Sto usando questo codice per scattare foto e nell'emulatore funziona correttamente. Non funziona su dispositivi mobili fisici e ha un errore su Samsung Galaxy S4 e Sony Xperia Z2.scattare foto sul dispositivo reale

il mio codice:

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

pubblicare il tuo 'discarica logcat' – intrepidkarthi

+0

Non riesco a collegare il mio dispositivo a eclissi, prova il mio codice –

+1

Pubblica il dump quando sei in grado di collegarlo. Aiuteremo. – intrepidkarthi

risposta

2

prima essere sicuri permesso l'uso in manifesti

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

dopo che prima chiamata takePicture, chiamare startPreview come:

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(); 
}