2012-02-05 67 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;