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 ...
随机推荐
- NSS_03 过滤器
asp.net mvc3有四类过滤器:授权, 操作,结果, 异常.操行的顺序为:授权,操作,结果,异常. 首先看一下TempData: 数据只能经过至多一次的Controller传递, 并且每个元素至 ...
- WinForms 小型HTML服务器
最近教学,使用到了Apache和IIS,闲着无聊,有种想自己写个小服务器的冲动. 在网上找了半天的资料,最后终于搞定了,测试可以访问.效果图如下: 因为只是处理简单的请求,然后返回请求的页面,所以没有 ...
- HTML5 内联框架iFrame
由于现在frame和frameset很少使用,已经过时了,已经被div+CSS代替了,所以,这里只是举例说明一下,当下还在使用的内联框架iFrame 所谓的iFrame内联框架,我的理解就是在网页内部 ...
- JAVA对象是如何占用内存的
本文使用的是32位的JVM ,jdk1.6.本文基本是翻译的,加上了一些自己的理解,原文见文章底下链接. 在本文中,我们讨论如何计算或者估计一个JAVA对象占多少内存空间.(注意,使用 C ...
- js 根据当前星期做跳转(代码段)
var week = [6,0,1,2,3,4,5]; $('.HotShop_head .HotShop_tab:eq('+week[new Date().getDay()]+')').click( ...
- cron以及在laravel中使用cron
yum install vixie-cron yum install crontabs /bin/systemctl restart crond.service #启动服务 /bin/systemct ...
- 部门招聘开发人员(python相关)
岗位职责: 1.参与需求分析,产品设计,功能开发: 2.负责系统平台的日常维护: 3.与团队技术交流,共同进步 任职要求: 1.精通Python:对Python有兴趣. 2.熟悉MVC架构,精通Dja ...
- 可变参数列表---以dbg()为例
在UART驱动的drivers/serial/samsung.h中遇到如下定义: #ifdef CONFIG_SERIAL_SAMSUNG_DEBUG extern void printascii(c ...
- IBM MQ
一,安装 1,先安装必备MQ\MQ60\Prereqs\IES\Setup.exe 2,再安装MQ\MQParms.exe 二,发送方 刚装好后,默认有一个管理器名,可以删除,自己重新建,以防有不可知 ...
- 【EF】 proxy
逐步解說:使用 WCF 序列化 POCO Proxy (Entity Framework) .NET Framework 4 POCO Proxy 型別無法由 Windows Communicat ...