• Android GPS 临近触发


    前面介绍过LocationManager有一个addProximityAlert(double latitude,double longitude,float radius,long expiration,PendingIntent intent)方法,该方法可用于添加临近警告。其参数说明如下:

    latitude:指定固定点的经度。

    longitude:指定固定点的纬度。

    radius:指定半径长度。

    expiration:指定经过多少毫秒后该临近警告就会过期失效。-1表示永不过期。

    intent:该参数指定临近该固定点时触发该intent对应的组件.

    下面这个小程序可以检测手机是否进入和离开了指定点的指定范围内。代码如下:

    Activity:

    1. package com.home.proximityalert;  
    2.   
    3. import com.home.receiver.ProximityAlertReceiver;  
    4.   
    5. import android.app.Activity;  
    6. import android.app.PendingIntent;  
    7. import android.content.Context;  
    8. import android.content.Intent;  
    9. import android.location.LocationManager;  
    10. import android.os.Bundle;  
    11.   
    12. public class ProximityAlertTestActivity extends Activity {  
    13.   
    14.     @Override  
    15.     protected void onCreate(Bundle savedInstanceState) {  
    16.         super.onCreate(savedInstanceState);  
    17.         setContentView(R.layout.main);  
    18.         // 获取系统LocationManager服务  
    19.         LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  
    20.         // 定义成都市成华区的大致经度、纬度  
    21.         double longitude = 104.10;  
    22.         double latitude = 30.67;  
    23.         // 定义半径(5公里)  
    24.         float radius = 5000;  
    25.         // 定义Intent  
    26.         Intent intent = new Intent(this, ProximityAlertReceiver.class);  
    27.         // 将Intent包装成PendingIntent对象  
    28.         PendingIntent pi = PendingIntent.getBroadcast(this, -1, intent, 0);  
    29.         // 添加临近警告  
    30.         locationManager.addProximityAlert(latitude, longitude, radius, -1, pi);  
    31.     }  
    32.   
    33. }  

    BroadcastReceiver(ProximityAlertReceiver):

     
    1. package com.home.receiver;  
    2.   
    3. import android.content.BroadcastReceiver;  
    4. import android.content.Context;  
    5. import android.content.Intent;  
    6. import android.location.LocationManager;  
    7. import android.widget.Toast;  
    8.   
    9. public class ProximityAlertReceiver extends BroadcastReceiver {  
    10.   
    11.     @Override  
    12.     public void onReceive(Context context, Intent intent) {  
    13.         // 获取是否进入指定区域  
    14.         boolean isEnter = intent.getBooleanExtra(  
    15.                 LocationManager.KEY_PROXIMITY_ENTERING, false);  
    16.         if (isEnter) {  
    17.             // 给出提示信息  
    18.             Toast.makeText(context, "您已经进入成都市成华区", Toast.LENGTH_LONG).show();  
    19.         } else {  
    20.             // 给出提示信息  
    21.             Toast.makeText(context, "您已经离开成都市成华区", Toast.LENGTH_LONG).show();  
    22.         }  
    23.     }  
    24.   
    25. }  

    权限:

    1. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>  
  • 相关阅读:
    Mysql命令非交互式执行SQL命令
    centos7离线安装rpm包自动解决依赖
    webpack
    【转】GUID学习
    Docker安装mysql
    C++的vector的使用方法
    php自动加载
    Spring MVC 入门笔记
    Java泛型
    Java输入输出
  • 原文地址:https://www.cnblogs.com/buffer/p/3231292.html
Copyright © 2020-2023  润新知