ऐसा लगता है कि आपको केवल उस प्रतिक्रिया के लिए कोड की आवश्यकता है जब डिवाइस का अभिविन्यास प्रत्येक कोण के बजाय 4 सामान्य उन्मुखताओं में से एक में बदल गया हो। यह 0, 90, 180 और 270 डिग्री का केवल मूल्यों के प्रति उन्मुखीकरण फिल्टर करेगा:
OrientationEventListener myOrientationEventListener;
int iOrientation;
myOrientationEventListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL)
{
@Override
public void onOrientationChanged(int iAngle)
{ // 0 15 30 45 60 75, 90 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 315, 330, 345
final int iLookup[] = {0, 0, 0,90,90, 90,90, 90, 90, 180, 180, 180, 180, 180, 180, 270, 270, 270, 270, 270, 270, 0, 0, 0}; // 15-degree increments
if (iAngle != ORIENTATION_UNKNOWN)
{
int iNewOrientation = iLookup[iAngle/15];
if (iOrientation != iNewOrientation)
{
iOrientation = iNewOrientation;
// take action on new orientation here
}
}
}
};
// To display if orientation detection will work and enable it
if (myOrientationEventListener.canDetectOrientation())
{
Toast.makeText(this, "Can DetectOrientation", Toast.LENGTH_LONG).show();
myOrientationEventListener.enable();
}
else
{
Toast.makeText(this, "Can't DetectOrientation", Toast.LENGTH_LONG).show();
}
मैं इसे अपने हार्डवेयर के साथ काम करने के लिए देखने के लिए थोड़ा महत्व देता बदलना पड़ा, लेकिन यह अच्छी तरह से काम करता है। मेरी इच्छा है कि ऐसा करने का एक बेहतर तरीका था, लेकिन तब तक यह अपना काम कर रहा है। धन्यवाद! – nrflaw
जिन्होंने इसे कभी भी पोस्ट किया है वह एक जी है! मैं थोड़ी देर के लिए इस समस्या पर फंस गया हूं बिना किसी मदद के स्रोत()। GetConfiguration() अभिविन्यास – Matt