मेरे एंड्रॉइड ऐप में मेरे पास पैनोरमा छवि है और मैं इस छवि को TYPE_ORIENTATION सेंसर का उपयोग करके फ़ोन गति के अनुसार घूर्णन कर रहा हूं, यह परिदृश्य और पोट्रेट दोनों के लिए ठीक काम कर रहा है। रोटेशन तर्क के लिए कोड यहाँ है।एंड्रॉइड में ओरिएंटेशन के ऊपर उल्टा कैसे पता लगाएं?
@Override
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
case Sensor.TYPE_ORIENTATION:
float[] insideval = getValPoints();
event.values[1]=(float) (event.values[1]*2.8);
event.values[2]=(float) (event.values[2]*2.8);
setValPoints(event.values.clone());
if (insideval != null) {
float check= insideval[0] - event.values[0];
if (-1<=check && check <=1) {
//Animation stoped
this.stopAnimation();
}else{
if (getdefaltDeviceOrientation() == ORENTATION_LANDSCAPE) {
// Natural Orientation is landscape
if (getcurrentDeviceOrientation() == 1) {
//ORIENTATION_PORTRAIT
startPoint = CGPoint.CGPointMake(insideval[2], insideval[1]);
if (insideval[0] < event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[2]+ event.values[2], insideval[1]);
} else if (insideval[0] > event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[2]- event.values[2], insideval[1]);
}
} else if (getcurrentDeviceOrientation() == 2) {
//Log.i(TAG, "ORIENTATION_LANDSCAPE");
startPoint = CGPoint.CGPointMake(insideval[1], insideval[2]);
if (insideval[0] < event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[1]- event.values[1], insideval[2]);
} else if (insideval[0] > event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[1]+event.values[1] ,insideval[2]);
}
}
} else if (getdefaltDeviceOrientation() == ORENTATION_PROTRAIT) {
// Natural Orientation is portrait
if (getcurrentDeviceOrientation() == 1) {
//Log.i(TAG, "ORIENTATION_PORTRAIT");
startPoint = CGPoint.CGPointMake(insideval[1], insideval[2]);
if (insideval[0] < event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[1]+ event.values[1], insideval[2]);
} else if (insideval[0] > event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[1]- event.values[1], insideval[2]);
}
} else if (getcurrentDeviceOrientation() == 2) {
//Log.i(TAG, "ORIENTATION_LANDSCAPE");
startPoint = CGPoint.CGPointMake(insideval[2], insideval[1]);
if (insideval[0] < event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[2]- event.values[2], insideval[1]);
} else if (insideval[0] > event.values[0]) {
endPoint = CGPoint.CGPointMake(insideval[2]+event.values[2],insideval[1]);
}
}
}
this.drawView();
}
}
break;
}
}
तो मेरी समस्या यदि डिवाइस का अभिविन्यास उल्टा छवि में परिवर्तन गलत दिशा (बिल्कुल विपरीत दिशा) के लिए बारी बारी से होगा। मैं इस समस्या को कैसे ठीक कर सकता हूं और वास्तव में तब होता है जब डिवाइस अभिविन्यास उल्टा हो जाता है?
धन्यवाद।