Приложение Android Auto не вызывает onPlay, и обложки альбомов не отображаются.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Приложение Android Auto не вызывает onPlay, и обложки альбомов не отображаются.

Сообщение Anonymous »

Я написал MP3 -плеер (называемый DJ), и я хочу добавить совместимость с Android Auto. Я написал сервис, и все, кажется, работает, за исключением того, что на головном устройстве Windows настольный компьютер не появляется, и нет звуковых игр (даже не называется Onplay). Нажав на песню в головном блоке, она отображает «Получение вашего выбора ...» - затем, кажется, видит там. Должен ли быть кнопка воспроизведения? < /p>
Песни находятся в ArrayList под названием Songitemlist. Вот код, создающий медиаитем. Я подтверждаю, что Art File Art Albue существует, затем выполняйте uri.parse на пути файла. Я также попробовал FromFile с тем же результатом. Я делаю то же самое для файла mp3. Я, должно быть, что -то упускаю. < /P>

Код: Выделить всё

for (SongItem songItem:songItemList) {
String id = SONG + "_" + songItem.getTrackid();
Uri uri = null;
Uri mediaUri = null;
if (songItem.getArtLocation() != null) {
File f = new File(songItem.getArtLocation());
if (f.exists()) {
//uri = Uri.fromFile(f);
uri = Uri.parse(songItem.getArtLocation());
} else {
Log.d(TAG,"File doesn't exist:" + songItem.getArtLocation());
}
f = new File(songItem.getLocation());
if (f.exists()) {
//mediaUri = Uri.fromFile(f);
mediaUri = Uri.parse(songItem.getLocation());
} else {
Log.d(TAG, "File doesn't exist: " + songItem.getLocation());
}
}
Bundle extras = new Bundle();
MediaBrowserCompat.MediaItem item =
new MediaBrowserCompat.MediaItem(descBuilder.setMediaId(id)
.setDescription(songItem.getName())
.setSubtitle(songItem.getArtist())
.setIconUri(uri)
.setMediaUri(mediaUri)
.setMediaId(id)
.setTitle(songItem.getName())
.setExtras(extras)
.build(),MediaBrowserCompat.MediaItem.FLAG_PLAYABLE);
mediaItems.add(item);
}

saveResult.sendResult(mediaItems);
Дополнительная информация:
Когда я использую Uri.parse, я получаю такие uri:
/data/data/com. emrick.dj/albumart/Джуди Коллинз/Огни Эдема/Огни Эдема.jpg
/data/data/com.emrick.dj/audio/Джуди Коллинз/Огни Эдема Eden/From A Distance.mp3
Когда я использую вызов Uri.fromFile, я получаю такие uri:
file:///data/data/com.emrick. dj/albumart/Judy%20Collins/Fires%20Of%20Eden/Fires%20Of%20Eden.jpg
file:///data/data/com.emrick.dj/audio/Judy%20Collins/Fires%20Of%20Eden/From%20A%20Distance.mp3
Кроме того, работает приложение mp3-плеера (на основе которого оно основано) на моем телефоне, я вижу все обложки альбомов и воспроизводимые mp3-файлы, поэтому считаю, что моя музыкальная база данных в порядке.
Обновление.
Я попробовал использовать .setIconBitmap вместо .setIconUri, создав растровое изображение вместо Uri для обложки альбома. Если я ограничу количество песен до 200 или меньше, появится обложка альбома. Где-то между 200 и 390 песнями, очевидно, возникает проблема, головное устройство вращается несколько секунд, а затем сообщает, что приложение не работает.
Затем я попытался вернуться к .setIconUri и ограничил количество песен до 200, что все еще не работает (выдает пустую обложку альбома, как показано ниже). Если я нажимаю на песню, все равно зависает на сообщении "Получение вашего выбора...".
Обновить (ответ от Бена Сагмо)
Я оставлю здесь дополнительные вопросы — они не отображаются в виде комментариев. До сих пор не ясно, как реализовать ContentProvider/доступ к нему.
Я попробовал это: используя uri = Uri.parse("content://" + songItem.getArtLocation());
uri = albumArtContent(uri);
public static Uri albumArtContent(Uri uri) {
String path = uri.getEncodedPath() != null ? uri.getEncodedPath().substring(1).replace('/', ':') : Uri.EMPTY.toString();

Uri contentUri = new Uri.Builder()
.scheme(ContentResolver.SCHEME_CONTENT)
.authority("com.emrick.dj")
.path(path)
.build();

return contentUri;
}
< /code>
Все еще не работает. Нужно ли мне создать класс, который расширяет ContentProvider? Я не вижу никаких методов, которые возвращают URI в необходимых методах для ContentProvider, хотя ... OpenFile и Copy выглядят многообещающими, но как мне получить URI от любого из них?

Подробнее здесь: https://stackoverflow.com/questions/793 ... rt-appears
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»