제가 Tmap API를 받아서 현재 위치를 받거나 네비게이션을 사용하는 어플리케이션을 개발중인데
Tmap API는 현재 위치를 받아오는 코드가 Activity에서만 받아올 수 있게 되어있네요
그래서 서비스에 LocationManager를 통해서 벡그라운드에서 계속 현재 위치를 받아 오려고 하는데 현재 위치를 받아오지 못하네요 이에 대한 조언 좀 구합니다ㅠㅠㅠ
public class MessageService extends Service implements TMapGpsManager.onLocationChangedCallback {
private static String TmapKey = "";
private TMapGpsManager tMapGpsManager = null;
double synclat;
double synclon;
@Override
public void onLocationChange(Location location) {
synclat = location.getLatitude();
synclon = location.getLongitude();
}
private final LocationListener mLocationListener = new LocationListener() {
public void onLocationChanged(Location location) {
//현재위치의 좌표를 알수있는 부분
if (location != null) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
synclat = latitude;
synclon = longitude;
}
}
};
public void setGps() {
final LocationManager lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
{}
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, mLocationListener);
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
final TMapData tMapData = new TMapData();
tMapData.convertGpsToAddress(synclat, synclon, new TMapData.ConvertGPSToAddressListenerCallback() {
@Override
public void onConvertToGPSToAddress(String s) {
sendSMS("01012345678",s);
}
});
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onCreate() {
super.onCreate();
if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)!=PackageManager.PERMISSION_GRANTED){
return;
}
setGps();
}
}