android定位之GPS,WIFI和GPRS(NETWORK)方式的定位(含实现源码)

news/2024/12/2 9:56:47/

android定位之GPS,WIFI和GPRS(NETWORK)方式的定位(含实现源码)

以下代码复制即可执行:

Java源码:

Android中LocationManager的提供了一系列方法来地理位置相关的问题,包括查询上一个已知位置;注册/注销来自某个 LocationProvider的周期性的位置更新;以及注册/注销接近某个坐标时对一个已定义Intent的触发等。今天我们就来看看Android 中LocatinManager的简单使用,以获取当前所在的位置为例。 
首先,我们需要获取LocationManager的一个实例,这里需要注意的是他的实例只能通过下面这种方式来获取,直接实例化LocationManager是不被允许的。

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
LocationListener locationListener = new LocationListener() {


// Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {


}


// Provider被enable时触发此函数,比如GPS被打开
@Override
public void onProviderEnabled(String provider) {


}


// Provider被disable时触发此函数,比如GPS被关闭
@Override
public void onProviderDisabled(String provider) {


}


// 当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
@Override
public void onLocationChanged(Location location) {
if (location != null) {
Log.e("Map",
"Location changed : Lat: "
+ location.getLatitude() + " Lng: "
+ location.getLongitude());
}
}
};
locationManager
.requestLocationUpdates(LocationManager.GPS_PROVIDER,
1000, 0, locationListener);
Location location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {


latitude = location.getLatitude();
longitude = location.getLongitude();
Toast toast = Toast.makeText(getApplicationContext(),
"GPS已成功获取坐标:经度=" + latitude + "纬度=" + longitude,
Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
} else {
Toast toast = Toast.makeText(getApplicationContext(),
"打点失败,未获取经纬坐标!", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}


} else {


LocationListener locationListener = new LocationListener() {


// Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {


}


// Provider被enable时触发此函数,比如GPS被打开
@Override
public void onProviderEnabled(String provider) {


}


// Provider被disable时触发此函数,比如GPS被关闭
@Override
public void onProviderDisabled(String provider) {


}


// 当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
@Override
public void onLocationChanged(Location location) {
if (location != null) {
Log.e("Map",
"Location changed : Lat: "
+ location.getLatitude() + " Lng: "
+ location.getLongitude());
}
}
};
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 1000, 0,
locationListener);
Location location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude(); // 经度
longitude = location.getLongitude(); // 纬度
Toast toast = Toast.makeText(getApplicationContext(),
"移动网络已成功获取坐标:经度=" + latitude + "纬度=" + longitude,
Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
String content = "EXEC.[mobile_proc_CreateUserTrack]@UserID='"
+ Login.publictype.getUserId()
+ "',@lat='"
+ location.getLatitude()
+ "',@lng='"
+ location.getLongitude() + "'";


String result = HttpApi.PostData(content).trim();
Log.e("result", result);
} else {
Toast toast = Toast.makeText(getApplicationContext(),
"打点失败,未获取经纬坐标!", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}


}

xml代码:不需要

androidmanifest代码:我自己的项目写的太多权限    我晕了  ,好了。

在AndroidManifest.xml文件中加入如下权限:

    <!-- 连接互联网Internet权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- GPS定位权限 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />


Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);   
double latitude = location.getLatitude();     //经度   
double longitude = location.getLongitude(); //纬度   
double altitude =  location.getAltitude();     //海拔  

Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double latitude = location.getLatitude();     //经度
double longitude = location.getLongitude(); //纬度
double altitude =  location.getAltitude();     //海拔









http://www.ppmy.cn/news/521625.html

相关文章

GPS定位类型

1.GPS三种类型 此选项缺省为Stand Alone模式。 Stand Alone:是目前比较成熟、通用的GPS定位模式&#xff0c;仅通过卫星信号定位。 MS Based:也称为MSB&#xff0c;从服务器下载卫星信息&#xff0c;然后通过卫星信号定位&#xff0c;会比StandAlone模式搜星过程快一些…

GPS NMEA协议,0183 定位数据格式 双模定位:GNXXX GPS+BD 完整版

作者&#xff1a;haomingHu email&#xff1a;hhm_master163.com 背景&#xff1a;最近需要在imx6ull 的Linux板子上面接收定位模块的0183格式的数据并进行解析&#xff0c;并且用QT实现&#xff0c;绘制定位信息各种数据的动态曲线图 GPS NMEA协议&#xff0c;0183 定位数据…

常用的几种GPRS模块介绍 GPRS模块选哪个好

常用的几种GPRS模块介绍 GPRS模块选哪个好 所属分类&#xff1a;公司新闻发布时间&#xff1a;2018-12-05 GPRS模块采用GPRS的嵌入式系统可以实现无线数据传输领域的复杂应用&#xff0c;在远程抄表、工业控制、遥感遥测、智能交通领域都得到了广泛的应用。那么现在市场上常见…

STM32开发GPRS传输的GPS定位器-android studio开发客户端APP显示轨迹

前面文章介绍如何开发定位器硬件&#xff0c;单片机软件&#xff0c;服务器软件&#xff0c;上位机客户端软件&#xff0c;下面介绍如何使用android studio开发客户端APP显示轨迹。 能自己做的事从来不求人&#xff0c;前面用C#实现了PC端显示定位数据轨迹&#xff0c;用androi…

GPRS信号强度(收集)

GPRS信号强度 ATCSQ CSQ: 15,99 其中的&#xff11;&#xff15;为信号强度值&#xff0c;&#xff19;&#xff19;为误码率&#xff0c;信号在&#xff08;&#xff11;&#xff10;&#xff5e;&#xff13;&#xff11;&#xff09;之间均为有效值&#xff0c;如当地信号强…

GSM/GPRS/GPS定位器Tracker设置

一.设置路由器使外面socket程序能访问本机的外网ip 第一步.获取本机的IP地址 第二步.设置路由器 在虚拟服务器中添加一条新条目&#xff0c;服务端口是自定义的&#xff0c;只要不和系统中已用的端口冲突就行 IP地址设置为上面第一步获取的IP地址 第三步.设置GPS定位器 1.begi…

GA6-BGSM/GPRS模块介绍

GA6-BGSM/GPRS模块简介 GA6-B是一个4频的GSM/GPRS模块&#xff0c;工作的频段为&#xff1a;EGSM 900MHz、 GSM850MHz和DCS1800, PCS1900。GA6-B支持GPRS multi-slot class 10/ class 8&#xff08;可选&#xff09;和 GPRS 编码格式CS-1, CS-2, CS-3 and CS-4。 模块的尺寸只有…

GPS数据包格式

版权声明&#xff1a;本文为CSDN博主「jwq2011」的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载请附上原文出处链接及本声明。 原文链接&#xff1a;https://blog.csdn.net/jwq2011/article/details/53674125 GPS 上电后&#xff0c;每隔一定的时间就会返回一…