没有合适的资源?快使用搜索试试~ 我知道了~
Android实现Service获取当前位置(GPS+基站)的方法
9 下载量 34 浏览量
2021-01-04
10:35:17
上传
评论
收藏 130KB PDF 举报
温馨提示
本文实例讲述了Android实现Service获取当前位置(GPS+基站)的方法。分享给大家供大家参考。具体如下: 需求详情: 1)、Service中每隔1秒执行一次定位操作(GPS+基站) 2)、定位的结果实时显示在界面上(要求得到经度、纬度) 技术支持: 1)、获取经纬度 通过GPS+基站获取经纬度,先通过GPS来获取,如果为空改用基站进行获取–>GPS+基站(基站获取支持联通、电信、移动)。 2)、实时获取经纬度 为了达到实时获取经纬度,需在后台启动获取经纬度的Service,然后把经纬度数据通过广播发送出去,在需要的地方进行广播注册(比如在Activity中注册广播,显示在界面中)–>
资源推荐
资源详情
资源评论
Android实现实现Service获取当前位置获取当前位置(GPS+基站基站)的方法的方法
本文实例讲述了Android实现Service获取当前位置(GPS+基站)的方法。分享给大家供大家参考。具体如下:
需求详情:需求详情:
1)、Service中每隔1秒执行一次定位操作(GPS+基站)
2)、定位的结果实时显示在界面上(要求得到经度、纬度)
技术支持:技术支持:
1)、获取经纬度
通过GPS+基站获取经纬度,先通过GPS来获取,如果为空改用基站进行获取–>GPS+基站(基站获取支持联通、电信、移
动)。
2)、实时获取经纬度
为了达到实时获取经纬度,需在后台启动获取经纬度的Service,然后把经纬度数据通过广播发送出去,在需要的地方进行广
播注册(比如在Activity中注册广播,显示在界面中)–>涉及到Service+BroadcastReceiver+Activity+Thread等知识点。
备注:备注:本文注重实践,如有看不懂的,先去巩固下知识点,可以去看看前面相关的几篇文章。
1、CellInfo实体类–>基站信息
package com.ljq.activity;
/**
* 基站信息
*
* @author jiqinlin
*
*/
public class CellInfo {
/** 基站id,用来找到基站的位置 */
private int cellId;
/** 移动国家码,共3位,中国为460,即imsi前3位 */
private String mobileCountryCode="460";
/** 移动网络码,共2位,在中国,移动的代码为00和02,联通的代码为01,电信的代码为03,即imsi第4~5位 */
private String mobileNetworkCode="0";
/** 地区区域码 */
private int locationAreaCode;
/** 信号类型[选 gsm|cdma|wcdma] */
private String radioType="";
public CellInfo() {
}
public int getCellId() {
return cellId;
}
public void setCellId(int cellId) {
this.cellId = cellId;
}
public String getMobileCountryCode() {
return mobileCountryCode;
}
public void setMobileCountryCode(String mobileCountryCode) {
this.mobileCountryCode = mobileCountryCode;
}
public String getMobileNetworkCode() {
return mobileNetworkCode;
}
public void setMobileNetworkCode(String mobileNetworkCode) {
this.mobileNetworkCode = mobileNetworkCode;
}
public int getLocationAreaCode() {
return locationAreaCode;
}
public void setLocationAreaCode(int locationAreaCode) {
this.locationAreaCode = locationAreaCode;
}
public String getRadioType() {
return radioType;
}
public void setRadioType(String radioType) {
this.radioType = radioType;
}
}
2、Gps类–>Gps封装类,用来获取经纬度
package com.ljq.activity;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
public class Gps{
private Location location = null;
private LocationManager locationManager = null;
private Context context = null;
/**
* 初始化
*
* @param ctx
*/
public Gps(Context ctx) {
context=ctx;
locationManager=(LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
location = locationManager.getLastKnownLocation(getProvider());
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener);
}
// 获取Location Provider
private String getProvider() {
// 构建位置查询条件
Criteria criteria = new Criteria();
// 查询精度:高
criteria.setAccuracy(Criteria.ACCURACY_FINE);
// 是否查询海拨:否
criteria.setAltitudeRequired(false);
// 是否查询方位角 : 否
criteria.setBearingRequired(false);
// 是否允许付费:是
criteria.setCostAllowed(true);
// 电量要求:低
criteria.setPowerRequirement(Criteria.POWER_LOW);
// 返回最合适的符合条件的provider,第2个参数为true说明 , 如果只有一个provider是有效的,则返回当前provider
return locationManager.getBestProvider(criteria, true);
}
private LocationListener locationListener = new LocationListener() {
// 位置发生改变后调用
public void onLocationChanged(Location l) {
if(l!=null){
location=l;
}
}
// provider 被用户关闭后调用
public void onProviderDisabled(String provider) {
location=null;
}
// provider 被用户开启后调用
public void onProviderEnabled(String provider) {
Location l = locationManager.getLastKnownLocation(provider);
if(l!=null){
location=l;
}
}
// provider 状态变化时调用
public void onStatusChanged(String provider, int status, Bundle extras) {
}
};
public Location getLocation(){
return location;
}
public void closeLocation(){
if(locationManager!=null){
if(locationListener!=null){
locationManager.removeUpdates(locationListener);
locationListener=null;
}
locationManager=null;
}
}
}
3、GpsService服务类
package com.ljq.activity;
import java.util.ArrayList;
剩余9页未读,继续阅读
资源评论
weixin_38608025
- 粉丝: 6
- 资源: 937
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 前端教程-JS canvas圆和线
- CANopen 协议规范
- 自动化手机标牌组装机工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 自动检测设备含bom工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- 2024--2025-1爬虫复习题库 (1).zip
- Android Studio Ladybug(android-studio-2024.2.1.12-windows-zip.zip.002)
- c++实现的飞机大战,雷霆战机模拟源码
- 资源名称上传资源图片高清
- Python代码示例实现带装饰物的圣诞树绘图
- Android Studio Ladybug(android-studio-2024.2.1.12-windows-zip.zip.001)
- CTF - Misc - 图片隐写 - 001-cat.jpg
- 基于ASP.NET的汉字资料库毕业设计
- 聚合DNS已更新SSL证书自动申请与部署功能
- 网络实践3121212121
- ISO13400 1-4规范DoIP协议
- python源码学习,内附教程,测试完全可以跑通,测试无误,放心验证,学会使用python工具
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功