قطع استفاده برنامه از gps (حل شد)
سلام
در برنامه ای با کلیک روی یک دکمه از GPS استفاده و با کلیک روی دکمه دیگر غیر فعالش می کنم اما برنامه همچنان از gps استفاده می کند (علامت GPSدر حالت در حال استفاده است)
متد استفاده از GPS درون سرویس قرار دارد :
public class BackProcess extends Service {
.
.
.
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//return Service.START_NOT_STICKY;
Toast.makeText(this, "Service onStartCommand", Toast.LENGTH_LONG).show();
if (updateKmByGps) {
gpsLocation();// وقتی تنظیمات روی استفاده از جی پی اس است شروع کن
}
else if (updateKmByDate) {
updateByDate();// وگرنه برحسب زمان عمل کن
}
}
//..........................متد استفاده از جی پی اس
public void gpsLocation() {
G.locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, new LocationListener() {
public void onLocationChanged(Location location) {
.
.
.
.
}
}
}
وقتی سرویس (اک تی وی تی) implements شده از LocationListener باشد با استفاده از متد زیر می شود stop کرد اما درون این کلاس قرار هست کارهای دیگری هم انجام شود و نمی خواهم با شروعش از GPS استفاده شود و همانطور که می بینید گفتم اگر حالتupdateKmByGps بود متد استفاده از GPS را فعال کن(وقتی ازLocationListener امپلمنت می کنم با شروع کلاس استفاده از جی پی اس فعال می شود که مخالف میل من است )
متدی که گفتم هست ولی نمی توانم استفاده کنم به شکل زیر هست(چون به دلایلی که گفتن نمی خواهم کلاس را از LocationListener امپلمنت کنم)
public void stopUsingGPS() {
if (G.locationManager != null) {
G.locationManager.removeUpdates(BackProcess.this);
}
}
در صورت امکان راهنمایی کنید
خیلی ممنون
یاد یکی از ویدیوهای استاد افتادم ، مشکل به این شکل حل می شود ،
locationListenerرا در onCreate می سازیم و بعدا می توانیم بهش اشاره کنیم :
publicclassBackProcessextendsService{
LocationListener locationListener;
.
.
.
@Override
publicint onStartCommand(Intent intent,int flags,int startId){
//return Service.START_NOT_STICKY;
Toast.makeText(this,"Service onStartCommand",Toast.LENGTH_LONG).show();
if(updateKmByGps){
gpsLocation();// وقتی تنظیمات روی استفاده از جی پی اس است شروع کن
}
elseif(updateKmByDate){
updateByDate();// وگرنه برحسب زمان عمل کن
}
///// new locationListner in onCreate i love you ostad ! //////////////
locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
public void onProviderEnabled(String provider) {
Toast.makeText(G.context, "gpsLocation started", Toast.LENGTH_SHORT).show();
}
public void onProviderDisabled(String provider) {
Dialoges.dialogGpsDisbled(R.layout.dialog_gps_disibled);
}
};
//
}
//..........................متد استفاده از جی پی اس
publicvoid gpsLocation(){
G.locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000,5,locationListener );//اینجا از لیسنری که در بالا ساختم استفاده می کنم
}
و برای قطع استفاده از جی پی اس که لیسنر می خواست لیسنری که ساختم را دادم
publicvoid stopUsingGPS(){
if(G.locationManager !=null){
G.locationManager.removeUpdates(locationListener);//لیسنری که در بالا ساخته شد ریمو آپدیت
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .