2013-02-05 6 views
1

이 문제가 있습니다. 위치 업데이트를 받고 있습니다. 그것은 내 에뮬레이터에서 잘 작동합니다. 하지만 내 장치에서 테스트하면 현재 위치가 잘 표시됩니다. 하지만 내 위치가 바뀌면 내 위치에 업데이트가 표시되지 않습니다. 하지만 그것은 에뮬레이터에서 잘 작동합니다. 여기, 당신의 GPS가 활성화되고 신호가 실제 장치에서 고정/고정되어 있는지 확인 Main.javaLocationManager가 actuall 장치에서 작동하지 않습니다.

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); 
    } 

} 

난 내 manifest.xml의 모든 권한 '을 추가 한

+0

아마도 일부 로깅이 ... ... –

답변

0

먼저 내 코드입니다 . 문제가 계속 지속되면 locationListener를 클래스가 아닌 OnCreate()에 초기화합니다.

+0

gps가 사용 설정되었습니다. 왜냐하면 내 앱이 시작될 때'locationManager.getLastKnownLocation()'에 의해 현재 위치가 표시되기 때문입니다. 내가 변경하면 변경 사항이 표시되지 않습니다. 그리고 그것은 에뮬레이터에서 잘 작동합니다 –

0

건물 내부에있는 경우 gps가 건물 내부에서 많이 작동하지 않거나 위치 수정을 수행하는 데 많은 시간이 걸리므로 GPS_PROVIDER를 사용하지 않는 것이 좋습니다.

관련 문제