Code below can force your screen to landscape mode. It is similar to set it to other mode.
public class MyService extends Service {
private boolean mViewAdded = false;
private WindowManager.LayoutParams mLayoutParams;
private View mOverlayView;
private WindowManager mWindowManager;
// Call this some where in your code
private void setLandscapeOrientation() {
mWindowManager = ((WindowManager)getSystemService("window"));
mOverlayView = new View(this);
mLayoutParams = new WindowManager.LayoutParams();
mLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
mLayoutParams.width = 0;
mLayoutParams.height = 0;
mLayoutParams.flags = mLayoutParams.flags |
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED |
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
mLayoutParams.flags = mLayoutParams.flags &
~WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON &
~WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
mLayoutParams.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
if (mViewAdded) {
mWindowManager.updateViewLayout(mOverlayView, mLayoutParams);
} else {
mWindowManager.addView(mOverlayView, mLayoutParams);
mViewAdded = true;
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (mViewAdded) {
mWindowManager.removeView(mOverlayView);
mViewAdded = false;
}
}
}