2013-02-23 14 views
6

यांत्रिक कंपास के उपयोगकर्ता के रूप में, मैंने देखा कि मैग्नेटोमीटर वितरित करने वाला शीर्षक अक्सर 45 डिग्री या उससे अधिक तक बंद होता है, हालांकि कैलिब्रेशन डिस्प्ले उन मामलों में प्रकट नहीं होता है।
आईओएस मैग्नेटोमीटर: कैलिब्रेशन व्यू का बल प्रदर्शन

यदि मैं परीक्षण करता हूं, या अपने ऐप के बाहर का उपयोग करता हूं, तो जब भी मेरा कंपास दृश्य आता है तो मै मैग्नेटोमीटर को कैलिब्रेट करता हूं। यह काम करता है, ऐसा लगता है कि यह आवश्यक है।

मैं आठ ऐप के साथ लगातार अंशांकन निष्पादित करके, मेरे ऐप के उपयोगकर्ताओं को एक गलत शीर्षक प्राप्त करना नहीं चाहता, जब यह एक कम या सटीक प्राप्त करने के लिए संभव है।

क्या कोई भी मेरे कंपास दृश्य के आने पर, मैग्नेटोमीटर अंशांकन दृश्य के प्रदर्शन को मजबूर करने के लिए कोई समाधान जानता है?

मैंने यहां सभी (?) पोस्ट की खोज की, केवल एक व्यक्ति के पास एक समान विचार था, लेकिन बिना किसी जवाब के।

उत्तर

3

नीचे मैं वहाँ यह करने के लिए कोई रास्ता नहीं है डर लग रहा है कि किसी भी एपीआई है न - जबकि एपीआई खारिज अंशांकन दृश्य करने की अनुमति देता (dismissHeadingCalibrationDisplay का उपयोग कर कहते हैं) यह अपने अनुप्रयोग के इंटरफ़ेस में दखल से रोकने के लिए, वहाँ शुरू करने के लिए एक अंशांकन के लिए मजबूर करने के लिए कोई रास्ता नहीं है। मैं एप्पल के साथ एक सुविधा का अनुरोध दाखिल सुझाव देंगे अगर आपको लगता है यह कुछ है कि उपयोगी हो सकता है।

+1

कोई एपीआई नहीं है, लेकिन [इस सरल विधि] (http://stackoverflow.com/a/42877044/1971013) काम करता है। –

1

मुझे लगता है कि iOS6 में और :(

1
- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager 
*)manager { 
     if(!manager.heading) return YES; // Got nothing, We can assume we got to calibrate. 
     else if(manager.heading.headingAccuracy < 0) return YES; // 0 means invalid heading, need to calibrate 
     else if(manager.heading.headingAccuracy > 5)return YES; // 5 degrees is a small value correct for my needs, too. 
     else return NO; // All is good. Compass is precise enough. 
    } 

फ़ॉन्ट :Compass calibration objective-c

+0

प्रश्न अलग था: Asume ios सोचता है कि अंशांकन वर्तमान में आवश्यक नहीं है, लेकिन मुझे लगता है कि इसकी हमेशा आवश्यकता होती है, इसलिए जब भी मैं अपना कंपास दिखाता हूं, तो मैं कैलिब्रेट्यूशन दृश्य चाहता हूं। – AlexWien

+0

'locationManagerShouldDisplayHeadingCalibration:' पहली बार शीर्षक अपडेट को कभी भी अनुरोध किया जाता है, इसलिए आप कम्पास दिखाते हैं और सत्य लौटते ही 'प्रारंभ करना प्रारंभ कर सकते हैं'। क्या तुमने ऐसा करने की कोशिश की थी? –

+0

नहीं, जब सड़क पर लंबी पैदल यात्रा पर आपको अक्सर कंपास की आवश्यकता होती है। लेकिन कंपास केवल सटीक है यदि आप हमेशा इसका उपयोग करके इसे बेकार कर देते हैं। तो मैं मजबूर करना चाहता हूँ !! जब भी मेरा ऐप इसे दिखाने का फैसला करता है तो अंशांकन दृश्य दिखाया जाना चाहिए। – AlexWien

1

एक फ्रिज चुंबक पकड़ो और इसे अपने आईफोन की स्क्रीन के चारों ओर ले जाएं। आपको एक ही समय में अपने आईफोन को कुछ धुरी पर घूमने की आवश्यकता हो सकती है; रचनात्मक बनो।

ध्यान रखें कि एक चुंबक के साथ फिर से चुंबकमीटर को बेवकूफ बनाने के लिए, आपको इसे पृथ्वी चुंबकीय क्षेत्र में खुद को रीसेट करने की अनुमति देनी पड़ सकती है। आप आईफोन को सभी धुरी पर घूर्णन करके ऐसा करते हैं।

मेरे पास एक बग था जो अंशांकन स्क्रीन फिर से गायब होने के बाद हुई थी। उपर्युक्त विधि ने मुझे इसे 10 सेकंड या उससे भी कम समय में दिखाई देने के लिए मजबूर करने की अनुमति दी।

कुछ अतिरिक्त जानकारी: जब अंशांकन स्क्रीन दिखाई देती है AppDelegate के applicationWillResignActive कहा जाता है। फिर जब यह हो जाता है: applicationDidBecomeActive। (मेरे बग: ​​मैं सिर्फ अपने प्रस्ताव प्रबंधक applicationWillEnterForeground में applicationDidBecomeActive से पुनः प्रारंभ नहीं,।)

संबंधित मुद्दे