और इसलिए मैं पता करने के लिए जब एंड्रॉयड आधारित फोन एक झुकाव के आधार पर कार्यक्रम के लिए एक्स, वाई, जेड दिशाओं घुमाया गया की जरूरत है और फिर मैं अच्छी तरह से परिचालित कोड उन्मुखीकरण खोजने के लिए चुंबकत्व और त्वरण का उपयोग करता है के लिए इस्तेमाल किया के बाद से उन्मुखीकरण डिटेक्टर अविश्वसनीय है और यह अच्छी तरह से और अच्छे एक्स में था, जेड विमानों लेकिन कहते हैं कि एक व्यक्ति तो एंड्रॉयड रजिस्टरों y-दिशा आंदोलन भी उपयोगकर्ता हालांकि एक चक्राकार चलती बस एक निश्चित परिदृश्य स्थिति में अपने फोन पकड़े पर था और की सुविधा देता है अपने फोन को वाई दिशा में नहीं ले गए और इसलिए कार्यक्रम विफल हो गया लेकिन केवल त्वरण का उपयोग करने से भी सटीक नहीं है और मैं सोच रहा हूं कि उपयोगकर्ता के सापेक्ष वाई-गति का पता लगाने की इस समस्या को कैसे हल किया जाए?एंड्रॉयड उन्मुखीकरण का पता लगाने रंग
public class MotionListener {
String service_name = Context.SENSOR_SERVICE;
SensorManager sensorManager;
Sensor sensor;
public MotionListener(Context context) {
sensorManager = (SensorManager) context.getSystemService(service_name);
SensorManager sm = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
Sensor aSensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
Sensor mfSensor = sm.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
sm.registerListener(myAccelerometerListener, aSensor, SensorManager.SENSOR_DELAY_GAME);
sm.registerListener(myMagneticFieldListener, mfSensor, SensorManager.SENSOR_DELAY_GAME);
}
float[] accelerometerValues;
float[] magneticFieldValues;
final SensorEventListener myAccelerometerListener = new SensorEventListener() {
public void onSensorChanged(SensorEvent sensorEvent) {
if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
accelerometerValues = sensorEvent.values;
float[] values = new float[3];
float[] R = new float[9];
try {
SensorManager.getRotationMatrix(R, null, accelerometerValues, magneticFieldValues);
SensorManager.getOrientation(R, values);
values[0] = (float) ((float) values[0] * 180/Math.PI);
values[1] = (float) ((float) values[1] * 180/Math.PI);
values[2] = (float) ((float) values[2] * 180/Math.PI);
System.out.println((int)values[0] + " " + (int)values[1] + " " + (int)values[2]);
setTiltCoordinates(values);
} catch (NullPointerException e) {
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};
संभव नहीं - जो एक पूरी तरह से अलग सवाल – KevinDTimm
नहीं है - डिवाइस के लिए उपयोगकर्ता के उन्मुखीकरण खिला के बिना। ऐसा नहीं कर सकता [संदर्भ के फ्रेम्स] (http://en.wikipedia.org/wiki/Frame_of_reference), आदि। उपयोगकर्ता के रूप में, उन शर्तों के तहत ऐसे ऐप का उपयोग करने का प्रयास करना व्यर्थता में एक अभ्यास है, वैसे भी। – Cheezmeister
+1 मैं उसी – Sameer