2014-03-02 153 views
0

我正在编写一个依赖用户定期拍照的Android应用。已经有文件证明,如果从前置摄像头拍摄照片,则Android将返回翻转的图像,其旋转90度。发生这种情况时,我可以成功调整图片的方向。问题是我不知道是什么时候使用前置摄像头。通过了解在拍摄照片时使用前置摄像头的时间,我可以确定是否应该重新定位它。确定Android摄像头活动使用的摄像头

有没有什么办法可以确定,最好在onActivityResult()期间使用哪台相机?是否有另一种练习用于帮助确定和修复图片方向?

这是我的Camera活动启动代码。很直白:

private void startCameraIntent(String name) { 
    try { 
     String fileName = MontageConstants.APP_DATA_FOLDER + "/" + name + "/" + new Date().getTime() + ".jpg"; 
     Uri fileUri = Uri.fromFile(new File(fileName)); 

     Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 
     startActivityForResult(takePictureIntent, TAKE_PIC_ACTIVITY_REQUEST_CODE); 
    } catch (Exception ex) { 
     Toast.makeText(this, "Couldn't take picture", Toast.LENGTH_LONG).show(); 
    } 
} 

谢谢!

+1

见我的回答是:http://stackoverflow.com/questions/22120421/how-to-rotate-android-device-camera-previewlibgdx/22120629#22120629 也许会对你有所帮助。 –

+0

这让我失去了我需要的确切路径。非常感谢你! –

回答

1

感谢Navjot Singh--我发现了我在他发布的答案中需要的信息:How to rotate android device camera preview(libgdx)。实际上,您可以使用类ExifInterface读取存储的JPEG文件中的Exif标签。由于我在操纵它们之前将图片存储到文件中,因此我只是插入文件路径,获取了方向,并进行了相应的旋转/调整。

  ExifInterface ei = new ExifInterface(fileName); 
      orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);