zoukankan      html  css  js  c++  java
  • 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"/>  
  • 相关阅读:
    ZOJ Problem Set–2417 Lowest Bit
    ZOJ Problem Set–1402 Magnificent Meatballs
    ZOJ Problem Set–1292 Integer Inquiry
    ZOJ Problem Set–1109 Language of FatMouse
    ZOJ Problem Set–1295 Reverse Text
    ZOJ Problem Set–1712 Skew Binary
    ZOJ Problem Set–1151 Word Reversal
    ZOJ Problem Set–1494 Climbing Worm
    ZOJ Problem Set–1251 Box of Bricks
    ZOJ Problem Set–1205 Martian Addition
  • 原文地址:https://www.cnblogs.com/buffer/p/3231292.html
Copyright © 2011-2022 走看看