2013-12-16 1 views
0

Я хочу дать пользователю возможность настроить ориентацию телефона на авто, портрет или пейзаж. Это означает, что для ориентации ТЕЛЕФОНА не только мое приложение. каждое другое приложение должно иметь ориентацию ландшафта. это было довольно просто сделать первые два, как этотandroid lock SYSTEM ориентация на пейзаж (не только мое приложение)

портрет:

Settings.System.putInt(this.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0); 

авто:

Settings.System.putInt(this.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 1); 

, но я не могу найти способ, чтобы установить его на альбомную. Я хочу, чтобы все приложения отображались не только моими. я вижу здесь, что это можно сделать, но он не дает много информации. How to make Android system force LANDSCAPE for all apk?. кто хочет объяснить или предоставить фрагмент кода?

ответ

1

код ниже, может заставить экран в ландшафтном режиме. Он аналогичен настройке на другой режим.

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; 
     } 
    } 
} 
0

В вашем AndroidManifest.xml, для каждого вида деятельности поставил

android:screenOrientation="landscape" 

Это заставляет деятельность альбомную

+0

Я сказал, что ориентация PHONE не является ориентацией моего приложения. что означает, что каждое другое приложение должно иметь ландшафтную ориентацию – Anonymous

 Смежные вопросы

  • Нет связанных вопросов^_^