Android GPS應用:臨近警告

jopen 11年前發布 | 17K 次閱讀 Android Android開發 移動開發

前面介紹過LocationManager有一個 addProximityAlert(double latitude,double longitude,float radius,long expiration,PendingIntent intent)方法,該方法可用于添加臨近警告。其參數說明如下:

latitude:指定固定點的經度。

longitude:指定固定點的緯度。

radius:指定半徑長度。

expiration:指定經過多少毫秒后該臨近警告就會過期失效。-1表示永不過期。

intent:該參數指定臨近該固定點時觸發該intent對應的組件.

下面這個小程序可以檢測手機是否進入和離開了指定點的指定范圍內。代碼如下:

Activity:

    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 = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  
            // 定義成都市成華區的大致經度、緯度  
            double longitude = 104.10;  
            double latitude = 30.67;  
            // 定義半徑(5公里)  
            float radius = 5000;  
            // 定義Intent  
            Intent intent = new Intent(this, ProximityAlertReceiver.class);  
            // 將Intent包裝成PendingIntent對象  
            PendingIntent pi = PendingIntent.getBroadcast(this, -1, intent, 0);  
            // 添加臨近警告  
            locationManager.addProximityAlert(latitude, longitude, radius, -1, pi);  
        }  

    }  

BroadcastReceiver(ProximityAlertReceiver):

    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();  
            }  
        }  

    }  
權限:
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>  
來自:http://blog.csdn.net/u010142437/article/details/9391189

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!