天气预报--定位更新天气
来源:互联网 发布:boll指标源码 编辑:程序博客网 时间:2024/04/29 06:10
定位使用了百度地图的SDK,将locSDK4.0,jar加入libs文件夹下,并build path,就可以使用百度地图定位包了。这没啥好说的,我贴上一个百度SDK定位的Demo吧:
import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.TextView;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;public class MainActivity extends Activity {private TextView mTv = null;public LocationClient mLocationClient = null;public MyLocationListenner myListener = new MyLocationListenner();public Button ReLBSButton=null;public static String TAG = "msg";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTv = (TextView)findViewById(R.id.textview);ReLBSButton=(Button)findViewById(R.id.ReLBS_button);mLocationClient = new LocationClient( this );/**—————————————————————————————————————————————————————————————————— * 这里的AK和应用签名包名绑定,如果使用在自己的工程中需要替换为自己申请的Key * —————————————————————————————————————————————————————————————————— *///mLocationClient.setAK("697f50541f8d4779124896681cb6584d"); //mLocationClient.setAK("z4nqERrqxnhNzT5VOGNVRt80");mLocationClient.registerLocationListener( myListener );setLocationOption();//设定定位参数mLocationClient.start();//开始定位// 重新定位ReLBSButton.setOnClickListener(new Button.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubif (mLocationClient != null && mLocationClient.isStarted())mLocationClient.requestLocation();elseLog.d("msg", "locClient is null or not started");}});} //设置相关参数private void setLocationOption(){LocationClientOption option = new LocationClientOption();option.setOpenGps(true);option.setAddrType("all");//返回的定位结果包含地址信息option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02option.setScanSpan(5000);//设置发起定位请求的间隔时间为5000msoption.disableCache(true);//禁止启用缓存定位option.setPoiNumber(5); //最多返回POI个数 option.setPoiDistance(1000); //poi查询距离 option.setPoiExtraInfo(true); //是否需要POI的电话和地址等详细信息 mLocationClient.setLocOption(option);} @Overridepublic void onDestroy() {mLocationClient.stop();//停止定位mTv = null;super.onDestroy();} /** * 百度基站定位错误返回码 */// 61 : GPS定位结果// 62 : 扫描整合定位依据失败。此时定位结果无效。// 63 : 网络异常,没有成功向服务器发起请求。此时定位结果无效。// 65 : 定位缓存的结果。// 66 : 离线定位结果。通过requestOfflineLocaiton调用时对应的返回结果// 67 : 离线定位失败。通过requestOfflineLocaiton调用时对应的返回结果// 68 : 网络连接失败时,查找本地离线定位时对应的返回结果// 161: 表示网络定位结果// 162~167: 服务端定位失败。/** * 监听函数,有更新位置的时候,格式化成字符串,输出到屏幕中 */public class MyLocationListenner implements BDLocationListener {@Override//接收位置信息public void onReceiveLocation(BDLocation location) {if (location == null)return ;StringBuffer sb = new StringBuffer(256);sb.append("time : ");sb.append(location.getTime());sb.append("\nerror code : ");sb.append(location.getLocType());sb.append("\nlatitude : ");sb.append(location.getLatitude());sb.append("\nlontitude : ");sb.append(location.getLongitude());sb.append("\nradius : ");sb.append(location.getRadius());sb.append("\nCity : ");sb.append(location.getCity());sb.append("\nProvince : ");sb.append(location.getProvince());if (location.getLocType() == BDLocation.TypeGpsLocation){sb.append("\nspeed : ");sb.append(location.getSpeed());sb.append("\nsatellite : ");sb.append(location.getSatelliteNumber());} else if (location.getLocType() == BDLocation.TypeNetWorkLocation){/** * 格式化显示地址信息 */sb.append("\naddr : ");sb.append(location.getAddrStr());}sb.append("\nsdk version : ");sb.append(mLocationClient.getVersion());sb.append("\nisCellChangeFlag : ");sb.append(location.isCellChangeFlag());mTv.setText(sb.toString());Log.i(TAG, sb.toString());}//接收POI信息函数,我不需要POI,所以我没有做处理public void onReceivePoi(BDLocation poiLocation) {if (poiLocation == null) {return;}}}}如果手机有联网,会得到一个location的对象,用它的getCity()就可以得到你所在的城市名字,然后根据这个城市名字到之前保存的CityId表中获取到相应城市Id,然后就跟我们第一个功能实现类似了,联网解析Json然后更新UI。
这里唯一让我疑问的是StringBuffer,刚开始看这个Demo没看懂sb.append是什么意思,通过查资料知道了:
String和StringBuffer他们都可以存储和操作字符串,即包含多个字符的字符串数据。
String类是字符串常量,是不可更改的常量。而StringBuffer是字符串变量,它的对象是可以扩充和修改的。
StringBuffer类的构造函数:public StringBuffer() 创建一个空的StringBuffer类的对象。
public StringBuffer( int length ) 创建一个长度为 参数length 的StringBuffer类的对象。(如果参数length小于0,将触发NegativeArraySizeException异常。)
StringBuffer append(boolean b)
这些方法都是向字符串缓冲区“追加”元素,但是,这个“元素”参数可以是布尔量、字符、字符数组、双精度数、浮点数、整型数、长整型数对象类型的字符串、字符串和StringBuffer类等。如果添加的字符超出了字符串缓冲区的长度,Java将自动进行扩充。
这样就明白了最后的setText(sb.toString());是什么意思了,将格式化的信息输出到textview中。 0 0
- 天气预报--定位更新天气
- 天气预报--短信分享天气
- 网上下载天气预报源码,出现天气更新失败问题 的解决办法
- 滚动天气预报-调用天气网页
- Android天气预报各种天气API
- Android天气预报+百度天气接口
- android 中国天气网天气预报
- 中国天气网天气预报接口
- 天气预报接口 心知天气
- Android i天气-天气预报程序
- 根据中国天气网,自动定位获得当地天气(数据是JSON的)---不过这个接口貌似不更新了
- Android 定位+天气预报
- Android上实现一个简单的天气预报APP(九) ListView展示城市列表、单击更新天气数据
- 雅虎定位查询天气
- Fragment中实现自动定位当前城市,点击刷新按钮更新天气信息
- 墨迹天气VS天气通:天气预报应用PK
- [C#]实时天气及24小时天气预报
- 实时天气及24小时天气预报
- dfgdsgsdfsaf
- LINUX环境并发服务器的三种实现模型
- TCP服务器端和客户端程序设计
- sdfsdfSXCZcZXC
- Hibernate之事务处理(悲观锁和乐观锁)
- 天气预报--定位更新天气
- 《C++ Primer Plus》学习笔记9
- 输入文件保存在StrBlob中, 用一个StrBlobPtr打印出StrBlob中的每一个元素
- 【转载】DOM树节点解析(转)
- 【转载】struts 学习总结----开发流程
- 【转载】使用jsp实现文件上传到服务器或者从服务器上下载文件到本地计算机完整说明版
- 【转载】json lib 学习总结
- 【转载】struts2 学习总结 ---- Ajax
- 【转载】struts2 学习总结 ---- Struts-tags