WakeLock和倒数计时器-屏幕锁定时不起作用

时间:2020-05-08 18:33:16

标签: java android android-studio countdowntimer wakelock

所以我正在尝试构建一个应用程序,该应用程序将使用内置的文本在android中定期(每5秒)输出语音命令,而我已经使用倒数计时器进行了此操作。如果我保持萤幕开启,我就能成功完成这项工作,不过如果使用者锁定手机,我仍然希望语音指令仍然可以运作,但目前暂时无法运作。

尽管我认为这样做的方法是使用WakeLock保持活动状态,但是我认为我没有正确实现它。 (现在发生的情况:锁定时似乎冻结了计时器,然后解锁了屏幕,并且在手机锁定时听不到任何语音命令)

这是代码:

在清单文件中添加了权限点:

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

活动文件:

public class RunActivity extends AppCompatActivity {

    CountDownTimer countdown1;
    PowerManager.WakeLock wakeLock;
    TextToSpeech tts;
    // Please assume all all initializations and declarations are appropriate.

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_run);

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

        countdown1 = new CountDownTimer(50000, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                counter1--;
                txtCentreNum.setText(String.valueOf(counter1));
                if (counter1 % 5 == 0)
                    tts.speak("Output Text", TextToSpeech.QUEUE_FLUSH, null, null);
            }

            @Override
            public void onFinish() {
                txtCentreNum.setText("-");
                wakeLock.release();

            }
        };
    }

    public void onStart() {
        super.onStart();

        countdown1.start();
        wakeLock.acquire();
    }

    @Override
    public void onResume() {
        super.onResume();

    }

    @Override
    public void onPause() {
        super.onPause();

    }

    @Override
    public void onStop() {
        super.onStop();

    }

    public void onDestroy() {
        super.onDestroy();

        wakeLock.release();
    }
}

我已经查找了其他类似的问题,并尝试了其他方法,例如将acquire()移至onResume(),但结果仍然相同。

任何输入将不胜感激。预先感谢!

0 个答案:

没有答案