Я создал будильник со службой переднего плана. Работает нормально. Он хорошо работает со всеми мобильными телефонами, но не работает с Huawei, где эта служба закрывается при заблокированном экране. Есть у кого-нибудь идеи по исправлению? Пожалуйста, помогите.
Это часть моего кода:
public class ServiceWakeUp extends Service {
ServiceWakeUp activity;
MediaPlayer mediaPlayer;
String fname = "cheerful_2", wakeups = "";
AudioManager audio;
Dialog dia;
Thread runner2;
Handler handler = new Handler(Looper.getMainLooper());
final Runnable updater = new Runnable() {
public void run() {
StartService();
}
};
SharedPreferences preferences;
int elapsed;
//PowerManager pm;
//PowerManager.WakeLock wl;
@Nullable
@Override
public IBinder onBind(Intent intent) {
SelectClasses select = new SelectClasses(activity);
wakeups = select.getCalendarsSaved("");
return null;
}
@Override
public void onCreate() {
super.onCreate();
activity = this;
getInitialNotifForForeground();
mediaPlayer = new MediaPlayer();
dia = new Dialog(activity);
//mantenim la CPU encesa
//pm = (PowerManager)getApplicationContext().getSystemService(getApplicationContext().POWER_SERVICE);
// wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,getPackageName());
// wl.acquire();
preferences = PreferenceManager.getDefaultSharedPreferences(this);
int resID = getResources().getIdentifier(fname, "raw", getPackageName());
mediaPlayer = MediaPlayer.create(this, resID);
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
for(int a = 0;a < 5;a++)
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
audio.setSpeakerphoneOn(true);
audio.setMode(AudioManager.MODE_IN_COMMUNICATION);
SelectClasses select = new SelectClasses(activity);
wakeups = select.getCalendarsSaved("");
elapsed = preferences.getInt("runner",0);
}
}
И вот. Вы можете увидеть BroadCastReceiver:
public class ReceiverBoot extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
SelectClasses select = new SelectClasses(context);
if(select.existActivedWakeup()){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(new Intent(context, ServiceWakeUp.class));
} else {
context.startService(new Intent(context, ServiceWakeUp.class));
}
}
}
}