2013-08-23 4 views
0

Это мой код для регистрации у оператора сотовой сетипровайдера сети не предоставляют данные о местоположении

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, то он отлично работает, но мне нужно, чтобы получить местоположение от поставщика сети. Я проверил работу с Интернетом, Wi-Fi, но все равно никакого результата.

Его даже не входит в onlocationchanged().

+0

Вы измените NETWORK_PROVIDER на GPS_PROVIDER ?? – Piyush

+0

да, это сработает Я проверил –

+0

Я думаю, вы пропустили, чтобы добавить разрешение для состояния сети. – Piyush

ответ

0

Для сетевого местоположения они намного менее неточны, чем GPS, что означает, что вам нужно переместить устройство на гораздо большее расстояние, чтобы сигнал мог подключаться к другой сетевой башне до того, как вызывается onLocationChanged(). Также не все сетевые башни обеспечивают местоположение.

+0

так приблизительно, только если я перемещу около 4 км, то он может вызвать onLocationChanged(). но он должен вызвать onlocatinchanged() в первый раз, по крайней мере, правильно? –

+0

Это будет зависеть от того, сможет ли он получить обновление местоположения в первую очередь. Если он не мог даже получить одно обновление, например, в режиме самолета, onLocationChanged никогда не будет вызван. – wakaka

+0

@likeitlikeit что это было? дайте мне знать, что вы редактировали и почему? –

0

Я не вижу, где вы инициализируете менеджера местоположений. Я предполагаю, что вы не получаете сообщения, используя сетевое расположение, потому что вы недостаточно перемещаетесь, чтобы инициировать изменение местоположения. Положение сети не очень точное. Я видел, что сетевое позиционирование должно быть более 100 футов, и было бы опасно предположить, что ваше устройство имеет сто-футовый «радиус ошибки», который вам придется перемещать за пределы, чтобы получить обновление местоположения.

Я вырезал-n-наклеил свой код ниже, вы можете варьироваться.

// 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); 
+1

У меня есть intialized locationManger, но я показал, думал показать только основной код. и теперь он возвращает false для isproviderenabled(), хотя мой интернет вверх –

Смежные вопросы