2014-07-22 5 views
8

Ich benutze diesen Code für Fotos und im Emulator funktioniert es richtig. Es funktioniert nicht auf physischen mobilen Geräten und hat einen Fehler auf dem Samsung Galaxy S4 und Sony Xperia Z2.nehmen Sie das Bild abgestürzt auf dem echten Gerät

mein Code:

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

Ihre 'logcat' Dump posten – intrepidkarthi

+0

Ich kann mein Gerät nicht mit Eclipse verbinden, bitte testen Sie meinen Code –

+1

Veröffentlichen Sie den Dump, wenn Sie ihn verbinden können. Wir werden helfen. – intrepidkarthi

Antwort

2

bevor Anruf Takepicture danach

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

in manifest Erlaubnis sicher Gebrauch sein, rufen Sie startPreview wie:

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