Android三种GSM手机定位技术分析
2023-06-13 09:14:42 时间
//声明LocationManager对象
LocationManagerloctionManager;
//通过系统服务,取得LocationManager对象
loctionManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
方式一:
//通过GPS位置提供器获得位置
StringproviderGPS=LocationManager.GPS_PROVIDER;
Locationlocation=loctionManager.getLastKnownLocation(providerGPS);
方式二:
//通过基站位置提供器获得位置
StringproviderNetwork=LocationManager.NETWORK_PROVIDER;
Locationlocation=loctionManager.getLastKnownLocation(providerNetwork);
方式三:
//使用标准集合,让系统自动选择可用的最佳位置提供器,提供位置
Criteriacriteria=newCriteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);//高精度
criteria.setAltitudeRequired(false);//不要求海拔
criteria.setBearingRequired(false);//不要求方位
criteria.setCostAllowed(true);//允许有花费
criteria.setPowerRequirement(Criteria.POWER_LOW);//低功耗
//从可用的位置提供器中,匹配以上标准的最佳提供器
Stringprovider=loctionManager.getBestProvider(criteria,true);
//获得最后一次变化的位置
Locationlocation=loctionManager.getLastKnownLocation(provider);
处理:
//显示在EditText中
updateWithNewLocation(location);
//监听位置变化,2秒一次,距离10米以上
loctionManager.requestLocationUpdates(provider,1000,1,locationListener);
监听器及显示:
//位置监听器
privatefinalLocationListenerlocationListener=newLocationListener(){
@Override
publicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){
}
@Override
publicvoidonProviderEnabled(Stringprovider){
}
@Override
publicvoidonProviderDisabled(Stringprovider){
}
//当位置变化时触发
@Override
publicvoidonLocationChanged(Locationlocation){
//使用新的location更新TextView显示
updateWithNewLocation(location);
}
};
privatevoidupdateWithNewLocation(Locationlocation){
if(location!=null){
doublelat=location.getLatitude();
doublelng=location.getLongitude();
latStr=format.format(lat);
lonStr=format.format(lng);
txtLat.setText(latStr);
txtLon.setText(lonStr);
}else{
txtLat.setText("");
txtLon.setText("");
}
}
相关文章
- android开机动画多长时间_Android开机动画及黑屏[通俗易懂]
- android开机动画多长时间_Android开机动画原理分析
- android图片资源加密,Android平台图像文件加密
- android签名命令行,Android系统签名位置及命令
- android onresume方法,Android onActivityResult()和onResume()的执行顺序
- android activity singletask,Android Activity启动模式之singleTask实例详解
- android sdk安装过程,图文详解Android 3.0 SDK安装教程
- 音乐标签修改 android,音乐标签修改(Star Music Tag Editor)[通俗易懂]
- android toast全屏,Android Toast实现全屏显示
- Android触摸事件_android设置按钮点击事件
- 安卓so文件解密_Android是什么文件
- android scaleanimation动画,Android 动画之ScaleAnimation应用详解「建议收藏」
- Android Studio 简单生成so文件并调用「建议收藏」
- Android webview 加载html 页面缩放的问题
- 【Android 内存优化】Bitmap 内存缓存 ( Bitmap 内存复用 | 弱引用 | 引用队列 | 针对不同 Android 版本开发不同的 Bitmap 复用策略 | 工具类代码 )
- 【Android 逆向】APK 加壳脱壳现状 | 判断 APK 是否加壳 | APK 逆向流程
- 【Android Gradle 插件】TestOptions 配置 ⑤ ( Test 单元测试配置类 | 设置包含或排除单元测试 | 设置堆大小 | 设置测试前后执行的逻辑 )
- 【错误记录】Android Studio 编译报错 ( Could not resolve com.android.tools.build:gradle:7.4.2. )
- android Universal Image Loader for Android 说明文档 (1)详解手机开发
- android FragmentpagerAdapter和FragmentStatePagerAdapter的区别详解手机开发
- Android中的ProgressBar的android:indeterminate详解手机开发
- android连接服务器下载文件工具类详解编程语言
- Google推迟了对Android应用内购买的Play Billing IAP强制要求
- Connecting Android to Oracle: The Ultimate Guide for Seamless Integration.(android连接oracle)
- Android中的android:layout_weight使用详解
- android基础教程之android的listview与edittext冲突解决方法
- Android读取assets目录下的所有图片并显示的方法
- Android实现侦听电池状态显示、电量及充电动态显示的方法