Как я могу продолжать свою текущую звуковую задачу?

У меня есть конкретная проблема, о которой я хотел бы узнать. Вот мой код

Intent i = new Intent();
i.setDataAndType(media, mediaType);
startActivity(i);

Это запускает звуковую активность для меня и даже помещает элемент уведомления в панель уведомлений, говорящий, что это текущая задача. Однако, если я нажму кнопку «Домой» или «Назад», текущая задача будет немедленно уничтожена для меня. Меня смутило такое поведение.

Я нашел способ продолжить выполнение задачи следующим образом: когда начинается звуковая активность, я перетаскиваю панель уведомлений и щелкаю элемент уведомления (который на самом деле просто снова показывает мне ту же активность), и когда я это делаю, он ведет себя соответственно. Когда я нажимаю кнопку «Домой», он продолжается. Когда я нажимаю кнопку «Назад», это продолжается. По какой-то причине, когда я нажимаю элемент уведомления, срабатывает «правильный» Intent.

Я бы хотел, чтобы это поведение начиналось при первом запуске звука, потому что никто, использующий мое приложение, не собирается открывать панель уведомлений и щелкать элемент уведомления, чтобы это работало правильно.


person Pzanno    schedule 29.12.2010    source источник


Ответы (1)


Используйте Service. В частности, вы захотите вызвать startForegroundService() в обратном вызове создания/запуска службы.

person Jon Willis    schedule 23.03.2011
comment
Спасибо за ответ. Доступна ли услуга для этой функции (воспроизведение аудио)? Я думал, что они должны быть, но я не смог найти. Я знаю, как создать свой собственный, но, похоже, мне придется немного изобретать велосипед, потому что я не просто хочу иметь возможность воспроизводить фоновую музыку, но я также хочу, чтобы элементы управления пользовательским интерфейсом для музыки как хорошо (т.е. полоса поиска, предыдущая, следующая, воспроизведение, пауза). - person Pzanno; 24.03.2011
comment
взгляните на android.git.kernel.org/?p=platform/packages/apps/ Это из музыкального проигрывателя, включенного в ванильный андроид. - person Jon Willis; 24.03.2011
comment
это хороший источник, я видел его раньше, мне просто интересно, будут ли они способом использовать его с startService(), но это все больше и больше похоже на то, что мне просто придется написать свой собственный сервис. - person Pzanno; 24.03.2011
comment
Да, придется писать свой, ибо нет гарантии, что у кого-то будет этот сервис на своем устройстве (если вы вообще сможете им пользоваться) - person Jon Willis; 24.03.2011
comment
Хорошо, хорошо, чтобы получить некоторое закрытие на этом, спасибо. Написать сервисный код не составит большого труда. - person Pzanno; 25.03.2011