我的编程空间,编程开发者的网络收藏夹
学习永远不晚

android应用如何将位置信息写入JPEG文件中

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

android应用如何将位置信息写入JPEG文件中

这篇文章给大家介绍android应用如何将位置信息写入JPEG文件中,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

核心代码

public String decimalToDMS(double coord) {String output, degrees, minutes, seconds;// gets the modulus the coordinate divided by one (MOD1).// in other words gets all the numbers after the decimal point.// e.g. mod := -79.982195 % 1 == 0.982195//// next get the integer part of the coord. On other words the whole// number part.// e.g. intPart := -79double mod = coord % 1;int intPart = (int) coord;// set degrees to the value of intPart// e.g. degrees := "-79"degrees = String.valueOf(intPart);// next times the MOD1 of degrees by 60 so we can find the integer part// for minutes.// get the MOD1 of the new coord to find the numbers after the decimal// point.// e.g. coord := 0.982195 * 60 == 58.9317// mod := 58.9317 % 1 == 0.9317//// next get the value of the integer part of the coord.// e.g. intPart := 58coord = mod * 60;mod = coord % 1;intPart = (int) coord;if (intPart < 0) {// Convert number to positive if it's negative.intPart *= -1;}// set minutes to the value of intPart.// e.g. minutes = "58"minutes = String.valueOf(intPart);// do the same again for minutes// e.g. coord := 0.9317 * 60 == 55.902// e.g. intPart := 55coord = mod * 60;intPart = (int) coord;if (intPart < 0) {// Convert number to positive if it's negative.intPart *= -1;}// set seconds to the value of intPart.// e.g. seconds = "55"seconds = String.valueOf(intPart);// I used this format for android but you can change it// to return in whatever format you like// e.g. output = "-79/1,58/1,56/1"output = degrees + "/1," + minutes + "/1," + seconds + "/1";// Standard output of D°M′S″// output = degrees + "°" + minutes + "'" + seconds + "\"";return output;}public void writeLatLonIntoJpeg(String picPath, double dLat, double dLon) {File file = new File(picPath);if (file.exists()) {try {ExifInterface exif = new ExifInterface(picPath);String tagLat = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE);String tagLon = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE);if (tagLat == null && tagLon == null) // 无经纬度信息{exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE,decimalToDMS(dLat));exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF,dLat > 0 ? "N" : "S"); // 区分南北半球exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE,decimalToDMS(dLon));exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF,dLon > 0 ? "E" : "W"); // 区分东经西经exif.saveAttributes();}} catch (Exception e) {}}}

测试代码

String strImgPath = getImageCachePath() + File.separator + "1.jpg";ExifInterface eif = new ExifInterface(strImgPath);String lat = eif.getAttribute(ExifInterface.TAG_GPS_LATITUDE);String latRef = eif.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF);String lon = eif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE);String lonRef = eif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF);System.out.println("Latitude Ref - " + latRef);System.out.println("Latitude - " + lat);System.out.println("Longitude Ref - " + lonRef);System.out.println("Longitude - " + lon);if (lat == null && lon == null) // 没有位置信息才写入{ writeLatLonIntoJpeg(strImgPath, 39.23456, 116.123456);}

第一次运行结果

05-22 17:36:24.566: I/System.out(17966): Latitude Ref - null05-22 17:36:24.566: I/System.out(17966): Latitude - null05-22 17:36:24.566: I/System.out(17966): Longitude Ref - null05-22 17:36:24.566: I/System.out(17966): Longitude - null

原始图片没有位置信息,通过调用writeLatLonIntoJpeg(strImgPath, 39.23456, 116.123456)来模拟写入一个位置。

第二次运行结果

05-22 17:37:11.446: I/System.out(17966): Latitude Ref - N05-22 17:37:11.446: I/System.out(17966): Latitude - 39/1,14/1,4/105-22 17:37:11.446: I/System.out(17966): Longitude Ref - E05-22 17:37:11.446: I/System.out(17966): Longitude - 116/1,7/1,24/1

关于android应用如何将位置信息写入JPEG文件中就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

android应用如何将位置信息写入JPEG文件中

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

android应用如何将位置信息写入JPEG文件中

这篇文章给大家介绍android应用如何将位置信息写入JPEG文件中,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。核心代码pu
2023-05-31

如何在 iOS 应用中添加位置信息

目录获取设备位置信息在锁屏情况下继续更新 GPS 信息为应用添加后台位置权限最近要在 iOS 应用中添加位置信息, 需要满足的需求如下:应用在前台时能够获取位置信息;通过切换、 Home 按键将应用切换到后台时,停止获取位置信息;应用程序在
2022-06-04

如何用python提取txt文件中的特定信息并写入Excel

如何用python提取txt文件中的特定信息并写入Excel,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。问题描述:我有一个这样的数据集叫test_result_test.
2023-06-21

dos中如何使用copy将一个或多个文件从一个位置复制到其他位置

小编给大家分享一下dos中如何使用copy将一个或多个文件从一个位置复制到其他位置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!复制 将一个或多个文件从一个位置复
2023-06-09

如何利用shell删除数据表中指定信息和字段对应的文件

这篇文章主要介绍“如何利用shell删除数据表中指定信息和字段对应的文件”,在日常操作中,相信很多人在如何利用shell删除数据表中指定信息和字段对应的文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何利
2023-06-09

如何在Java项目中利用序列化与反序列化将对象文件写入与导出

如何在Java项目中利用序列化与反序列化将对象文件写入与导出?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java类中对象的序列化工作是通过ObjectOutp
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录