1

私のアプリケーションでは、特定のアクティビティの下で画面を常にアクティブにしておく必要があります (従来の keepScreenOn)。

バッテリーの消費を少し減らすために、省エネルギーシステム(デフォルトに似た)タイプを実装したいと思います:

非アクティブ状態が 10 秒続くと、輝度が最小になり (一時停止などのアクティビティを送信することなく)、明るさをタップすると通常に戻ります。

そのようなシステムを実装することは可能ですか? アイドル時間を自動的に計算する方法はありますか? (そうしないと、10 から 0 への Cooldwon を作成し、各ユーザーのタップで 10 に繰り越されるため...)

どうもありがとうございました

4

4 に答える 4

1

これはWindowManager.LayoutParamsを使用して可能だと思います:

WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
layoutParams.screenBrightness = 1F; // or whatever, but a float
getWindow().setAttributes(layoutParams);

値の範囲は 0 (暗い) から 1 (明るい) です。0 未満の値を指定すると、Android のデフォルト値がリセットされます。

于 2014-12-04T09:28:10.260 に答える
1

Settings.System.SCREEN_BRIGHTNESS を使用して、システムのデフォルトの明るさを次のように設定してみてください。

android.provider.Settings.System.putInt(getContentResolver(),  
android.provider.Settings.System.SCREEN_BRIGHTNESS,brightness /100.0f); // 0-255 

これらの権限をマニフェストに追加します。

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

于 2014-12-04T09:32:29.177 に答える
0

TimerTaskを使用してタイミングを処理する

使用する

@Override
public void onUserInteraction() {
    // TODO Auto-generated method stub
    super.onUserInteraction();

    Log.d(TRCU.LOG_TAG,"User Interaction : "+userInteractionTimeout);

}

ユーザー インタラクション イベントを取得する

また、明るさを調整することもできます

         // Update brightness Instantly
         WindowManager.LayoutParams lp =((Activity) context).getWindow().getAttributes();
         lp.screenBrightness =mCurrentValue/ 255.0f;

         ((Activity) context).getWindow().setAttributes(lp);
于 2014-12-04T09:30:19.807 に答える