Android 深入研究LBS(基于位置的服务)package com.example.lbs;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.TextView;


public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LocationManager lm;
String serviceName = Context.LOCATION_SERVICE;
lm = (LocationManager) getSystemService(serviceName);//获取系统的服务,
Criteria cri = new Criteria();//创建一个criteria对象
cri.setAccuracy(Criteria.ACCURACY_FINE);
cri.setAltitudeRequired(false);//设置不需要获取海拔方向数据
cri.setBearingRequired(false);
cri.setCostAllowed(true);//设置允许产生资费
cri.setPowerRequirement(Criteria.POWER_LOW);//要求低耗电
String provider = lm.getBestProvider(cri, true);
Location lo = lm.getLastKnownLocation(provider);
updateWithNewLocation(lo);//第一次获得设备的位置
final LocationListener ll = new LocationListener() {

@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub

}

@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub

}

@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
updateWithNewLocation(null);
}

@Override
public void onLocationChanged(Location arg0) {
// TODO Auto-generated method stub
updateWithNewLocation(arg0);
}
};
lm.requestLocationUpdates(provider, 2000, 10, ll);//监听数据
}


private void updateWithNewLocation(Location location){
String latLongString;
TextView myLocationText;
myLocationText = (TextView) findViewById(R.id.myLocation);
if(location!=null){
double lat = location.getLatitude();
double lng = location.getLongitude();
latLongString = "纬度:"+lat+"经度"+lng;
}else{
latLongString = "failed";
}
myLocationText.setText("当前坐标位置是:"+latLongString);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}

同时注意在manifest中添加<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />若有问题请留言,若转载请注明出处。

更多相关文章

  1. Android应用程序的安装位置
  2. Android官方ORM数据库Room技术解决方案简介(一)
  3. Android(二)数据存储和访问 之文件
  4. 了解Android和数据库连接
  5. Android 应用程序之间数据共享—ContentProvider
  6. 【Android布局】在程序中设置android:gravity 和 android:layout
  7. 关于FrameLayout布局的位置问题
  8. Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲
  9. 数据存储和界面笔记

随机推荐

  1. Android利用SQLite制作最简单成语小词典
  2. Android一直震动源码
  3. Android(安卓)休眠与唤醒
  4. Android(安卓)boot process stub
  5. Google Android's Gingerbread Update Co
  6. setting proxy for Android(安卓)SDK Man
  7. Android采用SAX解析XML文档
  8. Android(安卓)actrivityrealut
  9. Android(安卓)Studio编译失败问题(aapt2)
  10. android 程序漰溃 后台handle处理类