1

私はここ数日見回してきましたが、質問に対する答えはどれも役に立ちませんでした。おそらく簡単に解決できる何かに頭をぶつけています....近接センサーと私がやっていることは、センサーに指を置くと画面がオフになり、指を離すと画面に戻るということです。画面をオフにできましたが、指を離すと「Log.i( "info"、 "trying to on on!")」というメッセージが表示されますが、どういうわけか画面がオンになりません... 。私はwakelock(コメント付き)とフラグを使って試しましたが、成功しませんでした!指を離すとキーパッドのライトは点灯しますが、画面は点灯しません。電源ボタンを2回押すと、画面が正常に点灯します。誰かが私にそれを手伝ってくれる?:(

@Override
public void onSensorChanged(SensorEvent event) {
        if(event.sensor.getType()==Sensor.TYPE_PROXIMITY){
    ProximityReading.setText("\nProximity Sensor Reading:" + String.valueOf(event.values[0]));
    }

        if(event.values[0] == 0) {
      WindowManager.LayoutParams params = getWindow().getAttributes();
      getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
          getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
      getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
      params.screenBrightness = 0f;
      getWindow().setAttributes(params);
            } else {
          WindowManager.LayoutParams params = getWindow().getAttributes();
      params.screenBrightness = 1f;
      getWindow().setAttributes(params);

      /*powermanager = (PowerManager) getSystemService(Context.POWER_SERVICE);
        wakeLock = powermanager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
      wakeLock.acquire();

      Log.i("info", "trying to turn on!");

    }
}
4

3 に答える 3

0

画面をオンにする場合は、PowerManager で「TurnScreenOn」などの API を使用するか、ACQUIRE_CAUSES_WAKEUP と FULL_WAKE_LOCK を組み合わせて使用​​します。

于 2013-01-29T02:12:07.203 に答える
0

次の方法を使用して電話のロックを解除し、軽くしてからキーガードロックを再度有効にします。

public void unlockAndPowerup(){
    KeyguardManager km = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);
    final KeyguardManager.KeyguardLock kl = km.newKeyguardLock("MyKeyguardLock");
    kl.disableKeyguard();

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
            | PowerManager.ACQUIRE_CAUSES_WAKEUP
            | PowerManager.ON_AFTER_RELEASE, "MyWakeLock");

    wakeLock.acquire();
    wakeLock.release();
    kl.reenableKeyguard();
}
于 2014-11-12T10:57:24.137 に答える