网络提供商不提供位置更新

时间:2013-08-23 14:42:59

标签: android

这是我注册网络提供商的代码

 netlocationListener = new MynetLocationListener();
                locationMangaer.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,interval,mttravel,
                           netlocationListener);



    /*----------Listener class to get coordinates ------------- */
        private class MynetLocationListener implements LocationListener {
            @Override
            public void onLocationChanged(Location loc) {



             Toast.makeText(getBaseContext(), "accuracy & network provider"+loc.getAccuracy(),Toast.LENGTH_LONG).show();
              Toast.makeText(getBaseContext(), "location changed", Toast.LENGTH_LONG).show();

              CharSequence time1=android.text.format.DateFormat.format("MM-dd-yyyy  hh:mm:ss", new java.util.Date());
             .LENGTH_LONG).show();
              String date =time1.toString();

              float tsp= 0;

                   Toast.makeText(getBaseContext(),"Location changed : Lat: " + loc.getLatitude()
                                    + " Lng: " + loc.getLongitude(),Toast.LENGTH_SHORT).show();
                    String longitude = Double.toString(loc.getLongitude());  
                    Log.v(TAG, longitude);
                    String latitude =Double.toString( loc.getLatitude());
                    Log.v(TAG, latitude);

                    /*----------to get City-Name from coordinates ------------- */
                    String cityName=null;                 
                    Geocoder gcd = new Geocoder(getBaseContext(), Locale.getDefault());                  
                    List<Address>  addresses = null;  
                    try {  
                     addresses = gcd.getFromLocation(loc.getLatitude(), loc.getLongitude(), 1);  
                     if (addresses.size() > 0)  
                     // System.out.println(addresses.get(0).getLocality());  
                     cityName=addresses.get(0).getLocality();  
                    } catch (IOException e) {                 
                     e.printStackTrace();  
                    } 
                   String accuracy=Float.toString( loc.getAccuracy());
                    String s = longitude+"\n"+latitude +"\n\nMy Currrent City is: "+cityName + "accuracy"
                            + accuracy + "speed"+loc.getSpeed();

}

显示为真 -

Toast.makeText(getBaseContext(), Boolean.toString(locationMangaer.isProviderEnabled(LocationManager.NETWORK_PROVIDER)), Toast.LENGTH_LONG).show();

如果我将提供商更改为GPS,那么它可以完美运行,但我需要从网络提供商处获取位置。我检查过使用互联网,wifi,但仍然没有结果。

它甚至没有进入onlocationchanged()。

2 个答案:

答案 0 :(得分:0)

对于基于网络的位置,它们比GPS更不准确,这意味着您需要将设备移动更远的距离以允许信号挂接到另一个网络塔之前     onLocationChanged()被调用。此外,并非所有网络塔都提供位置。

答案 1 :(得分:0)

我看不到你在哪里初始化位置管理器。我猜你没有使用网络位置获取消息,因为你没有足够的移动来触发位置变化。网络位置不是很准确。我已经看到网络定位超过100英尺,并且会猜测您的设备有一百英尺的“误差半径”,您必须移动到外面才能获得位置更新。

我已经在下面剪了我的代码,你的里程可能会有所不同。

// see if this line gives you what you want
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

// get location via network
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,  locationListener);

// get location via GPS
//locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);