7

我在我的应用程序中使用相机。我只是用intent启动相机安卓相机人像方向

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
     startActivityForResult(cameraIntent, 101); 

所拍摄的图像自动出现在landscape view。我如何让camera捕获图像portrait view

+0

我面临同样的问题,请告诉我你是怎么解决的,而不是使用默认的摄像头应用程序的该.... – 2012-10-08 11:15:41

+0

@SivaK,我创建了自己的相机视角捕捉图像 – 2012-10-08 11:27:23

+1

Seshu维奈 - 为感谢您的回复,是否有任何示例代码或博客创建我们自己的相机视图 – 2012-10-08 12:09:57

回答

2

试试这个。

 Parameters param = mCamera.getParameters(); 

     switch(mDisplay.getRotation()){ 
     case Surface.ROTATION_0: 
      if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO){ 
       mCamera.setDisplayOrientation(90); 
       Log.d("Rotation_0", "whatever"); 
      } 
      else{ 
       Log.d("Rotation_0", "whatever"); 
       param.setRotation(90); 
       mCamera.setParameters(param); 
      } 
      break; 
     case Surface.ROTATION_90: 
      if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO){ 
       mCamera.setDisplayOrientation(0); 
       Log.d("Rotation_0", "whatever"); 
      } 
      else{ 
       Log.d("Rotation_90", "whatever"); 
       param.setRotation(0); 
       mCamera.setParameters(param); 
      } 
      break; 
     } 
1

此处,此代码适用于Android相机应用[肖像模式]中支持的所有类型的方向。

int rotation = this.getWindowManager().getDefaultDisplay().getRotation(); 
int degrees = 0; 

switch (rotation) { 

    case Surface.ROTATION_0: 
     degrees = 0; 
     break; 

    case Surface.ROTATION_90: 
     degrees = 90; 
     break; 

    case Surface.ROTATION_180: 
     degrees = 180; 
     break; 

    case Surface.ROTATION_270: 
     degrees = 270; 
     break; 

}