2011-06-02 19 views

उत्तर

13
- (BOOL) isGyroscopeAvailable 
{ 
#ifdef __IPHONE_4_0 
    CMMotionManager *motionManager = [[CMMotionManager alloc] init]; 
    BOOL gyroAvailable = motionManager.gyroAvailable; 
    [motionManager release]; 
    return gyroAvailable; 
#else 
    return NO; 
#endif 

} 

भी देखें मेरी इस ब्लॉग प्रविष्टि आप iOS उपकरणों http://www.makebetterthings.com/blogs/iphone/check-ios-device-capabilities/

+0

#ifdef का उपयोग करने से क्या लाभ होता है? – jonsibley

+1

@jonsibley CMMotionManager केवल आईफोन 4 पर उपलब्ध है .. अगर हम इसे पहले इस्तेमाल करने का प्रयास करते हैं तो यह – Saurabh

+0

संकलित नहीं करेगा, धन्यवाद। – jonsibley

3

CoreMotion के प्रस्ताव प्रबंधक वर्ग एक संपत्ति हार्डवेयर उपलब्धता की जांच करने के लिए बनाया गया है में विभिन्न क्षमताओं के लिए जाँच कर सकते हैं पता करने के लिए। सौरभ की विधि के लिए आपको हर बार एक नया डिवाइस एक जीरोस्कोप जारी किए जाने पर आपके ऐप को अपडेट करने की आवश्यकता होगी (आईपैड 2, आदि)।

CMMotionManager *motionManager = [[[CMMotionManager alloc] init] autorelease]; 

if (motionManager.gyroAvailable) 
{ 
    motionManager.deviceMotionUpdateInterval = 1.0/60.0; 
    [motionManager startDeviceMotionUpdates]; 
} 

अधिक जानकारी के लिए the documentation देखें: यहाँ जाइरोस्कोप की उपलब्धता जांचने के लिए एप्पल संपत्ति दस्तावेज का उपयोग कर नमूना कोड है।

1

मुझे विश्वास है कि @ सौरभ और @ एंड्रयू थीस के उत्तरों केवल आंशिक रूप से सही हैं।

- (BOOL) isGyroscopeAvailable 
{ 
// If the iOS Deployment Target is greater than 4.0, then you 
// can access the gyroAvailable property of CMMotionManager 
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_4_0 
    CMMotionManager *motionManager = [[CMMotionManager alloc] init]; 
    BOOL gyroAvailable = motionManager.gyroAvailable; 
    [motionManager release]; 
    return gyroAvailable; 
// Otherwise, if you are supporting iOS versions < 4.0, you must check the 
// the device's iOS version number before accessing gyroAvailable 
#else 
    // Gyro wasn't available on any devices with iOS < 4.0 
    if (SYSTEM_VERSION_LESS_THAN(@"4.0")) 
     return NO; 
    else 
    { 
     CMMotionManager *motionManager = [[CMMotionManager alloc] init]; 
     BOOL gyroAvailable = motionManager.gyroAvailable; 
     [motionManager release]; 
     return gyroAvailable; 
    } 
#endif 
} 

कहाँ SYSTEM_VERSION_LESS_THAN()this StackOverflow answer में परिभाषित किया गया है:

यह एक अधिक पूर्ण समाधान है।

+0

I इस पृष्ठ पर इन सभी उत्तरों को देखकर पूरी तरह उलझन में हूं। @jonsibley क्या यह सच है कि विधि "gyroAvailable" केवल आईओएस 4 + में उपलब्ध है? – ShayanK

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

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