Android三种GSM手 * 技术分析

时间:2023-04-10 10:09:22 


// 声明LocationManager对象
LocationManager loctionManager;
// 通过系统服务,取得LocationManager对象
loctionManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);


方式一:


// 通过GPS位置提供器获得位置
String providerGPS = LocationManager.GPS_PROVIDER;
Location location = loctionManager.getLastKnownLocation(providerGPS);


方式二:


// 通过基站位置提供器获得位置
String providerNetwork = LocationManager.NETWORK_PROVIDER;
Location location = loctionManager.getLastKnownLocation(providerNetwork);


方式三:


// 使用标准集合,让系统自动选择可用的最佳位置提供器,提供位置
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);// 高精度
criteria.setAltitudeRequired(false);// 不要求海拔
criteria.setBearingRequired(false);// 不要求方位
criteria.setCostAllowed(true);// 允许有花费
criteria.setPowerRequirement(Criteria.POWER_LOW);// 低功耗
// 从可用的位置提供器中,匹配以上标准的最佳提供器
String provider = loctionManager.getBestProvider(criteria, true);
// 获得最后一次变化的位置
Location location = loctionManager.getLastKnownLocation(provider);


处理:


// 显示在EditText中
updateWithNewLocation(location);
// 监听位置变化,2秒一次,距离10米以上
loctionManager.requestLocationUpdates(provider, 1000, 1, locationListener);


* 及显示:


// 位置 *
private final LocationListener locationListener = new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
// 当位置变化时触发
@Override
public void onLocationChanged(Location location) {
// 使用新的location更新TextView显示
updateWithNewLocation(location);
}
};
private void updateWithNewLocation(Location location) {
if (location != null) {
double lat = location.getLatitude();
double lng = location.getLongitude();
latStr = format.format(lat);
lonStr = format.format(lng);
txtLat.setText(latStr);
txtLon.setText(lonStr);
} else {
txtLat.setText("");
txtLon.setText("");
}
}
标签:android,定位方式
0
投稿

猜你喜欢

  • JavaWeb开发中alias拦截器的使用方法

    2023-08-20 10:36:55
  • C#设置页面单位和缩放的方法

    2023-06-09 12:59:27
  • Java程序员应该遵守的10条纪律

    2022-07-16 22:47:41
  • Android中mvp模式使用实例详解

    2023-12-11 19:48:04
  • springboot ErrorPageFilter的实际应用详解

    2023-11-24 01:02:59
  • 在C#和Java语言中for和foreach的区别详解

    2023-01-29 11:31:13
  • Java ExecutorService四种线程池使用详解

    2023-05-17 07:12:56
  • java旋转二维数组实例

    2021-07-04 05:39:48
  • win7中C#的winForm编程使用savefiledialog不能弹出保存窗体的解决方法

    2022-09-18 07:27:57
  • Java界面编程实现界面跳转

    2023-11-12 00:56:45
  • Android编程创建桌面快捷方式的常用方法小结【2种方法】

    2023-12-07 00:50:35
  • java模拟TCP通信实现客户端上传文件到服务器端

    2023-11-26 10:14:49
  • maven将项目打包上传到nexus私服的详细教程

    2023-04-18 16:20:22
  • spring boot集成p6spy的最佳实践

    2023-04-11 23:40:36
  • Android开发中Activity属性设置小结

    2023-10-24 05:27:57
  • 使用Flutter实现一个走马灯布局的示例代码

    2023-06-19 03:50:03
  • 详解mybatis generator代码生成器的使用

    2021-08-28 09:05:42
  • 23种设计模式(19)java责任链模式

    2021-10-19 15:04:00
  • Android 文件操作方法

    2023-06-02 12:51:17
  • Android沉浸式状态栏微技巧(带你真正理解沉浸式模式)

    2022-04-22 01:28:31
  • asp之家 软件编程 m.aspxhome.com