1.三个按钮,一个获取当前设备的所有定位provider(alllocationButton);一个用来找出最好的provider(bestProviderButton);一个用来绑定监听器(locationButton),这样从模拟器上就可以发送虚拟的经纬度了。
2.声明成员,三个按钮和一个LocationManager。给按钮绑定监听器。
获取LocationManager实例,通过调用Context的getSystemService()方法
locationManager = (LocationManager)location.this.getSystemService(Context.LOCATION_SERVICE);
貌似也可以简写成
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
函数返回值是一个object类型,需要向下转型为LocationManager
3.为临近警告设置一些参数,当距离经纬度为113,23的点的距离小于五公里的时候,发送警报
double longitude = 113;
double latitude = 23;
float radius = 5000;
Intent intent = new Intent(this,ProximityAlertReciever.class);
PendingIntent pi = PendingIntent.getBroadcast(this, -1, intent, 0);
locationManager.addProximityAlert(23, 113, 5000, -1, pi);
4.创建警报类ProximityAlertReciever,继承BroadcastReceiver类(新的java文件,你懂得)
public class ProximityAlertReciever extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//获取是否进入警戒区
System.out.println("test");
boolean isEnter = intent.getBooleanExtra(LocationManager.KEY_PROXIMITY_ENTERING, false);
if(isEnter){
System.out.println("test1");
Toast.makeText(context, "已进入", Toast.LENGTH_LONG).show();
}
else{
System.out.println("test2");
Toast.makeText(context, "已离开", Toast.LENGTH_LONG).show();
}
}
}
5.给按钮alllocationButton的监听器编写代码
private class ProvidersButtonListener implements OnClickListener{
@Override
public void onClick(View v) {
List<String> providers = locationManager.getAllProviders();
for(Iterator iterator = providers.iterator();iterator.hasNext();){
String provider = (String)iterator.next();
System.out.println(provider);
}
}
}
6.给按钮bestProviderButton的监听器编写代码
private class BestProviderButtonListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//生成一个criteria对象
Criteria criteria = new Criteria();
//设置查询条件
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAltitudeRequired(false);
criteria.setSpeedRequired(false);
String provider = locationManager.getBestProvider(criteria, false);
System.out.println("best provider --->" + provider);
}
}
7.给按钮locationButton的监听器编写代码
private class LocationButtonListener implements OnClickListener{
@Override
public void onClick(View arg0) {
//1.定义当前所使用的location provider 2.隔多长时间更新一次 3.两次定位之间的最小距离 4.监听器 locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5000, new TestLocationListener());
}
}
private class TestLocationListener implements LocationListener{
@Override
public void onLocationChanged(Location arg0) {
System.out.println(arg0.getLatitude());
System.out.println(arg0.getLongitude());
}
@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
}
8.授权啊授权
<receiver android:name=".ProximityAlertReciever">
</receiver>
</application>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

代码