2012-01-04 17 views
10

मैं एंड्रॉइड के लिए एक कंपास उदाहरण खोज रहा हूं। मुझे बस सही असर प्राप्त करने की आवश्यकता है (चित्र & लैंडस्केप मोड में)।एंड्रॉइड कंपास उदाहरण

मैं पहले से ही कई नमूने पाया, कुछ का उपयोग केवल Sensor.TYPE_ORIENTATION, कुछ Sensor.TYPE_ACCELEROMETER & Sensor.TYPE_MAGNETIC_FIELD का एक संयोजन का उपयोग करें।

एंड्रॉइड 1.6 - 4.0 कहने के लिए असर पाने के लिए सही & सामान्य तरीका कौन सा है?

उत्तर

19

Sensor.TYPE_ORIENTATION बहिष्कृत किया गया है।

प्रलेखन कहता है कि आपको इसके बजाय SensorManager.getOrientation() का उपयोग करना चाहिए।

तो तुम Sensor.TYPE_ACCELEROMETER से और साथ ही Sensor.TYPE_MAGNETIC_FIELD से पढ़ना चाहिए, और फिर SensorManager.getRotationMatrix() और अंत में SensorManager.getOrientation() जो आप फोन के उन्मुखीकरण वापस आ जाएगी कहते हैं।

यदि आप इस आरेख को देखते हैं तो फोन के अभिविन्यास को प्राप्त करने के लिए यह छोटा है। यह शायद आपका दूसरा उदाहरण करता है, लेकिन मुझे नहीं पता क्योंकि आपने मुझे यह नहीं दिखाया कि यह क्या है।

+4

क्षमा करें मैं उदाहरण संलग्न करना भूल गया: http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html तो यह सही तरीका है? – nr1

+0

हाँ कि उस लिंक में सामान सही दिखता है – Dan

+0

जाहिर है कि आप डेटा का उपयोग कैसे करते हैं, 'ऑन सेंसर चेंज' जहां दिलचस्प गणित है। – Dan

0

Sensor.TYPE_ACCELEROMETER और Sensor.TYPE_MAGNETIC_FIELD और SensorManager.getOrientation() विधि के संयोजन का उपयोग करके मुझे सटीक मान नहीं मिलते हैं। बहिष्कृत विधि Sensor.TYPE_ORIENTATION अच्छी तरह से काम करता है। :)

+3

फिर अपने कोड को ठीक करें। कोड नमूना ठीक काम कर रहा है (http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html gezdy की टिप्पणी के साथ जोड़ा गया) – Vaiden

+1

या शायद आपको अपने डिवाइस को फिर से लिखना होगा – Vaiden

5

अपने नमूना कोड के लिए दान के लिए धन्यवाद।

लेकिन वहाँ है सिर्फ एक थोड़ा सुधार: परिवर्तन event.values इस discussion के अनुसार event.values.clone() करने के लिए।
यह इस संशोधन के बाद अब मेरे लिए काम करता है।