如何使用Intent(MediaStore.ACTION_IMAGE_CAPTURE)获取图片中的GPS数据?

How to use Intent(MediaStore.ACTION_IMAGE_CAPTURE) and get GPS data in the picture?

有没有办法获取使用 Intent(MediaStore.ACTION_IMAGE_CAPTURE) 和 Exif 数据中已设置 GPS 位置的库存相机应用拍摄的照片?

我的应用请求

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

在清单中还有

ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION)
ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)

在代码中,但我收到的照片不包含位置数据。当我直接用相机拍照时,照片中有位置信息。

编辑:我忘了补充一点,我正在使用 Nexus 6P 对其进行测试,当我将随附的相机应用程序 (3.2.045) 用于 ACTION_IMAGE_CAPTURE 意图时,我看到了 "location pin" 在显示相机取景器之前在系统托盘中停留一秒钟。这让我相信可能缺少一个设置或参数可以在图片文件中写入位置信息。

首先,没有单"stock camera app"。有数千种 Android 设备型号。它们将附带数百种不同的 "stock camera app" 实现,因为大多数设备制造商都创建了自己的实现(并且,就三星而言,他们的设备中有 许多 此类相机应用程序)。加上ACTION_IMAGE_CAPTURE不一定会用到"stock camera app"。相反,它使用用户想要的任何东西,这可能是从 Play 商店或其他地方安装的第三方相机应用程序。

您的应用无法请求相机应用将 EXIF 位置数据添加到照片中,并且相机应用也不需要包含 EXIF 位置数据。我对你看到的结果一点也不惊讶。

欢迎您自己获取位置数据,并在需要时使用 an EXIF library 将该数据添加到照片中。