按下音量按钮时关闭屏幕

时间:2015-04-04 11:01:10

标签: java android wakelock

我编写了一个涉及计数器的android程序,当按下音量按钮时,该程序增加1。当按下此按钮时,它也应该关闭屏幕并等待5秒钟不活动,然后重新打开。但是当我运行应用程序时,除了计数器增加之外没有任何事情发生,即屏幕没有关闭。

这是我的java类:

public class MainActivity extends Activity {

private TextView counterTextView;
int count;

PowerManager.WakeLock wakeLock;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    counterTextView = (TextView) findViewById(R.id.counterTextView);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP && event.getRepeatCount() == 0) {
        count++;
        counterTextView.setText(" " + count + " ");

        PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
        wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
                "MyWakelockTag");
        wakeLock.acquire();

        new Handler().postDelayed(screenOnRunnable(), 5000);

        return true;
    }
    return super.onKeyDown(keyCode, event);
}

private Runnable screenOnRunnable() {
    return new Runnable() {

        @Override
        public void run() {

            wakeLock.release();

        }
    };
}

}

我还在清单中添加了WAKE_LOCK权限:

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

我不知道出了什么问题......任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

您的代码几乎没有问题。

<强> 1。您使用的是错误的唤醒锁

  

PowerManager.PARTIAL_WAKE_LOCK - 确保CPU正在运行;该   屏幕和键盘背光将被允许关闭

你应该使用PowerManager.FULL_WAKE_LOCK作为你的目的,但它是一个弃用的api所以它不是首选,而是现在FLAG_KEEP_SCREEN_ON用于相同的目的。

<强> 2。您希望设备在5秒后立即关闭。

这不会发生,因为您没有考虑

中设置的最短睡眠时间
  

设置---&GT;显示-----&GT;睡眠

在您释放完整的唤醒锁后,设备将花费上述时间进入睡眠状态。

我希望这能为您解释为什么您的代码无效。