Фоновая служба закрывается при блокировке экрана, только с Huawei - PullRequest
0 голосов
/ 08 мая 2020

Я создал будильник со службой переднего плана. Работает нормально. Он хорошо работает со всеми мобильными телефонами, но не работает с 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));
            }
        }
    }
}

1 Ответ

0 голосов
/ 22 июня 2020

Может быть нужно настроить параметры запуска приложения, попробуйте вот так:

val intent = Intent()
intent.component = ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity")
try {
    startActivity(intent)
} catch (ex: ActivityNotFoundException) {
    // Fallback to global settings
    startActivity(Intent(Settings.ACTION_SETTINGS))
}
...