سؤال

لا أحد يعرف كيفية إيقاف GPS فون برمجيا؟ مرة واحدة وأنا استخدم CLLocationManager للحصول على ثلاثة يقرأ من مكاني أتوقف عن موقع تحديث كما في التعليمات البرمجية أدناه:

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation
       fromLocation:(CLLocation *)oldLocation {

if((newLocation.horizontalAccuracy >  0.0f) &&
   (newLocation.horizontalAccuracy < 7000.0f) ){

    if(self.locations.count > 3){
        [self.locationManager stopUpdatingLocation];
    }
    [self.locations addObject:newLocation];
}

ولكن هذا لا يزال يبدو لمغادرة GPS في حين أن المستخدمين يستخدمون التطبيق الخاص بي، واستنزاف البطارية الخاصة. كل ما عليك القيام به هو قراءة الموقع ثلاث مرات حتى أستطيع أن الحصول على قراءة دقيقة، ثم قم بإيقاف تشغيل نظام تحديد المواقع. لا أحد يعرف كيفية اغلاق GPS مع موضوعي-C؟

هل كانت مفيدة؟

المحلول

وstopUpdatingLocation إعطاء مدير موقع الخيار لإيقاف الأجهزة، ولكن ليست مضمونة. ومن المفترض أن تغلق الجهاز عندما لا أحد يحتاج إليها. في الممارسة العملية، فإنه يبدو للعمل كما هو متوقع.

هل من الممكن stopUpdatingLocation فقط لم يحصل يسمى؟ في المقتطف أعلاه، فإنه لا يبدو أن من غير المعقول أن التعليمات البرمجية أبدا يجعل لهذه الدعوة.

نصائح أخرى

وأتساءل ما إذا كنت بحاجة إلى خط اضافي لجعله إلى:

[locationManager stopUpdatingLocation];
locationManager.delegate=nil;

ولوقف مدير الموقع. وهذا هو ما يمكنني استخدام والعديد من الأماكن لديها هذه السطور 2 معا. حظا سعيدا.

وأبل مستندات تقول أن مدير الموقع سيتم إيقاف أجهزة GPS إذا دقة موقعك أكثر من كيلومتر واحد:

<اقتباس فقرة>   

وعلى سبيل المثال، وتحديد الدقة المطلوبة لأحداث موقع لكيلومتر واحد يعطي مدير موقع المرونة لإيقاف أجهزة GPS وتعتمد فقط على واي فاي أو خلية أجهزة الراديو. يمكن إيقاف أجهزة GPS تؤدي إلى توفير الطاقة كبيرة.   من المراجع الدرجة CLLocation

وانتبه يجب عليك استخدام ستاندارت الوحيد التغييرات (ليس كبيرا) موقع تتبع.

ليس من المفترض

وتطبيقات الطرف الثالث للمس إعدادات الأجهزة، لذلك انا ذاهب الى تخمين لا يمكنك أن تفعل هذا.

ويجب أن يكون أسلوب stopUpdateLocation التأثير المطلوب. هل حاولت ما إذا كان يتم استدعاؤه على الإطلاق (يمكنك القيام بذلك عن طريق وضع نقطة توقف عند خط).

ومعي، وكان المثال خريطتي تبين موقع المستخدم الذي عقد GPS الذهاب. يمكن أن يكون تلميح إلى أي شخص يحاول كل ما سبق دون أي حظ.

إليك يا stopGPS () وظيفة:

-(void) stopGPS
{
   NSLog(@"Stopgps");

   myMap.delegate = nil;
   myMap.showsUserLocation = NO;
   myMap = nil;

   [locationManager stopMonitoringSignificantLocationChanges];
   [locationManager stopUpdatingHeading];
   [locationManager stopUpdatingLocation];
   locationManager.delegate = nil;
   locationManager = nil;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top