安卓相机的人像定位

我在我的应用程序中使用相机。 我只是用intent启动相机

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

捕获的图像自动进入landscape view 。 如何让cameraportrait view捕捉图像

Solutions Collecting From Web of "安卓相机的人像定位"

如果设备具有v2.2或更高版本,则可以使用camera.setDisplayOrientation(90)将相机方向旋转为纵向。 在v2.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; } 

在这里,这个代码适用于Android相机应用程序[肖像模式]中支持的所有types的方向。

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