Android 照片属性写入经纬度

image.png

拍照后保存到本地文件,借助ExifInterface
保存格式必须是JPEG,否则不支持写入编辑

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);

写入方法很简单

try {
    //保存照片的经纬度信息
    ExifInterface exif = new ExifInterface(file.getAbsolutePath());
    exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, ConvertUtils.convertToDegree(116.2353515625));
    exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, ConvertUtils.convertToDegree(39.5379397452));
    exif.saveAttributes();
    //打印结果
    String latValue = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE);
    String lngValue = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE);
    Log.i(TAG, "onCameraData: " + ConvertUtils.convertToCoordinate(latValue) + "--" + ConvertUtils.convertToCoordinate(lngValue));
} catch (IOException e) {
    e.printStackTrace();
}

ConvertUtils 工具类

public class ConvertUtils {
    //经纬度转度分秒
    public static String convertToDegree(double gpsInfo) {
        String dms = Location.convert(gpsInfo, Location.FORMAT_SECONDS);
        return dms;
    }

    //度分秒转经纬度
    public static Double convertToCoordinate(String stringDMS) {
        if (stringDMS == null) return null;
        String[] split = stringDMS.split(":", 3);
        return Double.parseDouble(split[0]) + Double.parseDouble(split[1]) / 60 + Double.parseDouble(split[2]) / 3600;
    }
}

搞定。 最后别忘了文件读写权限

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容