第一步随便找个权限框架

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!--    获取图片位置--><uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />

,图片位置权限必须,

 PermissionUtils.permission("android.permission.ACCESS_MEDIA_LOCATION").callback(new PermissionUtils.SimpleCallback() {@Overridepublic void onGranted() {}@Overridepublic void onDenied() {ToastUtils.showShort("onDenied");}}).request();
         ToastUtils.showShort("onGranted");Album.image(MainActivity.this) // Image selection..multipleChoice().camera(true).columnCount(3)//3 行.selectCount(1).checkedList(mAlbumFiles).onResult(new Action<ArrayList<AlbumFile>>() {@Overridepublic void onAction(@NonNull ArrayList<AlbumFile> result) {try {AlbumFile albumFile = result.get(0);System.out.println(" albumFile  1: " + albumFile.getPath());Uri uri = UriUtils.file2Uri(new File(albumFile.getPath()));InputStream inputStream = MainActivity.this.getContentResolver().openInputStream(uri);ExifInterface exifInterface;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {exifInterface = new ExifInterface(inputStream);String TAG_GPS_LATITUDE = exifInterface.getAttribute(ExifInterface.TAG_GPS_LATITUDE);String TAG_GPS_LONGITUDE = exifInterface.getAttribute(ExifInterface.TAG_GPS_LONGITUDE);float[] format = format(TAG_GPS_LATITUDE, TAG_GPS_LONGITUDE);System.out.println(" TAG_GPS_LATITUDE " + format[0] + "    TAG_GPS_LONGITUDE" + format[1]);} else {exifInterface = new ExifInterface(albumFile.getPath());float[] output = new float[2];exifInterface.getLatLong(output);System.out.println(" output : " + output[0] + "    " + output[1]);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}//                                        try {
//                                            Metadata metadata = ImageMetadataReader.readMetadata(new File(albumFile.getPath()));
//                                            Collection<GpsDirectory> directoriesOfType = metadata.getDirectoriesOfType(GpsDirectory.class);
//                                            Iterator<GpsDirectory> iterator = directoriesOfType.iterator();
//                                            System.out.println("xxxxxxxxxxxxxxxxx");
//                                            while (iterator.hasNext()) {
//                                                GpsDirectory next = iterator.next();
//                                                double latitude = next.getGeoLocation().getLatitude();
//                                                System.out.println("latitude" + latitude);
//                                            }
//                                        } catch (ImageProcessingException e) {
//                                            e.printStackTrace();
//                                        } catch (IOException e) {
//                                            e.printStackTrace();
//                                        }}}).onCancel(new Action<String>() {@Overridepublic void onAction(@NonNull String result) {}}).start();
 public float[] format(String TAG_GPS_LATITUDE, String TAG_GPS_LONGITUDE) {TAG_GPS_LATITUDE = TAG_GPS_LATITUDE.replace("/", ",");TAG_GPS_LONGITUDE = TAG_GPS_LONGITUDE.replace("/", ",");String[] lat = TAG_GPS_LATITUDE.split(",");String[] lng = TAG_GPS_LONGITUDE.split(",");Float latD = 0f;Float latM = 0f;Float latS = 0f;Float lngD = 0f;Float lngM = 0f;Float lngS = 0f;if (lat.length >= 2) {latD = Float.parseFloat(lat[0]) / Float.parseFloat(lat[1]);}if (lat.length >= 4) {latM = Float.parseFloat(lat[2]) / Float.parseFloat(lat[3]);}if (lat.length >= 6) {latS = Float.parseFloat(lat[4]) / Float.parseFloat(lat[5]);}if (lng.length >= 1) {lngD = Float.parseFloat(lng[0]) / Float.parseFloat(lng[1]);}if (lng.length >= 2) {lngM = Float.parseFloat(lng[2]) / Float.parseFloat(lng[3]);}if (lng.length >= 3) {lngS = Float.parseFloat(lng[4]) / Float.parseFloat(lng[5]);}float latitude = latD + latM / 60 + latS / 3600;float longitude = lngD + lngM / 60 + lngS / 3600;return new float[]{latitude, longitude};}

另一种转换方法

private static double 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 result;}
  double LATITUDE = convertRationalLatLonToFloat(TAG_GPS_LATITUDE, ExifInterface.TAG_GPS_LATITUDE_REF);double LONGITUDE = convertRationalLatLonToFloat(TAG_GPS_LONGITUDE, ExifInterface.TAG_GPS_LONGITUDE_REF);

实际上获取的位置还是差好几条街,不过统计市-区可以了

