마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 백그라운드에서 위치가 변경될 때 마다 현재 위치를 받아오고 싶습니다.

0 추천

제가 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();
    }
}
안droid dev (120 포인트) 님이 2018년 5월 22일 질문
안droid dev님이 2018년 5월 23일 수정

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...