2012-04-25 3 views
0

私は開発したアンドロイドウィジェットを使用しています。私は私のウィジェットの回転機能を無効にしたくありません。そのため、レンダリングされるのは肖像画のみの風景モードではありません。私のウィジェットの回転を無効にする

私はこのコードを試しましたが、すべてのアプリケーションでrotaionを無効にしました。私はちょうど私のウィジェットをconciderだけです。

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

どのようにすればいいですか?

おかげ

+0

申し訳ありませんが、「...ウィジェットと私は無効にしたくありません」は「...ウィジェットと無効にしたい」でなければなりません。なぜローテーションを無効にしたいのですか?私はウィジェットをペイントしています。回転が発生したときに、ウィジェットをクリックするまで再描画されません。 – ysnky

答えて

1

あなたはトグルデバイスの回転のためaccelerometer_rotationを使用できるサービスを作成し、それがこの

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

0

のように、CONFIGURATION_CHANGEDイベントに登録することができます。マニフェストに

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

関連する問題