灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3830回复:1

android gps简单实用之一

楼主#
更多 发布于:2012-11-10 14:22

通过android提供的gps功能可以方便的得到位置信息。由于本文是再模拟器中使用的gps所以要通过ddms发送gps位置信息。
main.xml文件只有一个textview节点就不在给出了。还有就是操作gps需要得到如下权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
具体的操作代码如下:
MainActivity.java
[java] view plaincopyprint?
package com.example.locationmanager;

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {
   
   private TextView tv_show;
   //定位管理器
   private LocationManager lm;
   
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       
       tv_show = (TextView) this.findViewById(R.id.tv_show);
       //获得系统提供的定位管理器
       lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
       //从gps获得最近的定位信息
       Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
       //使用location显示信息
       updateView(location);
       //设置监听器
       lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 8, new LocationListener() {
           
           @Override
           public void onStatusChanged(String provider, int status, Bundle extras) {

           }
           
           @Override
           public void onProviderEnabled(String provider) {
               //当gps可用时,更新位置
               updateView(lm.getLastKnownLocation(provider));
           }
           
           @Override
           public void onProviderDisabled(String provider) {
               updateView(null);
           }
           
           @Override
           public void onLocationChanged(Location location) {
               //当gps定位信息发生改变时,更新位置'
               updateView(location);
           }
       });
       
   }

   private void updateView(Location location) {
       if(location != null){
           StringBuffer sb = new StringBuffer();
           sb.append("实施位置信息:\n");
           sb.append("精度:");
           sb.append(location.getLongitude());
           sb.append("\n维度:");
           sb.append(location.getLatitude());
           sb.append("\n高度:");
           sb.append(location.getAltitude());
           sb.append("\n速度:");
           sb.append(location.getSpeed());
           sb.append("\n方向:");
           sb.append(location.getBearing());
           tv_show.setText(sb.toString());
       }else {
           tv_show.setText("");
       }
   }

}

喜欢0 评分0
wldtk
新手上路
新手上路
  • 注册日期2012-10-11
  • 发帖数38
  • QQ
  • 火币41枚
  • 粉丝1
  • 关注0
沙发#
发布于:2012-11-23 15:56
选择千锋 选择卓越  千锋3G 手机软件开发培训第一品牌
iphone培训
千锋iphone培训

回复(0) 喜欢(0)     评分
游客

返回顶部