Android 查看图片的经纬度相关推荐

  1. android 查看图片、保存图片

    配置photoview-library-1.2.2.jar 到libs photoview-library-1.2.2.jar 下载地址  http://pan.baidu.com/s/1nviEKt ...

  2. Android 查看图片的位置信息

    图片信息都保存在文件头部,以 Exif (Exchangeable image file format 可交换图像文件格式)格式保存,包含图片位置信息.在拍照时如果开启记录位置则可以获取到相应信息.获 ...

  3. android html图片点击事件,Android TextView加载HTMl图文之添加点击事件和查看图片

    前言 用TextView显示Html图文,每一个需求都是需要探索的,不再是简单的添加点击事件就可以了. 1.如何添加点击事件 这里要使用上在Html.forHtml()方法中的第四个参数:Html.T ...

  4. Android使用ACTION_VIEW查看图片和视频

    Android使用ACTION_VIEW查看图片和视频 一.目标 二.实现方案 三.最终代码 四.过程回顾 五.接下来 六.Finally 神马笔记已经实现在笔记中插入图片和视频,但是不能全屏查看. ...

  5. android仿微信头像点击放大查看,仿微信查看图片(带大小图切换查看)

    之前一直想仿微信朋友圈那样做个图片查看,但是看了网上很多demo都觉得比较简单,少了从小图切换到大图的加载过程,都只是在所有预览里加载大图,点击进去也是加载大图,于是在网上下载了别人的demo自己修改 ...

  6. android 图片大小判断,Android列表查看图片大小

    我的列表视图中有一个问题,它包含一个ImageView和每个项目的几个TextView.Android列表查看图片大小 更多或更少的,有TextViews的两条线和一个ImageView的(XX)应该 ...

  7. Android Camera开发系列(下)——自定义Camera实现拍照查看图片等功能

    Android Camera开发系列(下)--自定义Camera实现拍照查看图片等功能 Android Camera开发系列(上)--Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片 上 ...

  8. Android多媒体功能开发(4)——调用系统Activity拍照、选择图片、查看图片、裁剪图片

    一.拍照 拍照界面就是调用系统照相机,动作为MediaStore.ACTION_IMAGE_CAPTURE.生成的照片有三种返回方式: 在调用拍照应用的Intent中通过EXTRA_OUTPUT属性设 ...

  9. Android简易图片管理器,一个简单仿微信朋友圈的图片查看器 PhotoViewer

    PhotoViewer 该图片查看器是模仿微信朋友圈查看图片编写 allprojects { repositories { ... maven { url 'https://jitpack.io' } ...

最新文章

  1. 苹果回应 XcodeGhost:暂未发现个人信息受影响
  2. Linux 命令 —— iostat I/O 和 CPU 监视工具
  3. android 智能家居 pdf,智能家居项目化教程.pdf
  4. PHP学习总结(11)——PHP入门篇之WAMPServer多站点配置
  5. Vue的v-if与v-show的区别
  6. 安装JDK_Tomcat
  7. echarts常用术语
  8. 51单片机中外部中断使用示例(Protues仿真)
  9. 音乐NFT平台的新浪潮,看mozik如何引领数字音乐时代革命
  10. 3dmax渲染计算机内存不足怎么办,3DMax渲染 提示内存不足怎么办
  11. DOS系统和Windows系统的联系、对比和发展历程
  12. 做嵌入式经典网站!(转)
  13. 如何使用计算机读文本,如何使用StrokeIt
  14. Jmeter自定义函数开发-------输入参数被分割
  15. 转载:深入浅出的讲解傅里叶变换
  16. shell脚本ping检测服务器连通性
  17. 自学用——html+css(要点)
  18. JAVA大数据(2)--ZooKeeper Java API使用
  19. 吴恩达卷积神经网络学习笔记(六)|CSDN创作打卡
  20. 如何在未越狱的iOS 设备上安装 ipa

热门文章

  1. 杭州亚运会和亚残运会赛会志愿者
  2. JS获取各种屏幕的宽度和高度
  3. Toastr消息提示框的使用
  4. BeanFactory源码体系解析--AutowireCapableBeanFactory二
  5. 合肥工业大学机器人足球仿真robcup作业三(python实现)附代码有注释
  6. Servlet学习,访问Html跳转Servlet程序显示404解决方案。
  7. 【数值分析】拉格朗日插值法与牛顿插值法的C++实现
  8. 微信|公众平台开发者文档
  9. 效率工具 : uTools
  10. 密码忘了怎么办?——如何找回多可系统的加密存储密码