Я новичок в этом android Stud ios, и я программирую приложение, которое, когда слышен шум, приложение активируется и звучит звук, когда звук заканчивается, приложение активируется снова и снова, когда шум звуки приложение активируется и возвращается к звуку. Это делается правильно при включенном экране, но если экран блокирует приложение, когда оно активируется и звучит, что звук не активируется снова, вам просто нужно активировать экран, чтобы активировать его снова. Пожалуйста, кто-нибудь знает, как сделать этот процесс l oop, даже если экран заблокирован. Спасибо.
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mActivateBtn.setOnClickListener(this);
mSensor = new DetectNoise();
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "NoiseAlert");
// esto es para mostrar los elementos en el spinner de sensibilidad
ArrayAdapter<String> arrayAdapter2 = new ArrayAdapter<String>(context, R.layout.support_simple_spinner_dropdown_item, arraylistSensibilidad);
spinnerSensibilidad.setAdapter(arrayAdapter2);
if (mRunning) {
mActivateBtn.setText("Desactivar");
}
}
@Override
public void onClick (View view){
switch (view.getId()) {
case R.id.btnActivate:
initializeApplicationConstants();
if (countDownTimer != null) {
countDownTimer.cancel();
}
if (!mRunning) {
mRunning = true;
if (mp != null) {
if (mp.isPlaying()) {
mp.stop();
mp.reset();
}
mp = null;
}
start();
mActivateBtn.setText("Desactivar");
} else if (mRunning) {
mActivateBtn.setText("Activar");
stop();
if (mp != null) {
if (mp.isPlaying()) {
mp.stop();
mp.reset();
}
mp = null;
}
}
break;
}
}
@Override
public void onResume () {
super.onResume();
}
@Override
public void onDestroy () {
super.onDestroy();
stop();
}
private void start () {
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.RECORD_AUDIO},
RECORD_AUDIO);
}
//Log.i("Noise", "==== start ===");
mSensor.start();
if (!mWakeLock.isHeld()) {
mWakeLock.acquire();
}
//Noise monitoring start
// Runnable(mPollTask) will execute after POLL_INTERVAL
mHandler.postDelayed(mPollTask, POLL_INTERVAL);
}
private void stop () {
Log.d("Noise", "==== Stop Noise Monitoring===");
if (mWakeLock.isHeld()) {
mWakeLock.release();
}
mHandler.removeCallbacks(mSleepTask);
mHandler.removeCallbacks(mPollTask);
//poner aqui star() y en vez de false true
mSensor.stop();
mRunning = false;
mActivateBtn.setText("Activar");
}
private void initializeApplicationConstants () {
// Set Noise Threshold
mThreshold = 12;
}
private void updateDisplay (String status,double signalEMA){
}
private void callForHelp ( double signalEMA){
mp = new MediaPlayer();
int index = PreferenceUtils.getInstance(context).getIntValue(Constants.SOUND_KEY, 0);
if (index == 12) {
mp = MediaPlayer.create(context, Uri.parse(Constants.getsound(getContext()).get(index).getUri()));
} else {
mp = MediaPlayer.create(context, Constants.getsound(getContext()).get(index).getPath());
}
mp.start();
mp.setLooping(true);
stop();
countDownTimer = new CountDownTimer(s1 * 60000, 10000) {
@Override
public void onTick(long l) {
}
@Override
public void onFinish() {
mActivateBtn.performClick();
}
}.start();
}