前面介紹過LocationManager有一個addProximityAlert(double latitude,double longitude,float radius,long expiration,PendingIntent intent)方法,該方法可用於添加臨近警告。其參數說明以下:html
latitude:指定固定點的經度。java
longitude:指定固定點的緯度。android
radius:指定半徑長度。git
expiration:指定通過多少毫秒後該臨近警告就會過時失效。-1表示永不過時。小程序
intent:該參數指定臨近該固定點時觸發該intent對應的組件.app
下面這個小程序能夠檢測手機是否進入和離開了指定點的指定範圍內。代碼以下:ide
Activity:this
- package com.home.proximityalert;
-
- import com.home.receiver.ProximityAlertReceiver;
-
- import android.app.Activity;
- import android.app.PendingIntent;
- import android.content.Context;
- import android.content.Intent;
- import android.location.LocationManager;
- import android.os.Bundle;
-
- public class ProximityAlertTestActivity extends Activity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
-
- double longitude = 104.10;
- double latitude = 30.67;
-
- float radius = 5000;
-
- Intent intent = new Intent(this, ProximityAlertReceiver.class);
-
- PendingIntent pi = PendingIntent.getBroadcast(this, -1, intent, 0);
-
- locationManager.addProximityAlert(latitude, longitude, radius, -1, pi);
- }
-
- }
BroadcastReceiver(ProximityAlertReceiver):spa
- package com.home.receiver;
-
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.location.LocationManager;
- import android.widget.Toast;
-
- public class ProximityAlertReceiver extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
-
- boolean isEnter = intent.getBooleanExtra(
- LocationManager.KEY_PROXIMITY_ENTERING, false);
- if (isEnter) {
-
- Toast.makeText(context, "您已經進入成都市成華區", Toast.LENGTH_LONG).show();
- } else {
-
- Toast.makeText(context, "您已經離開成都市成華區", Toast.LENGTH_LONG).show();
- }
- }
-
- }
權限:xml
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>