2

ユーザーが電話を振ったときに画面のオン/オフを切り替える必要があるアプリを作成しています。これまでのところ、この質問への回答で提案されているように、揺れをリッスンする SensorEventListener があります。

揺れを検出すると、この質問の回答で提案されているように、画面の明るさの値を変更します。実際に画面をオフにしなくても、すべてうまく機能します...public void setBright(float value)方法で明るさを0.01fに設定すると、完全に機能します。ただし、明るさを 0.0f に設定すると、電話は画面を再び回転させません... 少なくとも電源ボタンを押すまでは。

私がやろうとしていることは可能ですか?私は何を間違っていますか?

- 編集 -

Dreicyerasorのおかげで、この問題をさらに詳しく調べることができました。明るさを 0.0f にする前にPARTIAL_WAKE_LOCKを取得しましたが、電話を振っても点灯しません。ただし、アプリをデバッグすると、画面をオフにして電話を振ると setBright(1.0f) が呼び出されることがわかります。電源ボタンを押すとロック画面が起動するので、ロック画面が何らかの形で台無しになっているのではないかと疑っています。電源ボタンを押した後、アプリは通常どおり動作し続けます。ロック画面をバイパスする方法はありますか?

ご協力いただきありがとうございます!

4

2 に答える 2

1

推測:brighnes 0.0に設定すると、電話がスリープモードになる可能性もありますか?

プログラムで再度オンにする場合は、ACQUIRE_CAUSES_WAKEUPWakelockを取得してみてください。

PowerManager pm = (PowerManager)mContext.getSystemService(
                                          Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(
                                      PowerManager.SCREEN_BRIGHT_WAKE_LOCK
                                      | PowerManager.ACQUIRE_CAUSES_WAKEUP,
                                      TAG);
wl.acquire(1000);
于 2011-03-06T22:59:03.590 に答える
1

私はicyerasorの推測に同意しますが、推測が正しく、電話がスリープ状態になる場合は、明るさを0.0に設定する前にPARTIAL_WAKE_LOCK、CPUをスリープ状態に保つためにを取得する必要があります。

答える前にこれをテストしますが、現時点ではAndroidデバイスにアクセスできません。

于 2011-03-06T23:05:08.843 に答える