Click here to Skip to main content
11,706,142 members (47,316 online)
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C++ Android Lua
Hi guys,
I need something from your brain and mind d^_^b.
Here's the issue :
I need to know how do android device managing it's orientation? I mean, how do I know it will get Landscape or Portrait or else (on what degree of obliquity).

I got these code :
  float angle = event.vector.roll;
if(angle >= 45 && angle < 135)
		newOrientationType  = OET_ASPECTLANDSCAPE_LEFT;
	else if(angle >= 135 && angle < 225)
		newOrientationType = OET_ASPECTPORTRAIT_REVERSED;
	else if(angle >= 225 && angle < 315)
		newOrientationType = OET_ASPECTLANDSCAPE_RIGHT;
	else
		newOrientationType = OET_ASPECTPORTRAIT;

Here's the clue of above :
angle : determined how much device has been tilted
newOrientationType : determined the orientation.

The question is : "When's 45,135,255,and else degree for the devices?"

Ok, that might be unclear.

So watch this :

^ ^
_ _ , is the normal position (but what degree??) (OET_ASPECTLANDSCAPE_RIGHT)

| >
| > , what degree?? (OET_ASPECTLANDSCAPE_LEFT)

\
\ , what degree?? (OET_ASPECTLANDSCAPE_LEFT)

Note : "_ _" : position of device

"^" and ">" : device's screen facing to (as for the (3), diagonal, it's should be facing 45 degree (top right).

Thanks
Posted 17-Jun-12 22:54pm
Edited 17-Jun-12 22:58pm
v3

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

To enable the data for the angle, you have to write a certain Eventlistener and have to register it with the SensorManager class.


public class myAngleClass extends Activity
{   
    
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        
 
        SensorManager Manager = (SensorManager)
this.getSystemService(SENSOR_SERVICE);        
 
        final float[] mValuesMagnet      = new float[3];
        final float[] mValuesAccel       = new float[3];
        final float[] mValuesOrientation = new float[3];
        final float[] mRotationMatrix    = new float[9];
 
       
        final SensorEventListener mEventListener = new SensorEventListener() {
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
            }
 
            public void onSensorChanged(SensorEvent event) {
               
                switch (event.sensor.getType()) {
                    case Sensor.TYPE_ACCELEROMETER:
                        System.arraycopy(event.values, 0, mValuesAccel, 0, 3);
                        break;
 
                    case Sensor.TYPE_MAGNETIC_FIELD:
                        System.arraycopy(event.values, 0, mValuesMagnet, 0, 3);
                        break;
                }
            };
        };
 
// Register the event listener
    public void regListeners(SensorManager Manager , SensorEventListener list)
    {
       Manager 
             .registerListener(list, Manager  
             .getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
                SensorManager.SENSOR_DELAY_NORMAL);
 

        Manager
              .registerListener(list, 
               sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), 
                SensorManager.SENSOR_DELAY_NORMAL);
 
    }
}
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 196
1 Sergey Alexandrovich Kryukov 151
2 ppolymorphe 61
3 Inimicos 60
4 ProgramFOX 50
0 OriginalGriff 9,050
1 Sergey Alexandrovich Kryukov 8,417
2 CPallini 5,189
3 Maciej Los 4,726
4 Mika Wendelius 3,636


Advertise | Privacy | Mobile
Web01 | 2.8.150819.1 | Last Updated 19 Jun 2012
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100