GPS(2)关于位置的3个示例,实时获取GPS定位数据,求两个经纬点距离,邻近某个区域圆时警告
实时获取GPS定位数据
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.EditText; /*
* 实时获取GPS定位数据
*/
public class LocationActivity extends Activity
{
LocationManager mLocationManager;
EditText mEditText;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main); mEditText = (EditText)findViewById(R.id.show); mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); //从 GPS_PROVIDER 获取最后已知的定位信息
Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); //在editview中显示该信息
updateView(location); /*
* 请求更新 location
*/
//2000表示更新周期是2秒,8表示当新位置与当前位置超过8米时
//2000与8米是或的关系.其中一个满足时就触发LocationListener回调
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, , , new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) { }
@Override
public void onProviderEnabled(String provider) {
//当PorviderLocation可用时的回调
updateView(mLocationManager.getLastKnownLocation(provider));
} @Override
public void onProviderDisabled(String provider) {
} @Override
public void onLocationChanged(Location location) {
//当gps位置信息变化时的回调
updateView(location);
}
}); } //在 EditView 中显示位置信息
public void updateView(Location newLocation)
{
if(newLocation != null)
{
StringBuilder sb = new StringBuilder(); sb.append("实时的位置信息:\n"); sb.append("经度:" + newLocation.getLongitude() + "\n");
sb.append("纬度:" + newLocation.getLatitude() + "\n");
sb.append("高度:" + newLocation.getAltitude() + "\n");
sb.append("速度:" + newLocation.getSpeed() + "\n");
sb.append("方向:" + newLocation.getBearing() + "\n"); mEditText.setText(sb.toString());
}
}
}
求两个经纬点距离
import android.app.Activity;
import android.location.Location;
import android.os.Bundle;
import android.widget.EditText; /*
* 求两个经纬点间距离
*/
public class DistanceActivity extends Activity {
private EditText mEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_distance); mEditText = (EditText) findViewById(R.id.edittext); // 1,准备一个存放计算结果的数组,长度为3,最终距离为数组第1个元素的值,
final float[] results = new float[]; // 2,用Location.distanceBetween静态方法计算,前两个参数为第一个点的经纬度,第3,4个参数是第2个点的经纬度,
Location.distanceBetween(20.123, 30.05644, 30.124, 40.543, results);
mEditText.setText(String.valueOf(results[]) + "米");
}
}
邻近某个区域圆时警告
import mobile.android.proximity.alert.R;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.location.LocationManager;
import android.os.Bundle; /*
* 当进入目标区域时提示警告的示例
* 目标区域是指 以某个经纬点为原点,半径为x的一个圆.
*/
public class ProximityAlertActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main); //进入目标区域提示警告 第1步,得到LocationManager
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); //进入目标区域提示警告 第2步,准备目标区域
double longitude = 123.427109;
double latitude = 41.764998;
float radius = ;//半径 //进入目标区域提示警告 第3步,广播接收器的intent.PromimityAlertRecivery是个接收器.
Intent intent = new Intent(this, PromimityAlertRecivery.class); //进入目标区域提示警告 第4步,将广播接收器与PendingIntent绑定.
//PendingIntent 比intent生命周期长,应用关闭后,它仍然存在.除非卸载或关机.
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,,intent,); //进入目标区域提示警告 第5步,添加一个进入警告到LocationManager,其中-1这个参数是过期周期,-1表示永远
locationManager.addProximityAlert(latitude, longitude, radius, -, pendingIntent);
}
}
接收器的代码
import android.content.Context;
import android.content.Intent;
import android.location.LocationManager;
import android.widget.Toast; /*
* 注意这是个广播接收器,还是主动请求的数据的
*/
public class PromimityAlertRecivery { public void onReceive(Context context, Intent intent) {
//是否进入目标区域,true是进入,false是离开
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();
} }
}
GPS(2)关于位置的3个示例,实时获取GPS定位数据,求两个经纬点距离,邻近某个区域圆时警告的更多相关文章
- 在Android Studio中使用BaiduMap SDK实时获取当地位置信息
配置BaiduMap 环境 1.在百度API中新建自己的一个APP包名和APP名需要注意和自己Android Studio 中的包名和APP名保持一致: 2.百度地图中还需要填写一个SHA1 数字签名 ...
- 分布式 PostgreSQL 集群(Citus)官方示例 - 实时仪表盘
Citus 提供对大型数据集的实时查询.我们在 Citus 常见的一项工作负载涉及为事件数据的实时仪表板提供支持. 例如,您可以是帮助其他企业监控其 HTTP 流量的云服务提供商.每次您的一个客户端收 ...
- qt qml ajax 获取 json 天气数据示例
依赖ajax.js类库,以下代码很简单的实现了获取天气json数据并展示的任务 [TestAjax.qml] import QtQuick 2.0 import "ajax.js" ...
- Intersecting Lines---poj1269(求两直线的位置关系)
题目链接:http://poj.org/problem?id=1269 题意:给你两条直线上的任意不同的两点,然后求两条直线的位置关系,如果相交于一点输出该点坐标; #include<iostr ...
- html获取gps坐标
<script> function getLocation(){ var options={ enableHighAccuracy:true, maximumAge:1000 } if(n ...
- 最简单的基于DirectShow的示例:获取Filter信息
===================================================== 最简单的基于DirectShow的示例文章列表: 最简单的基于DirectShow的示例:视 ...
- android 获取GPS定位
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xm ...
- div内鼠标坐标位置及绝对和相对坐标获取
JQuery 获得div绝对,相对位置的坐标方法 1 2 3 4 5 6 获取页面某一元素的绝对X,Y坐标 var X = $('#DivID').offset().top; var Y = $( ...
- 测试百度地图输入GPS经纬度显示位置API
1.我的GPS获取的经纬度做度分秒转换后为 34.636055,112.40832 2.百度API介绍 GPS的坐标是WGS84,所以测试API http://api.map.baidu.com/ge ...
随机推荐
- ALI OSS RequestTimeTooSkewed
php版阿里oss sdk,请求时抛RequestTimeTooSkewed错误,说时间差距太大,搜了一下发现是服务器的时间设置问题. 我们在安装完Centos Linux操作系统之后,点击系统的时间 ...
- 【Qt】数据库连接池
请查看公孙二狗的文章 数据库连接池
- [Linux]学习笔记(4)-su及passwd的用法介绍
(1)su su命令用于将当前的用户切换到一个指定的用户.语法为: su - user_name 如果用户利用telnet方式远程登录,是不能直接以root账户登录的,也就是说在使用telnet登录服 ...
- hadoop中遇到的问题。
1.物理主机中无法访问管理界面,在虚拟主机中可以访问, 这跟防火墙有关系,重启一下防火墙,然后关闭,最后重启一下handoop,应该就可以了!!!!(hadoop首战顺利!!!!!(●'◡'●))
- Python执行效率测试模块timei的使用方法与与常用Python用法的效率比较
timeit模块用于测试一段代码的执行效率 1.Timer类 Timer 类: __init__(stmt="pass", setup="pass", time ...
- UVA 524
Description A ring is composed of n (even number) circles as shown in diagram. Put natural numbers ...
- Linux远程备份—ftp方式、NFS方式
问题:现在项目中每天都有从其它各个系统发过来的数据文件(存放在/var/data目录下,以.txt结尾),虽然很久以前的文件很少用到,占用了很多空间,却不能删除.于是,想把一个月以前的文件都压缩了传到 ...
- psutil--跨平台的进程管理
原文地址:http://www.jianshu.com/p/64e265f663f6 Python处理Windows进程 psutil(Python system and process utilit ...
- fineui框架
http://fineui.com/demo/#/demo/layout/fit.aspx 虽然比较丑陋,但功能实用 此框架比较简单, 框架的作用你懂的,重点是要有帮助文档, 进阶型的容易上手的帮助文 ...
- 【CSLA】Component-based,Scalable,LogicalArchitecture
我能说我没看懂吗 ? http://www.cnblogs.com/lonely7345/archive/2010/02/06/1665171.html