첫 번째 앱에서 작업하고 있는데이 앱에는 주 활동과 두 번째 활동 인 2 가지 활동이 있습니다. 모두 활동 (내가 편집에 "인터넷"클래스가 있습니다) 그래서 나는이 같은 클래스를 생성 알고 사용자 위치가 필요합니다앱이 열려있을 때 LocationListener 사용 [Android]
그때 내가 stopUsingGPS를 사용에서 onCreate 이벤트 GPSTracker를 기반으로 객체를 생성의 주요 활동에public class GPSTracker extends Service implements LocationListener {
private final Context mContext;
// flag for GPS status
boolean isGPSEnabled = false;
// flag for network status
boolean isNetworkEnabled = false;
// flag for GPS status
boolean canGetLocation = false;
boolean GPSForce = false;
Location location; // location
double latitude; // latitude
double longitude; // longitude
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
protected LocationManager locationManager;
public GPSTracker(Context context, Boolean forcegps) {
this.mContext = context;
this.GPSForce = forcegps;
getLocation();
}
public Location getLocation() {
...
}
public void startUsingGPS(){
getLocation();
}
public void stopUsingGPS(){
if(locationManager != null){
locationManager.removeUpdates(GPSTracker.this);
}
canGetLocation = false;
}
public double getLatitude(){
if(location != null){
latitude = location.getLatitude();
}
return latitude;
}
public double getLongitude(){
if(location != null){
longitude = location.getLongitude();
}
return longitude;
}
public boolean canGetLocation() {
return this.canGetLocation;
}
public void showSettingsAlert(){
...
}
@Override
public void onLocationChanged(Location location) {
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
() onStop 이벤트에서 사용자가 애플리케이션을 닫을 때 GPS를 중지하고 GPS 사용을 다시 시작하기 위해 onResume 이벤트에서 GPS를 시작()합니다.
내 문제는 두 번째 활동에도 GPS 추적기를 사용해야하지만 두 번째 활동이 열리면 두 번째 활동이 열려 GPS가 중지됩니다 (onStop 이벤트는 두 번째 활동이 사용자가 애플리케이션에서 나가면 열리지 않을 때도 호출됩니다).
내 접근 방식이 잘못되었다고 생각합니다.
GPSTracker 객체를 만들고이 작업을 수행하려면 어떻게해야합니까? - 사용자가 응용 프로그램을 종료 할 때만 GPS 사용을 중지합니다. - 필요한 모든 활동에서 사용하십시오.
나는 활동에서 좌표를 변경하고 싶습니다. 그러나 어떻게 할 수 있을지 모르겠습니다.
방금 시도했지만 사용자가 앱을 닫을 때 onDestroy가 항상 호출되는 것은 아닙니다. 이 사이트에서 많은 질문을 찾을 수 있습니다. – Martin
onDestroy는 앱 기반이 아닌 활동 단위별로 호출됩니다. 사용자가 특정 활동의 버튼을 누르면 해당 활동의 onDestroy가 호출됩니다. –
이 튜토리얼에서와 같이 IBinder 클래스를 사용하는 것이 가장 좋습니다. http://dharmendra4android.blogspot.it/2012/05/bind-service-using-ibinder-class.html – Martin