在android平板上取位置和天气的实现方式
对于开发人员而言,取天气信息这是一个很常用的功能,要取到天气,首先要取到位置信息即经纬度。
怎样实现在android的平板上取到位置信息?我们有三种常用方式:第一种、通过wifi得到经纬度;第二种、通过基站:这个需要在手机和平板上安装sim卡;第三种、通过GPS:在室内难以取到,在室外才行。(需要说明的是谷歌的https ://www.google.com/loc/json取地址已经停用了。)
由于方式2要依赖SIM卡,方式3在室内效果太差,并且我们上网经常是通过wifi,所以这种方式最常用,我们就采用此方式。其实通过wifi上网时,google maps和baidu maps是通过无线路由器的mac地址(而不是wifi信号)定位的,这个原理网上有高人测试过,见http://www.diypda.com/forum.php?mod=viewthread&tid=114364&page=1
因为google地图由于GFW的原因不太好用,所以我们大方的采用baidu的API。
1、设置AndroidManfest.xml权限
<!-- 访问网络的权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 访问精确位置的权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 访问网络状态的权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 访问WIFI网络状态的权限 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 改变WIFI网络状态的权限 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
2、导入baidumapapi.jar包
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.LocationListener;
3、初始化设置BMapManager
mapManager = new BMapManager(this);
mapManager.init("授权key",new MKGeneralListener());
//mapManager.getLocationManager().setNotifyInternal(20, 5);
4、获取经纬度
mapManager.getLocationManager().requestLocationUpdates(new MyLocationListener());
mapManager.start();
在LocationListener中获取经纬度
class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location arg0) {
System.out.println(arg0.getLongitude());//经度
System.out.println(arg0.getLatitude());//纬度
}
}
这样我们终于完成了取经纬度的动作,是为取天气的第一步。
第二步,通过经纬度获取Yahoo 代表城市的WOEID,例如我通过第一步取到我所在位置的经纬度分别为30.459723和114.427391,则通过地址
http://where.yahooapis.com/geocode?q=30.459723,+114.427391&gflags=R&appid=NrTfYV7e 可以返回一个详细的xml文件。
第三步,通过yahoo取得真实的天气信息(代码表示)
方式是访问地址http://weather.yahooapis.com/forecastrss?w=2163866&u=f ,其中2163866是在第二步中实现的。
第四步,将天气代码解析出来,这个非常简单。
转载于:https://blog.51cto.com/yanglinux/1132534
在android平板上取位置和天气的实现方式相关推荐
- android 平板的 dpi,Android平板上开发应用的一点心得——精确适配不同的dpi和屏幕尺寸...
一.适配可行性 早在Android设计之初就考虑到了这一点,为了让app适应标准or山寨屏幕,google已经有一套成熟的解决方案.其中,有这么几个指标需要注意: (1)屏幕尺寸:单位inch,指的是 ...
- 安卓平板安装桌面linux,在Android平板上安装Ubuntu Linux
当我看到tiny core linux的时候,我第一印象就是:这小家伙一定可以跑在android上: 然而,让我惊喜的是,ubuntu早已经跑在android上了! 参见: http://galaxy ...
- Android平板电脑使用评测
放眼当今的平板电脑市场,除了占据主导地位的苹果iPad之外,最受用户欢迎的恐怕就是Android平板电脑了.据市场研究公司ABI Research的最新报告显示,在过去12个月里,Android平板电 ...
- 详述Google针对Android平板App发布的十大开发准则
2019独角兽企业重金招聘Python工程师标准>>> 在Nexus 7出来之前,Android平板市场的低迷一直让开发者对设计好Android平板上的App兴趣缺缺.为了给自己的平 ...
- debian linux手机安装,在 Android 系统上安装 Debian Linux 与 R
其实在 Android 平板上通过第三方软件 , 已经可以提供很多类似一般桌面 Linux 系统的工具了 . 常用的 Firefox.VLC. LibreOffice 以及 终端模拟器都有 Andro ...
- android 平板版 office,Android平板版Office评测:界面繁杂影响用户体验
导语:上周,微软发布了大家期待已久的Office for Android应用.尽管只是预览版,但意味着Office应用距离登陆Android平板又近了一步.Infoworld网站发现,尽管Office ...
- 利用 RDP Wrapper 实现 Android 平板变身 Windows 平板
tl;dr: 问题:有些资源用 Android 平板无法访问,RDP 至已有的 PC 又会导致账户被登出 解决思路:开启 RDP 多人登陆,利用一个单独的 RDP User 账户,通过微软自家的 RD ...
- android 平板桌面,给Android平板带点桌面系统体验:技德 Remix 平板 下月上市
给Android平板带点桌面系统体验:技德 Remix 平板 下月上市 2015-01-27 21:50:31 29点赞 14收藏 18评论 此前在众测频道接受值友们检验的技德Remix Androi ...
- Android平板离线安装数据库Mariadb
Android平板离线安装数据库Mariadb 一 .安装数据库Mariadb 安装Mariadb之前,先在Android平板上安装termux (1)先下载termux.apk安装 注意:安装ter ...
最新文章
- 利用circpedia 数据库探究circRNA的可变剪切
- 在Windows10上安装ROS并测试
- java使用jdbc调用hive出现The query did not generate a result set!
- 377. 组合总和 Ⅳ golang 动态规划
- python对时间日期做格式化
- 单片机人流统计装置的程序_单片机其实不难
- JavaScript 之 有关判断的方法
- 【Linux】tee命令
- 强化学习离轨策略:从失败中获得成功经验 - 以追女孩为例 | 采样率的数学意义
- selenium+python自动化,数据驱动实例
- boost asio异步通信
- Python 100 例
- linux路由器压力测试,Apache Bench Web 压力测试
- 人工智能系统的形式化验证技术研究进展与趋势
- 因需要**云音乐歌单转到apple music,不满**云音乐下载都是ncm格式,所以想办法转化格式
- [生存志] 第91节 鬼谷捭阖之策
- vue项目SEO优化
- python中如何输出空格换行_Python将文件中空格变成换行的方法如何做
- 蓝牙4.0、经典蓝牙、BT、BLE的关系与区别
- UCOSIII的任务管理
热门文章
- scala入门基础2
- linux sed给空文件首行插入_Linux系统中sed命令在文件某行前后添加内容的用法
- 跟我斗图,我用Python爬虫下载几个G的表情砸死你
- 非线性方程组牛顿迭代法matlab,matlab实现牛顿迭代法求解非线性方程组
- r语言 林元震_科学网—ASReml-R之简介 - 林元震的博文
- 倒排索引原理_拜托,面试请不要再问我分布式搜索引擎的架构原理!
- 宝塔linux计划任务ftp,宝塔面板定时备份网站及数据库至FTP存储空间图文教程
- 动态规划-最优二叉查找树
- 关于C++类实现哈夫曼树
- 模板 - 树上问题(树的直径、动态查询树的直径、树的重心)