2013-02-05 2 views
1

У меня есть эта проблема. Я получаю обновления местоположения. он отлично работает на моем эмуляторе. но когда я тестирую его на своем устройстве, он показывает текущее местоположение в порядке. но когда я меняю свою позицию, он не показывает мне обновления в моем местоположении. но он отлично работает на эмуляторе. вот мой код Main.javaLocationManager не работает на приводном устройстве

import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.AlertDialog.Builder; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.content.Intent; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.widget.TextView; 
import android.widget.Toast; 

public class Main extends Activity { 

    TextView tvStatus; 
    LocationManager lm; 
    boolean gpsEnabled; 
    LocationListener ls = 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) { 
      tvStatus.setText("Latitude: " 
        + location.getLatitude() + "\nLongitude: " 
        + location.getLongitude()); 
     } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toast.makeText(this, "on create", 300).show(); 
     tvStatus = (TextView) findViewById(R.id.textView1); 
     lm = (LocationManager) getSystemService(LOCATION_SERVICE); 
    } 
    @Override 
    protected void onResume() { 
     super.onResume(); 
     Toast.makeText(this, "on resume", 200).show(); 
     if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
      Location l = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
      tvStatus.setText(l.getLatitude()+" "+ l.getLongitude()); 
      lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ls); 
     }else{ 
      //use network provider 
      Toast.makeText(this, "dsfdsfdsfdsf", 300).show(); 
     } 
    } 
    @Override 
    protected void onPause() { 
     super.onPause(); 
     Toast.makeText(this,"on pause" ,300).show(); 
     lm.removeUpdates(ls); 
    } 

} 

я добавил все permisions в моем Manifest.xml

+0

возможно некоторая регистрация на заказ? ... –

ответ

0

первый, убедитесь, что ваш GPS включен, и сигнал заблокирован/фиксируется на реальном устройстве , если проблема все еще сохраняется, сначала введите свой идентификатор местоположения в OnCreate(), а не в классе.

+0

gps включен. потому что, когда мое приложение запускает, оно показывает текущее местоположение, которое я получил от 'locationManager.getLastKnownLocation()'. когда я меняю его, не отображаются изменения. И он отлично работает на эмуляторе –

0

Если вы находитесь внутри здания, мое предложение не использовать GPS_PROVIDER, поскольку gps не работает много внутри здания или занимает много времени при принятии исправлений местоположения.

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