Question

I want to change the screen orientation from portrait to landscape and vice versa when the user rotates his Android mobile phone clockwise/anticlockwise. Can anyone help me how to achieve this? I do not know what event is fired when the user rotates his Android mobile phone.

For instance, when the user touches the button in UI, touch event is fired. So, when the user shakes his Android mobile phone, what is the event that is fired? Please help me on this.

Was it helpful?

Solution

Hai, I got Solution with the help of Georgy Gobozov, But that solution has to be refined as shown below to work it properly,

@Override
    public void onConfigurationChanged(Configuration newConfig) {
          super.onConfigurationChanged(newConfig);

     if(newConfig.equals(Configuration.ORIENTATION_LANDSCAPE))
     {
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  
     }
     else if(newConfig.equals(Configuration.ORIENTATION_PORTRAIT))
     {
          setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
     }
    } 

OTHER TIPS

Just add to your AndroidManifest in activity

android:configChanges="keyboardHidden|orientation"

Then you should override this method in your activity

@Override
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  setContentView(R.layout.myLayout);
}

And use search, this question is very popular.

 public class Accelerometer extends Activity 
    implements AccelerometerListener{

    public void onShake(float force) {
         Toast.makeText(this, "Phone shaked : " + force, 1000).show();
    }
 }

You can refer to below link

http://blog.androgames.net/85/android-accelerometer-tutorial/

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top