Android определяет, какая мелодия действительно воспроизводится (проблема Ringtone.isPlaying) - PullRequest
3 голосов
/ 19 января 2010

В Android у меня возникла проблема при попытке выяснить, какая мелодия звонка действительно воспроизводится (я не пытаюсь определить мелодию звонка по умолчанию, но она воспроизводится, поскольку она может отличаться из-за настройки пользователем определенной мелодии звонка для конкретного контакта).

Я использую функцию Ringtone.isPlaying (), когда я (успешно) перебираю все доступные мелодии из RingtoneManager. Однако ни один из них никогда не возвращает true для Ringtone.isPlaying ()! Кто-нибудь знает, что я делаю не так? Вот пример кода, который определенно запускается во время игры на ринге:

RingtoneManager rm = new RingtoneManager(this); // 'this' is my activity (actually a Service in my case)
if (rm != null)
{
    Cursor cursor = rm.getCursor();
    cursor.moveToFirst();
     for (int i = 0; ; i++)
     {
            Ringtone ringtone = rm.getRingtone(i);  // get the ring tone at this position in the Cursor
            if (ringtone == null)
            break;
        else if (ringtone.isPlaying() == true)
                return (ringtone.getTitle(this));   // *should* return title of the playing ringtone
    }
    return "FAILED AGAIN!"; // always ends up here
}

1 Ответ

4 голосов
/ 19 января 2010

Если вы посмотрите на источник Ringtone, вы увидите, что метод isPlaying() заботится только об этом конкретном экземпляре Ringtone.

Когда вы вызываете getRingtone() from RingtoneManager() создает новый Ringtone объект ( source ).Так что это не будет тот же самый объект Ringtone, используемый для воспроизведения звука, когда кто-то звонит (если для этого используются Ringtone объекты), поэтому isPlaying() всегда будет возвращать false в вашем случае.

isPlaying() будет возвращать true только в том случае, если вы вызвали play() для этого конкретного Ringtone объекта.

Поскольку каждое приложение создает свои MediaPlayer объекты, я не думаю, что вы можете контролироватькоторый звучит в настоящее время играют другие приложения.

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