Как включить зацикливание на экземпляре Ringtone для API ниже 28? - PullRequest
2 голосов
/ 11 ноября 2019

У меня есть следующий метод

    private void playRingtone() {
        Uri sound = Uri.parse(Constants.ANDROID_RESOURCE_ROOT + this.getPackageName() +
                Constants.SLASH_SEPARATOR + R.raw.sound);
        this.ringtone = RingtoneManager.getRingtone(this.getApplicationContext(), sound);
        this.ringtone.setLooping(Boolean.TRUE);
        this.ringtone.play();
    }

В строке setLooping(Boolean.TRUE); появляется следующее сообщение

Для вызова требуется уровень API 28 (текущий минимум 21): android.media.Ringtone # setLooping

Имеет ли экземпляр Ringtone любой другой метод, который заменяет setLooping в API ниже 28?

Ответы [ 2 ]

1 голос
/ 11 ноября 2019

Вы можете попробовать добавить timerTask внутри scheduleAtFixedRate, чтобы проверить, продолжает ли он играть

Это выглядит примерно так

Timer timer = new Timer(); 
timer.scheduleAtFixedRate(new TimerTask() {
    public void run() {
        if (!this.ringtone.isPlaying()) {
            this.ringtone.play();
        }
    }
}, 1000, 100);

Где 1000 - этовремя, когда таймер начинает работать, а 100 - это время для интервала

. Надеюсь, эта помощь

0 голосов
/ 11 ноября 2019

Нет, метод не заменен на setLooping. Существует только метод play(), и с этим вам придется работать.

Работы цитируются https://developer.android.com/reference/kotlin/android/media/Ringtone

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...