2012-04-24 22 views
5

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; 
} 
+0

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

+0

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));' –

Odpowiedz

3

na btn_click.onclickListener użytku metoda zwrotna jak postępować

_btn_click.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      ShutterCallback shutterCallBack = new ShutterCallback() { 
       @Override 
       public void onShutter() {} 
      }; 

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

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

        Bitmap capturedBitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 

       } 
      }; 
      setFlashMode(); 
      camera.takePicture(shutterCallBack, pictureCallBack, 
        pictureCallBackJPG); 
      showProgressDialog("Bitte warten", CameraCaptureActivity.this); 
     } 
    }); 

w tej głównej linii kodu jest

bitmapy capturedBit map = BitmapFactory.decodeByteArray (dane, 0, data.length);

użyj capturedBitmap w imageview.setImageBitmap (captureBitmap); aby wyświetlić obraz.

Szczęśliwy Coding

+0

Próbowałem tego uniknąć, ale może to być jedyna odpowiedź. Dzięki! –

+0

Najbardziej miła droga –

Powiązane problemy