把GPS书上和视频的内容做到一起了…

本文介绍如何在Android应用中获取当前设备的所有定位provider、找出最佳provider、绑定监听器发送虚拟经纬度,并实现临近警告功能,包括设置警报参数、创建警报类接收并处理警报。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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"/>

把GPS书上和视频的内容做到一起了。。。

 

代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值