2012-02-05 65 views
1

我有一个LG Optimus Black(android 2.2.2)客户,每次都有相机预览黑色。在其他设备上,所有工作正常。这款手机有没有问题,或者有人有解决方案?我的相机预览代码如下。LG Optimus Black上的相机预览

SurfaceHolder.Callback mySurfaceHolderCallback = new SurfaceHolder.Callback() 
{ 
    @Override 
    public void surfaceCreated(SurfaceHolder holder) 
    { 
     Log.i("GMG", "surfaceCreated"); 

     try 
     { 
      mCamera = Camera.open(); 
      holder.setFormat(PixelFormat.TRANSLUCENT); 
      mCamera.setPreviewDisplay(holder); 
     } 
     catch (IOException e) 
     { 
      if (mCamera == null) return; 
      mPreviewRunning= false; 
      mCamera.release(); 
      mCamera = null;    
     } 
    } 

    @Override 
    public void surfaceDestroyed(SurfaceHolder holder) 
    { 
     Log.i("GMG", "surfaceDestroyed"); 
     if (mCamera != null) 
     { 
      mCamera.stopPreview(); 
      mPreviewRunning= false; 
      mCamera.release(); 
      mCamera = null; 
     } 
    } 

    @Override 
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) 
    { 
     Log.i("GMG", "surfaceChanged"); 

     if (mCamera != null) 
     { 
      if(mPreviewRunning) mCamera.stopPreview(); 

      Camera.Parameters p = mCamera.getParameters(); 

      //Angolo visivo della fotocamera 
      angoloVisualeX = p.getHorizontalViewAngle(); 
      angoloVisualeY = p.getVerticalViewAngle(); 

      //Formati della preview 
      supportedPreviewSize = p.getSupportedPreviewSizes();    
      int preview_width = supportedPreviewSize.get(supportedPreviewSize.size()-1).width; 
      int preview_height = supportedPreviewSize.get(supportedPreviewSize.size()-1).height; 
      p.setPreviewSize(preview_width, preview_height); 

      //Set camera orientation 
      Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 
      if(display.getRotation() == Surface.ROTATION_0) mCamera.setDisplayOrientation(90); 
      if(display.getRotation() == Surface.ROTATION_270) mCamera.setDisplayOrientation(180); 

      mCamera.setParameters(p); 
      mCamera.startPreview(); 
      mPreviewRunning = true; 
     } 
    } 
}; 

此致敬礼。

回答

1

我已经解决了,我不知道为什么,但戕大相机预览我没有问题

变化

 int preview_width = supportedPreviewSize.get(supportedPreviewSize.size()-1).width; 
     int preview_height = supportedPreviewSize.get(supportedPreviewSize.size()-1).height; 

 int preview_width = supportedPreviewSize.get(0).width; 
     int preview_height = supportedPreviewSize.get(0).height;