Android摄像头拍照经纬度属性
时间: 2023-08-01 09:06:00 浏览: 168
Android摄像头拍照时可以通过调用系统的位置服务获取当前的经纬度信息,并将其添加到照片的EXIF信息中。在拍照之前,可以通过获取LocationManager实例并注册LocationListener监听器来获取当前位置信息。当拍照完成后,可以通过ExifInterface类将经纬度信息添加到照片的EXIF信息中,具体方法如下:
1. 获取当前位置信息
```java
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
// 获取经纬度信息
double latitude = location.getLatitude();
double longitude = location.getLongitude();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onProviderDisabled(String provider) {}
};
// 注册位置监听器
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
```
2. 将经纬度信息添加到照片的EXIF信息中
```java
ExifInterface exif = new ExifInterface(photoPath);
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, decimalToDMS(latitude));
exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF, latitude > 0 ? "N" : "S");
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, decimalToDMS(longitude));
exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF, longitude > 0 ? "E" : "W");
exif.saveAttributes();
```
其中,decimalToDMS()方法将十进制经纬度转换为度分秒格式的字符串,例如:35.12345678901234567890 转换为 "35/1,7/1,7385/10000"。
阅读全文