您的位置:首页 > 移动开发 > Android开发

Android全球定位系统GPS邻近警报-刘宇

2016-09-15 22:57 525 查看
在网上看到很多童鞋们说邻近警报运行起来无效,这里我为大家简单的介绍一下全部过程,你们可能缺少了哪一步哦,详情请看下面,大牛请绕过。

之前介绍了GPS获取当前位置和距离的计算,现在来介绍一下利用GPS来制作邻近警报功能,这个功能的作用是当你靠近一个地理位置一定的范围的时候会通知你,比如你已到达某建筑物附近。

效果图:



该功能的实现需要获取到位置管理器LocationManager的实例,通过它调用addProximityAlert方法。邻近警报的通知是通过广播来通知的。

addProximityAlert这个方法有五个参数:

第一个参数:表示目标位置的纬度

第二个参数:表示目标位置的经度

第三个参数:表示当你进入目标位置多少范围内报警提示

第四个参数:表示这个报警有效时间,-1为不限制

第五个参数:传递一个PendingIntent,绑定其广播接收者

————————————————————————————————————————————————

要求:

1、自定义一个广播接收者,来写接收到邻近报警后的业务逻辑

2、添加权限:

<uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>

3、为广播接收者在应用清单文件添加注册信息

<receiverandroid:name=".ProximityAlertReceiver"/>

—————————————————————————————————————————————————————————————————————————————

自定义广播接收者:ProximityAlertReceiver.java

<span style="font-size:18px;">package com.oak.learngpsproximityalert;

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,"你已邻近目标", 0).show();
}else{
Toast.makeText(context,"你已远离目标", 0).show();
}
}

}</span>


MainActivity.java:

package com.oak.learngpsproximityalert;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;

public class MainActivity extends Activity {
private LocationManager mLocationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取位置服务管理
mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
double latitude = 30.68405629;//纬度
double longitude = 101.76924743;//经度
float radius = 5000;//范围半径,单位米
//new一个意图,绑定广播接收者
Intent intent = new Intent(this, ProximityAlertReceiver.class);
//PendingIntent的作用用于当程序关闭后依然能够接受到广播。
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1, intent, 0);
//添加邻近警告
mLocationManager.addProximityAlert(latitude, longitude, radius, -1, pendingIntent);
}
}


到这里邻近警报就完成了,有什么问题可留言给我,我会第一时间回复的,GPS获取当前位置、距离计算功能实现在上一篇博客,有兴趣的可以关注我查看哦。

By:Mr.Oak
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息