We wszystkich telefonach, które wypróbowałem, w tym w Galaxy Nexus z interfejsem API 2.3.7 i 4.0 po metodzie takePicture, widok powierzchni zmienia się na obraz, który został zrobiony, "Przegląd obrazów".Przegląd obrazu nie jest wyświetlany po camera.takePicture
Przetestowałem na tych tabletach oraz przegląd obraz nie pojawi się: XOOM API 3.1 Galaxy Tab 10.1 API 3.1 Galaxy Tab 10.1 API 3,2
surfaceView = (SurfaceView)findViewById(R.id.surfaceView);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
...
public void takePicture() {
cam.takePicture(this, null, this); //Shuttercallback, RawCallback, JpegCallback
}
...
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// Stop preview before changing camera parameters
if(isPreviewRunning) {
this.cam.stopPreview();
}
Camera.Parameters p = this.cam.getParameters();
LogUtils.info("CheckCapture", "Preview Size: " + String.valueOf(width) +"x" + String.valueOf(height));
p.setPreviewSize(width, height);
//Set picture size to a multiple of previewSize to maintain aspect ratio AND minimum capture width
//LogUtils.info("CheckCapture", "Picture Size: " + String.valueOf(width*factor) +"x" + String.valueOf(height*factor));
p.setPictureSize(width, height);
p.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
//Set picture format (we can check device capabilities, but all devices at API level 8 should support JPEG)
p.setPictureFormat(PixelFormat.JPEG);
//Set new camera parameters
try {
this.cam.setParameters(p);
}catch (Exception e) {
e.printStackTrace();
}
//Setup preview display on our surfaceViewHolder
try {
this.cam.setPreviewDisplay(surfaceHolder);
} catch (IOException e) {
e.printStackTrace();
}
//Start preview
this.cam.startPreview();
this.isPreviewRunning = true;
}
Wydaje się, że problem mam [tutaj] (http://stackoverflow.com/questions/11676726/its-a-kind-of-magic-videoview-and-displaying-videos- on-android-3-1-vs-4-1), ale z filmami i tymi samymi urządzeniami. Naprawiłeś to? – 2dvisio
Niestety, poddałem się i podjąłem podejście podobne do dinesha. Pobierz obraz z przechwytywania i pokaż go w ImageView w taki sposób, 'imageView.setImageBitmap (ImageUtils.jpegDecode (dane));' –