Android2.0后新增的一个类 相关Tag: TAG_DATETIME 时间日期 TAG_FLASH 闪光灯 TAG_GPS_LATITUDE 纬度 TAG_GPS_LATITUDE_REF 纬度参考 TAG_GPS_LONGITUDE 经度 TAG_GPS_LONGITUDE_REF 经度参考 TAG_IMAGE_LENGTH 图片长 TAG_IMAGE_WIDTH 图片宽 TAG_MAKE 设备制造商 TAG_MODEL 设备型号 TAG_ORIENTATION 方向 TAG_WHITE_BALANCE 白平衡 /** * 获取照片其他附属属性 * * @param uri */ public void getImageExifInterfaceData(Uri uri) { ExifInterface exifInterface = null; try { String path = CommonUtil.getRealFilePathFromUri(this, uri);//获取图片文件的绝对路径 exifInterface = new ExifInterface(path); String datetime = exifInterface.getAttribute(ExifInterface.TAG_DATETIME);// 拍摄时间 String deviceName = exifInterface.getAttribute(ExifInterface.TAG_MAKE);// 设备品牌 String deviceModel = exifInterface.getAttribute(ExifInterface.TAG_MODEL); // 设备型号 String latValue = exifInterface.getAttribute(ExifInterface.TAG_GPS_LATITUDE); String lngValue = exifInterface.getAttribute(ExifInterface.TAG_GPS_LONGITUDE); String latRef = exifInterface.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF); String lngRef = exifInterface.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF); if (latValue != null && latRef != null && lngValue != null && lngRef != null) { try { float output1 = convertRationalLatLonToFloat(latValue, latRef); float output2 = convertRationalLatLonToFloat(lngValue, lngRef); } catch (IllegalArgumentException e) { e.printStackTrace(); } } } catch (IOException e) { e.printStackTrace(); } } /** * 目前想存储Double类型坐标,但是通过getAttribute(String tag)取出来的内容形如: 112/1,39/1,288172/3278,其实就是“度分秒”拆分后,分母除以1的结果 * @param rationalString * @param ref * @return */ private static float convertRationalLatLonToFloat( String rationalString, String ref) { String[] parts = rationalString.split(","); String[] pair; pair = parts[0].split("/"); double degrees = Double.parseDouble(pair[0].trim()) / Double.parseDouble(pair[1].trim()); pair = parts[1].split("/"); double minutes = Double.parseDouble(pair[0].trim()) / Double.parseDouble(pair[1].trim()); pair = parts[2].split("/"); double seconds = Double.parseDouble(pair[0].trim()) / Double.parseDouble(pair[1].trim()); double result = degrees + (minutes / 60.0) + (seconds / 3600.0); if ((ref.equals("S") || ref.equals("W"))) { return (float) -result; } return (float) result; }
Android中通过Exifinterface读取图片地理位置信息
最新推荐文章于 2024-04-17 17:19:02 发布