2013-02-05 124 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()中初始化您的locationlistener而不是在類中。

+0

gps已啓用。因爲當我的應用程序啓動時,它顯示了我通過'locationManager.getLastKnownLocation()'得到的當前位置。當我改變它不顯示變化。它在仿真器上運行良好 –

0

如果您在建築物內,我的建議是不要使用GPS_PROVIDER,因爲gps在建築物內部不起作用,或者在進行位置修復時需要大量時間。

相關問題