2013-01-05 12 views
9

मैं एक साधारण ऐप बनाना चाहता हूं जो स्क्रीन पर एक साधारण रेखा खींचता है जब मैं अपने फोन को वाई-अक्ष पर प्रारंभ बिंदु से अंत बिंदु तक ले जाता हूं, उदाहरण के लिए बिंदु (0,0) ख (0, 10) बात करने के लिए मदद करेंआईओएस उपयोगकर्ता का आंदोलन

डेमो:

enter image description here

+1

क्या आप मुझे अपना कोड दे सकते हैं क्योंकि मुझे एक ही समस्या का सामना करना पड़ रहा है। मैंने कोशिश की लेकिन यह मेरे ऐप को दुर्घटनाग्रस्त कर देता है। – user2526811

+0

@ user2526811, मैं आपको आज रात कोड भेजूंगा, अपने मेल एड्रेस –

+0

पोस्ट अपने उत्तर के लिए धन्यवाद। मेरी आईडी है 'pakshay8800 @ gmail.com' – user2526811

उत्तर

14

आप गति प्रबंधक प्रारंभ करने और फिर एक उचित मूल्य के लिए त्वरण motion.userAcceleration.y मान की जाँच की जरूरत है (/ सेकंड/सेकंड मीटर में मापा)।

नीचे दिए गए उदाहरण में मैं 0.05 की जांच करता हूं जो मुझे मिला है फोन का एक काफी सभ्य आगे बढ़ना है। मैं तब तक प्रतीक्षा करता हूं जब तक कि उपयोगकर्ता ड्राइंग से पहले महत्वपूर्ण रूप से (-Y मान) धीमा न हो जाए। डिवाइस MotionUpdateInterval समायोजित करने से गति में परिवर्तन के लिए आपके ऐप की प्रतिक्रिया निर्धारित होगी। अभी यह 1/60 सेकंड पर नमूना है।

motionManager = [[CMMotionManager alloc] init]; 
motionManager.deviceMotionUpdateInterval = 1.0/60.0; 
[motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) { 
    NSLog(@"Y value is: %f", motion.userAcceleration.y); 
    if (motion.userAcceleration.y > 0.05) { 
     //a solid move forward starts 
     lineLength++; //increment a line length value 
    } 
    if (motion.userAcceleration.y < -0.02 && lineLength > 10) { 
     /*user has abruptly slowed indicating end of the move forward. 
     * we also make sure we have more than 10 events 
     */ 
     [self drawLine]; /* writing drawLine method 
          * and quartz2d path code is left to the 
          * op or others */ 
     [motionManager stopDeviceMotionUpdates]; 
    } 
}]; 

नोट इस कोड को मानता है कि फोन फ्लैट झूठ बोल रहा है या थोड़ा झुका हुआ है और उपयोगकर्ता के आगे धक्का है कि (स्वयं से दूर, या फोन के साथ आगे बढ़) पोर्ट्रेट मोड में।

+1

tks जॉन, यह बहुत अच्छा काम करता है: डी –

+1

पृष्ठभूमि में काम नहीं करता है। गो पर उपयोगकर्ता स्थान को ट्रैक करने के लिए, हमें इसे पृष्ठभूमि सक्षम करना होगा। क्या कोई तरीका है कि हम इसे प्राप्त कर सकते हैं? –

+1

@ मोहम्मद अब्दुरराफय टिप्पणियों में एक प्रश्न पूछने के बजाय, आपको जवाब, सहायता आदि प्राप्त करने के लिए [एक नया प्रश्न पूछना चाहिए] (http://stackoverflow.com/questions/ask) –