2

私は、Androidで画面をオフにするために、いくつかの公開されたソリューションを試しました。

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

その結果、変化はありません。

WindowManager.LayoutParams param = getWindow().getAttributes();
param.screenBrightness = 0;
param.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
getWindow().setAttributes(param);

その結果、画面がわずかに暗くなります(Android 4.2.1の場合)

//Release all previously held WakeLocks
if (mWakeLock.isHeld()) {
    mWakeLock.release();
}
//Then acquire a partial wake lock (which should allow the display to turn off)
PowerManager powerMan = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
mWakeLock = powerMan.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Partial WakeLock");
mWakeLock.acquire();

その結果、変化はありません。

そして最後に、違法

PowerManager powerMan = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
powerMan.goToSleep(1000);

これは明らかに機能しません:

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

(システム以外のアプリには)許可されていません。

これらの問題は、私のアプリがであるためだと思いandroid:theme="@style/FullscreenTheme"ます。

素晴らしいフルスクリーンテーマを犠牲にすることなくフルスクリーンアプリをスリープ状態にするための実行可能なソリューションはありますか?

4

1 に答える 1

0

@CommonsWareに投稿するための簡単な回答を書いた後、問題が解決しないことがわかりました。

コードを数回調べましたが、画面が目覚めたままになる原因となるものは何も見つかりませんでした。アプリ全体を最初から書き直したところ(常に良い演習であり、最終的にははるかにクリーンなロジックになりました)、問題は解消されました。

教訓-他のすべてが失敗した場合は、すべてを書き直してください。それ自体が便利な演習です:)

于 2013-01-28T02:26:39.620 に答える