2012-04-25 55 views
0

我已經開發和Android的部件,我不想禁用我的部件的旋轉功能。所以它只會呈現portraid從不橫向模式。禁用旋轉爲我的部件

我試過這段代碼,但它禁用所有應用程序的rotaion。我只是對我的小部件進行了簡化。

public static void setAutoOrientationEnabled(ContentResolver resolver, boolean enabled) {  
    Settings.System.putInt(resolver, Settings.System.ACCELEROMETER_ROTATION, enabled ? 1 : 0); 
} 

我該怎麼做?

感謝

+0

抱歉錯字「...小部件,我不想禁用」必須「...小部件,我想禁用」。爲什麼我想禁用roation是,我畫的部件,它不會重新旋轉時發生,直到我點擊任何按鈕。 – ysnky 2012-05-08 08:44:05

回答

1

您可以創建一個服務,它註冊到CONFIGURATION_CHANGED事件,像這樣

public class MyService extends Service { 


@Override 
public void onCreate() { 
    super.onCreate(); 

    BroadcastReceiver bReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      refreshWidget(); // Code to refresh the widget 
     } 
    }; 

    IntentFilter intentFilter = new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED); 
    registerReceiver(bReceiver, intentFilter); 
+0

但它會消耗電池,不是嗎? – ysnky 2012-05-08 08:28:53

0

可以使用accelerometer_rotation來回切換設備旋轉:

String str = Settings.System.getString(paramContext.getContentResolver(), "accelerometer_rotation"); 
if (str.equals("0")) 
     { 
     Settings.System.putString(paramContext.getContentResolver(), "accelerometer_rotation", "1"); 
     } 
if (!str.equals("1")) 
     Settings.System.putString(paramContext.getContentResolver(), "accelerometer_rotation", "0"); 
} 

清單中。 xml:

<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
+0

但像這種變化影響所有應用程序。我不想影響其他應用程序,我只想禁用我的應用程序的旋轉。 – ysnky 2012-05-08 08:34:30