Не могу использовать MediaBrowserServiceCompat

Я новичок в разработке под андроид. Я хочу создать музыкальный проигрыватель, работающий по принципу клиент-сервер. Сейчас пытаюсь создать серверную часть. Я обнаружил, что могу добиться этого с помощью MediaBrowserServiceCompat, как сказано в официальной документации здесь. Но когда я попытался использовать его в своем проекте, он говорит Unresolved reference: MediaBrowserServiceCompat см. здесь Хотя я настроил Android Studio на автоматический импорт необходимых библиотек, я попытался явно импортировать android.support.v4.*, android.support.*, androidx.*, надеясь, что это сработает. но это не так, как оказалось. Поэтому я обратился за помощью к репозиторию UAMP (универсального музыкального проигрывателя Android) на GitHub. Я нашел оператор import androidx.media.MediaBrowserServiceCompat в этот файл. Но я не смог найти ни одной библиотеки с таким названиемсм. здесь

И почему в моем манифесте написано MediaPlaybackService must extend android.app.service?см. здесь

Как я должен его использовать? Спасибо!

Редактировать: я провел небольшое исследование и возился. Я попытался изменить имя службы в своем манифесте, а также имя связанного класса на MyMediaBrowserServiceCompat, и волшебным образом это сработало (вроде). Итак, теперь мой вопрос: это нормальное поведение? Должно ли изменение имени службы действительно повлиять на эту ситуацию? И если это так, то как, черт возьми, он работает с другими именами (что-то не похожее на само имя класса) на чужих машинах? А во-вторых, теперь мой код говорит There's a cycle in the inheritance hierarchy for this typeсм. здесь Я искал в Интернете и нашел это. Итак, я знаю, что означает это сообщение, но я не могу понять, как его решить в этом случае. И мой манифест по-прежнему говорит то же самое: MyMediaBrowserServiceCompat must extend android.app.serviceсм. здесь


person Community    schedule 09.06.2020    source источник


Ответы (2)


Я предполагаю, что это связано с зависимостью, в которой находится MediaBrowserService. Трудно понять, не видя раздел зависимостей в вашем build.gradle, но MediaBrowserService находится в implementation 'androidx.media:media:1.1.0'. Попробуйте добавить это, и вы сможете найти его.

Примечание к сообщению о There's a cycle in the inheritance hierarchy for this type: это потому, что вы, по сути, имеете в виду тот же класс, что и родительский, и дочерний, и это не сработает, поскольку он запросит родителя и просто вернется. Причина того, что он «работает», заключается в том, что теперь вы имеете в виду только фактические файлы, которые можно найти, поскольку класс MyMediaBrowserService существует. Вам нужно будет обновить свой сервис, чтобы он фактически наследовал MediaBrowserServiceCompat, чтобы заставить его работать, и это должно работать, когда у вас есть зависимость от него.

person Ann-Sofi    schedule 10.06.2020
comment
вот в чем дело. Я упомянул об этом в вопросе со снимком экрана (второе фото). Я не могу найти ничего с именем media в androidx. - person ; 10.06.2020
comment
она не отображалась как библиотека, но я явно добавил ее в build.gradle и повторно синхронизировал, и теперь она работает. Я не знаю, почему это не работало раньше, когда я пробовал то же самое. Но в любом случае, спасибо! - person ; 11.06.2020

В Android Developer четко не сказано, как реализовать MediaBrowserServiceCompat и MediaBrowserCompat в Обзор приложения для аудио (если вы читаете эту статью). Но вы можете реализовать код ниже или обновить новейшую версию этой библиотеки поддержки в этой статье. .

dependencies {
    implementation "androidx.media:media:1.3.1"
}
person Albert Khang    schedule 16.05.2021