Android 如何在GPS和网络提供商之间切换

Android 如何在GPS和网络提供商之间切换,android,gps,Android,Gps,我想问一下gps提供商的标准 看看我的代码: private void initLocationManager() { locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); String bestProvider; locListener = new LocationListener() { @Override

我想问一下gps提供商的标准

看看我的代码:

private void initLocationManager() {

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

        String bestProvider; 

        locListener = new LocationListener() {

            @Override
            public void onLocationChanged(Location newLocation) {
                tampilkanPosisikeMap(newLocation);
            }

            public void onProviderDisabled(String arg0) {
                Functions.MakeToast(getApplicationContext(), "GPS tidak tersedia");
            }

            public void onProviderEnabled(String arg0) {
                Functions.MakeToast(getApplicationContext(), "GPS tersedia");
            }

            public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
            }

        };

// look here
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        bestProvider = locManager.getBestProvider(criteria, true);
        locManager.getLastKnownLocation(bestProvider);

        locManager.requestLocationUpdates(bestProvider, 5000, 1, locListener);  

    }
请看标准部分

它是这样工作的吗

如果不符合获得GPS_提供商的标准, 然后它将选择网络提供商作为提供商

是对还是错

谢谢
对不起,我的英语不好:(

它确实应该是这样工作的。似乎是正确的


我曾经体验过,如果不知道最后一个已知的位置,“GetLastKnowLocation()”可能会返回null。但是,既然您没有将其存储在任何值中,为什么不从代码中删除该行?您不需要它…

我只是删除了这一行

criteria.setAccuracy(Criteria.ACCURACY_FINE);
因此,它将从任何精度(从网络和gps提供商处)获得值 当我测试它时,它总是从网络提供商那里得到值


也许如果设备锁定了gps卫星位置,当我在设备上测试它时,它会从gps_提供程序获取值,获取坐标需要很长时间,我认为它没有选择网络提供程序。。。