728x90
안녕하세요. 맵뷰를 공부하다가 질문이 생겨서 글을 올리게 되었습니다.
서비스중에 일정조건이 되면(백그라운드) 맵뷰를 실행하게 소스를 짰습니다.
그런데 맵뷰가.. 실내에 오래있거나..(3~4시간은 핸드폰을 사용안할경우) 이럴경우에는,
GPS를 잡는데 오래걸리는 문제점이 있어서..
그래서 30분단위별..또는 1시간별로 백그라운드에서 한번씩만
신호를 주고받아볼까 하는데
어떤 방법이 있을까요?
LocationManager 중에 제공되는것이 없을까요..?
조언 좀 부탁드리겠습니다.
[출처] 안드로이드사이드 - http://www.androidside.com/B49/53982
알람매니저에 setRepeating이 있습니다.
일단 등록을해두면 특정 시간이나 일정 시간 간격으로
브로드캐스킹리시버로 메세지를 받을 수 있습니다.
public class Background extends Service implements OnSharedPreferenceChangeListener {
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
super.onStartCommand(intent, flags, startId);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000, 0, locationListener);
}
// 현재 위치 갱신 리스너
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// 주소 리스트
List<Address> address = null;
// 위도, 경도 구하기
latitude = location.getLatitude();
longitude = location.getLongitude();
// 위도, 경도로 주소 구하기
try {
address = bCoder.getFromLocation(latitude, longitude, 1);
}
catch(IOException ioe) {
}
// 주소 출력
if(address == null) {
Toast.makeText(getApplicationContext(), "위도 : " + latitude + ", 경도 : " + longitude, Toast.LENGTH_SHORT).show();
}
else {
vibrator.vibrate(100);
Toast.makeText(getApplicationContext(), address.get(0).getAddressLine(0), Toast.LENGTH_SHORT).show();
}
gp = new GeoPoint((int)(latitude*1E6), (int)(longitude*1E6));
}
public void onProviderEnabled(String provide) {
}
public void onProviderDisabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
};
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// 주소 리스트
List<Address> address = null;
// 위도, 경도 구하기
latitude = location.getLatitude();
longitude = location.getLongitude();
// 위도, 경도로 주소 구하기
try {
address = bCoder.getFromLocation(latitude, longitude, 1);
}
catch(IOException ioe) {
}
// 주소 출력
if(address == null) {
Toast.makeText(getApplicationContext(), "위도 : " + latitude + ", 경도 : " + longitude, Toast.LENGTH_SHORT).show();
}
else {
vibrator.vibrate(100);
Toast.makeText(getApplicationContext(), address.get(0).getAddressLine(0), Toast.LENGTH_SHORT).show();
}
gp = new GeoPoint((int)(latitude*1E6), (int)(longitude*1E6));
}
public void onProviderEnabled(String provide) {
}
public void onProviderDisabled(String provider) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
};
728x90
'Android' 카테고리의 다른 글
안드로이드 터치 이벤트 발생시키기 (0) | 2014.08.21 |
---|---|
안드로이드 채팅 소스 (0) | 2014.03.28 |
안드로이드 푸쉬 알림 (0) | 2013.11.20 |
android music player control adb (0) | 2013.09.07 |
안드로이드 볼륨 조절 소스 (0) | 2013.08.29 |