2011-07-07 80 views
4

我正試圖完成Reto Meier推薦的方式,以保持屏幕方向不變。他在Google IO期間的演講幻燈片(請參閱#23)可以在Android Protips: Where to Download the Slides and Code Snippets中找到。Android天然傳感器方向幫助

我已經逐步完成了代碼並設置了值,但屏幕方向仍然發生變化。僅供參考,我在應用程序中註冊了此聽衆。

這裏是我的代碼:目前沒有工作可以在您的AndroidManifest.xml文件中的一些XML值替換的代碼

final SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
    sm.registerListener(
     new SensorEventListener() { 
      @Override 
      public void onSensorChanged(SensorEvent sensorEvent) { 
       if (sensorEvent.sensor.getType() == Sensor.TYPE_ORIENTATION) { 
        final WindowManager wm = (WindowManager) getApplicationContext() 
          .getSystemService(Context.WINDOW_SERVICE); 
        final Display display = wm.getDefaultDisplay(); 

        int x = SensorManager.AXIS_X; 
        int y = SensorManager.AXIS_Y; 

        switch (display.getRotation()) { 
        case Surface.ROTATION_90: 
         x = SensorManager.AXIS_Y; 
         y = SensorManager.AXIS_MINUS_X; 

         break; 
        case Surface.ROTATION_180: 
         y = SensorManager.AXIS_MINUS_Y; 

         break; 
        case Surface.ROTATION_270: 
         x = SensorManager.AXIS_MINUS_Y; 
         y = SensorManager.AXIS_MINUS_X; 

         break; 
        case Surface.ROTATION_0: 
        default: 
         break; 
        } 

        SensorManager.remapCoordinateSystem(sensorEvent.values, x, y, new float[] {}); 
       } 
      } 

      @Override 
      public void onAccuracyChanged(Sensor sensor, int accuracy) { 

      } 
     }, sm.getDefaultSensor(Sensor.TYPE_ORIENTATION), 
     SensorManager.SENSOR_DELAY_NORMAL); 

回答

12

所有30+線。

我們都看到

<activity android:name=".YourActivity" android:screenOrientation="portrait" ></activity> 

,我們都知道,不能很好地與具有景觀的默認方向片工作。但是你們有多少人看到了這個?

<activity android:name=".YourActivity" android:screenOrientation="nosensor" ></activity> 

基本上它使得設備的方向不會響應傳感器。所以如果你的默認是風景或肖像,它不會改變。我已在我的Droid XXoom上測試過它,它的工作原理與我預期的相似。

我希望這可以幫助他人。

+0

@Peter Mortensen感謝您的編輯! – bytebender

+3

請記住,打開/關閉硬件鍵盤的設備的方向仍會改變。 – Tapirboy

+0

不幸的是,在花費大量時間和精力開發應用程序之後,具有默認橫向取向的平板電腦足以給您一大堆負面投票(一顆星)。我經歷過這個! – jap1968