Попробуйте использовать JobScheduler
. Запланируйте задание, которое проверяет наличие isMusicActive()
каждые 5 секунд (или согласно вашему требованию).Вот как вы можете это сделать: -
import android.app.job.JobParameters;
import android.app.job.JobService;
import android.util.Log;
public class JobSchedulerService extends JobService {
private static final String TAG = "JobSchedulerService";
@Override
public boolean onStartJob(JobParameters params) {
Log.i(TAG, "onStartJob:");
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
Log.i(TAG, "onStopJob:");
return false;
}
}
AndroidManifest
<service android:name=".JobSchedulerService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="true"/>
Создание объектов планировщика
import android.app.job.JobInfo;
import android.app.job.JobScheduler;
import android.content.ComponentName;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
JobScheduler mJobScheduler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "onCreate: ");
mJobScheduler = (JobScheduler)
getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo.Builder builder = new JobInfo.Builder(1,
new ComponentName(getPackageName(),
JobSchedulerService.class.getName()));
builder.setPeriodic(3000);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
if (mJobScheduler.schedule(builder.build()) <= 0) {
Log.e(TAG, "onCreate: Some error while scheduling the job");
}
}
}