آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

قطع استفاده برنامه از gps  (حل شد)

hamcalas  11 سال پیش  11 سال پیش
0 0

سلام

در برنامه ای با کلیک روی یک دکمه از 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);
}
}

  در صورت امکان راهنمایی کنید

خیلی ممنون

0 0
یاری اندر کس نمی بینم یاران را چه شد ! (11 سال پیش)
0 0
یعنی راهی برای قطع استفاده برنامه از جی پی اس نیست ؟ (11 سال پیش)
0 0
دوست عزیز من همه مدل کد رو برای این کار تست کردم جواب نمیده، یعنی هرکدوم روی نسخه خاصی جواب میده. کد استیبلی وجود نداره، تنها راهی که هست و کار می کنه اینه که چک کنی اگر روشن یا خاموش بود آلرت بدی طرف بره تو تنظیمات جی پی اس و... کدشو اگر پیدا نکردی بگو (11 سال پیش)
+1 0
ممنون از توجهتان مشکل حل شد٬ پایین توضیح دادم ٬ (11 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
hamcalas  11 سال پیش
0 0

یاد یکی از ویدیوهای استاد افتادم ، مشکل به این شکل حل می شود ،

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);//لیسنری که در بالا ساخته شد ریمو آپدیت
}

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .