• Android GPS应用:临近警告


    前面介绍过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"/>



     

  • 相关阅读:
    kafka常用脚本
    Vue官方文档翻译 Creating a Vue Application
    openresty改写302的Location
    如何在Vue引入静态图片?
    this.$refs[formName].validate is not a function
    什么是贫金属星?
    terrasolid侧边工具栏及一些工具菜单的调出方法
    pip install还是conda install
    特征值和特征向量、基向量、线性变换
    便携显示器联合创新N1U pro评测
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3202738.html
Copyright © 2020-2023  润新知