• 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"/>  
  • 相关阅读:
    JSON数据
    逆序字符串
    WPF中ListBox ListView数据翻页浏览笔记(强调:是数据翻页,非翻页动画)
    用WPF做关于MEF 简单学习记录
    C#关于XML的一些简单用法
    django框架-DRF视图中的request和response
    django框架-Admin管理站点搭建
    JZ35 数组中的逆序对
    JZ34 第一个只出现一次的字符位置
    JZ33 丑数
  • 原文地址:https://www.cnblogs.com/buffer/p/3231292.html
Copyright © 2020-2023  润新知