2012-03-21 3 views
0

위치 관리자를 사용하지만 현재 실행중인 활동이 아닌 클래스를 만들려고하고 있는데 문제가 있습니다. 그래서 어떤 활동에서이 클래스를 호출하면 백그라운드에서 모든 것을 수행합니다. 서비스 확장을 시도했지만 null 포인터 오류를 반환합니다.null 위치 포인터를 반환하는 Android 위치 관리자 예외

오류를 반환하는 것은이 코드 줄입니다.

public class BackgroundGps extends Service{ 
UserObject uo = null; 
BackgroundGps(UserObject userObj){ 
    uo = userObj; 
    uo.setHeader("GPSUpdate"); 
} 
public void locationListener(){ 
    LocationManager mlocManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE); 
    LocationListener mlocListener = new LocationListener(){ 
     public void onLocationChanged(Location location){ 
      if(uo.getLatitude() == ("" + location.getLatitude()) && uo.getLongitude() == ("" + location.getLongitude())){} 
      else{ 
       uo.setLatitude("" + location.getLatitude()); 
       uo.setLongitude("" + location.getLongitude()); 
       updateGPS(); 
      } 
     } 
     public void onStatusChanged(String provider, int status, Bundle extras) {} 
     public void onProviderEnabled(String provider) {} 
     public void onProviderDisabled(String provider) {} 
    }; 
    mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000, 5, mlocListener); 
    mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000, 5, mlocListener); 
} 

감사

+0

에뮬레이터 또는 장치에서 실행 중이십니까? – Sid

+0

현재 기기에서 실행 중입니다. – Arran

답변

1

획득 시스템 위치 관리자에 대한 참조

LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 
을 locationManager가 리스너를 등록 에뮬레이터

에 의지, 장치에 nullpointer를 포기하지 않습니다

위치 업데이트를 수신 할 위치 관리자. 여기 *

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 
+0

여전히 오류가 반환됩니다. 나는 더 많은 코드를 첨부했다. – Arran

+0

모든 활동에서 BackgroundGps Service를 실행하고 활동 컨텍스트를이 서비스에 전달하고, –

0

당신은 현재 ContextgetSystemService()를 호출 할 필요가 당신의 필요에 따라 NETWORK_PROVIDER 또는 GPS_PROVIDER 등을 사용할 수 있습니다. 이 클래스를 호출 할 때 현재 Context을 전달합니까?

0

정말로 인 텐트를 사용하는 서비스가 시작 되었습니까?

활동 내에서 new BackgroundGps()을 만들지 않은 경우 서비스에 컨텍스트 (null)가 없습니다.