
在模拟器上获取GPS信息时,使用Location loc = LocationManagergetLastKnownLocation("gps");来获取location信息,但是往往在调试中loc是null的,因为首先需要在模拟器中手动添加GPS信息,有两种手动添加方法
1、在eclipse下,windows-->open perspective-->DDMS-->Emulator control-->Manual下手动设置经纬度,并按send按钮。
2、在cmd下手动添加信息。
(1)首先打开模拟器,然后运行cmd,输入telnet localhost 5554(注:5554是模拟器在本机的端口,有可能不一样哈,具体端口号,模拟器左上方有显示的),这样会出现
Android Console: type 'help' for a list of commands
OK的字样。
如果是使用WIN7的朋友,控制台可能会提示telnet无效什么的,那是因为WIN7下默认是不出现telnet的,需要手动打开。具体为:[1]控制面板-->程序-->打开或关闭Windows功能,然后将Telnet服务器和Telnet客户端勾选上。[2]然后在管理工具-->服务中手动启动Telnet
(2)使用geo命令模拟发送GPS信号:
geo fix 经度 纬度
(3)这时就会发现在模拟器的状态栏上多了一个GPS的标志~再使用Location loc = LocationManagergetLastKnownLocation("gps");就能获取到该坐标的位置了
现在很多手机软件都会在后台获取我们的位置信息,为防止信息泄露,可以将定位关闭。那gps在手机哪个位置能找到?一起来看看吧~
gps在手机哪个位置能找到?手机gps传感器在手机内部,无法找到,但如果想使用手机gps定位,可以开启手机定位功能。
苹果手机开启定位服务步骤如下:
1、打开手机设置,点击隐私。
2、点击定位服务选项。
3、开启定位服务右边的开关即可。
本文以iphone13pro为例适用于iOS 15系统
第一步,申明权限。(50之后权限需要动态申请,具体代码和这个问题无关就不贴出来了)
<!--定位权限-->
<uses-permissionandroid:name=\"androidpermissionACCESS_FINE_LOCATION\"/>
<uses-permissionandroid:name=\"androidpermissionACCESS_COARSE_LOCATION\"/>
第二步通过LocationManager类获取位置信息,下面是一个封装好的工具类
CreatedbyDELLzhanghuirongon2019/3/15
获取当前位置信息
/
publicclassMyLocationUtil{
privatestaticStringprovider;
publicstaticLocationgetMyLocation(){
//获取当前位置信息
//获取定位服务
LocationManagerlocationManager=(LocationManager)MyAppgetContext()getSystemService(ContextLOCATION_SERVICE);
//获取当前可用的位置控制器
List<String>list=locationManagergetProviders(true);
if(listcontains(locationManagerGPS_PROVIDER)){
//GPS位置控制器
provider=locationManagerGPS_PROVIDER;//GPS定位
}elseif(listcontains(locationManagerNETWORK_PROVIDER)){
//网络位置控制器
provider=locationManagerNETWORK_PROVIDER;//网络定位
}
if(provider!=null){
if(ActivityCompatcheckSelfPermission(MyAppgetContext(),ManifestpermissionACCESS_FINE_LOCATION)!=PackageManagerPERMISSION_GRANTED&&ActivityCompatcheckSelfPermission(MyAppgetContext(),ManifestpermissionACCESS_COARSE_LOCATION)!=PackageManagerPERMISSION_GRANTED){
//TODO:Considercalling
//ActivityCompat#requestPermissions
//heretorequestthemissingpermissions,andthenoverriding
//publicvoidonRequestPermissionsResult(intrequestCode,String[]permissions,
//int[]grantResults)
//tohandlethecasewheretheusergrantsthepermissionSeethedocumentation
//forActivityCompat#requestPermissionsformoredetails
returnnull;
}
LocationlastKnownLocation=locationManagergetLastKnownLocation(provider);
returnlastKnownLocation;
}else{
ToastUtilsmakeText(\"请检查网络或GPS是否打开\");
}
returnnull;
}
}
第三步(其实到上一步这个问题已经解决了,这个算扩展吧)将位置信息转换成地址信息。
在高德或者百度地图开发者平台申请访问api许可。将第二步获取到的经纬度信息上传查询对应坐标信息。因为百度和高德用的不是同一个坐标系,查询时仔细看官方API。
直接通过安卓的原生接口获取一个gps的位置意义不是很大。这个数据在一定的坐标系上才有意义。建议去高德的开发平台注册个帐号,引入sdk来做,地理位置与地理位置解析的概念先了解下吧。
//第一步先获取LocationManager的对象LocationManagerGpsManager=(LocationManager)thisgetSystemService(ContextLOCATION_SERVICE);//通过LocationManager的对象来获取到Location的信息。Locationlocation=GpsManagergetLastKnownLocation(LocationManagerGPS_PROVIDER);//Location中经常用到的有以下几种:/locationgetAccuracy();精度locationgetAltitude();高度:海拔locationgetBearing();导向locationgetSpeed();速度locationgetLatitude();纬度locationgetLongitude();经度locationgetTime();UTC时间以毫秒计/注:需要添加使用权限的哦
以上就是关于如何在模拟器上获取GPS信息全部的内容,包括:如何在模拟器上获取GPS信息、gps在手机哪个位置能找到、android开发怎么获得手机的gps等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)