Click here to Skip to main content
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 23:54pm
Edited 17-Jun-12 23: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 240
1 Kamal Rocks 184
2 BillWoodruff 173
3 Sergey Alexandrovich Kryukov 170
4 PIEBALDconsult 160
0 OriginalGriff 5,695
1 DamithSL 4,506
2 Maciej Los 4,007
3 Kornfeld Eliyahu Peter 3,480
4 Sergey Alexandrovich Kryukov 3,180


Advertise | Privacy | Mobile
Web02 | 2.8.141216.1 | Last Updated 19 Jun 2012
Copyright © CodeProject, 1999-2014
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