谷歌原生GPS定位处理【locationProvider】

news/2025/2/22 15:54:01/

加权限:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>

完整代码:

public class MainActivity extends AppCompatActivity {private static final String TAG = "MainActivity";private LocationManager locationManager;private String locationProvider;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);locationManager = (LocationManager) getSystemService(getApplicationContext().LOCATION_SERVICE);//下面注释的代码获取的location为null,所以采用Criteria的方式。/*List<String> providers = locationManager.getProviders(true);if (providers.contains(LocationManager.GPS_PROVIDER)) {//如果是GPSlocationProvider = LocationManager.GPS_PROVIDER;Log.d(TAG, "onCreate: gps=" + locationProvider);} else if (providers.contains(LocationManager.NETWORK_PROVIDER)) {//如果是NetworklocationProvider = LocationManager.NETWORK_PROVIDER;Log.d(TAG, "onCreate: network=" + locationProvider);} else {Log.d(TAG, "onCreate: 没有可用的位置提供器");Toast.makeText(this,"没有可用的位置提供器",Toast.LENGTH_SHORT).show();return;}//获取Location,老是获取为空!所以用locationManager.getBestProvider(criteria, true);Location location = locationManager.getLastKnownLocation(locationProvider);*/Criteria criteria = new Criteria();criteria.setAccuracy(Criteria.ACCURACY_COARSE);//低精度,如果设置为高精度,依然获取不了location。criteria.setAltitudeRequired(false);//不要求海拔criteria.setBearingRequired(false);//不要求方位criteria.setCostAllowed(true);//允许有花费criteria.setPowerRequirement(Criteria.POWER_LOW);//低功耗//从可用的位置提供器中,匹配以上标准的最佳提供器locationProvider = locationManager.getBestProvider(criteria, true);if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {Log.d(TAG, "onCreate: 没有权限 ");return;}Location location = locationManager.getLastKnownLocation(locationProvider);Log.d(TAG, "onCreate: " + (location == null) + "..");if (location != null) {Log.d(TAG, "onCreate: location");//不为空,显示地理位置经纬度showLocation(location);}//监视地理位置变化locationManager.requestLocationUpdates(locationProvider, 0, 0, locationListener);}/*** LocationListern监听器* 参数:地理位置提供器、监听位置变化的时间间隔、位置变化的距离间隔、LocationListener监听器*/LocationListener locationListener = new LocationListener() {@Overridepublic void onStatusChanged(String provider, int status, Bundle arg2) {}@Overridepublic void onProviderEnabled(String provider) {Log.d(TAG, "onProviderEnabled: " + provider + ".." + Thread.currentThread().getName());}@Overridepublic void onProviderDisabled(String provider) {Log.d(TAG, "onProviderDisabled: " + provider + ".." + Thread.currentThread().getName());}@Overridepublic void onLocationChanged(Location location) {Log.d(TAG, "onLocationChanged: " + ".." + Thread.currentThread().getName());//如果位置发生变化,重新显示showLocation(location);}};private void showLocation(Location location) {Log.d(TAG,"定位成功------->"+"location------>经度为:" + location.getLatitude() + "\n纬度为" + location.getLongitude());}
}


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

相关文章

GPS开发、定位修改

GPS开发、定位修改 修改于 AOSP android7.1.1_r1 NMF26F openjdk8.0 Mint-linux nexus5x 原作者:https://blog.csdn.net/aggresss/article/details/54323034 指出文中错误&#xff08;自己编译时候遇到的&#xff09;并修正 固件共享出来是不可能的&#xff0c;谁知道我的固件…

Android-Framework-GPS定位原理和修改

一、 Android定位功能原理概述 1.1 Android三种定位提供方式。 Android 应用层获取定位可以通过三种定位提供方式&#xff1a;gps&#xff0c;network&#xff0c;passive。 gps –>&#xff08;GPS&#xff0c;AGPS&#xff09;&#xff1a; GPS位置提供者的名称。该提供商…

Autoware 中 GPS 定位问题

本文转载自 [1] isl_qdu. Autoware 中 GPS 定位问题 [EB/OL]. https://www.jianshu.com/p/9bfdd11c3fa8, 2019-03-04/2021-09-25. [2] LeonHuo. Autoware 笔记 No. 5——基于GNSS的定位 [EB/OL]. https://www.cnblogs.com/hgl0417/p/11504570.html, 2019-09-11/2021-09-25. 一…

【微信小程序-uniapp】CustomDialog 居中弹窗组件

1. 效果图 2. 组件完整代码 <template><uni-popup :ref="ref" type="center" @change

ES6: Proxy概念及用法

Proxy如其名&#xff0c; 它的作用是在对象和和对象的属性值之间设置一个代理&#xff0c;获取该对象的值或者设置该对象的值&#xff0c; 以及实例化等等多种操作&#xff0c; 都会被拦截住&#xff0c; 经过这一层我们可以统一处理&#xff0c;我们可以认为它就是“代理器” …

【转】nbsp;多姿多彩的宜兴话

http://hi.baidu.com/&#xfffd;lounge/blog/item/e64710cd66da6394c91768e1.html 【转】 多姿多彩的宜兴话 源于生活&#xff0c;传承古音&#xff0c;吸收外来语&#xff0c;合音&#xff0c;多音&#xff0c;文白两读&#xff0c;方言岛&#xff0c;构成了一个多姿多彩的…

服装店起名的知识

服装店起名第一要考虑服装本身用户群体的定位&#xff0c;如女装男装童装&#xff0c;不同用户定位肯定名字不一定&#xff0c;其次服装店起名要考虑名字好记&#xff0c;好读&#xff0c;有利于店铺品牌的传播和推广&#xff0c;如何服装店取名怎么样&#xff0c;有什么名字来…

免费药店简介api 获取药店详情

药店大全可查询药店联系电话,药店邮箱,药房网址、药房地址等相关药店简介信息。 !!注意:这里logo是医院的LOGO,由于有些医院暂且还没有LOGO,网站返回的默认 logo=img/drugstore/default.jpg ;这里开发者可以自由的修改默认返回的LOGO。 对于一些不存在的的参数值这里返…