2014-10-15 1 views
2

Согласно this post, исполнитель, альбом, трек песни можно найти на странице BroadcastReceiver, но информацию о композиции, которая воспроизводится в настоящее время в Spotify или Pandora, не может быть восстановлена. (Возможно, потому что эти приложения не отправляют трансляцию во время воспроизведения песен).Как получить текущее имя исполняемой песни в Android

Мой вопрос в том, как получить текущую информацию о текущей песне на системном уровне, независимо от того, вещает ли это приложение.

+1

считают это: вы можете написать музыкальный проигрыватель, который не дает остальным системы с любой информацией о том, что вы играете. То же самое касается и других приложений. В музыкальном проигрывателе нет ничего обязательного или автоматического, передающего их текущую информацию о треке. – njzk2

ответ

3

Прослушивание com.android.music. * Трансляции - официальный способ сделать это на Android.
Многие приложения, такие как лириканщики, полагаются на него, чтобы получить информацию о текущем треке.
К сожалению, если приложение не передает широковещательное рассылку, решение должно либо взглянуть на их документацию Dev, если они предоставляют другой способ сделать это, либо напрямую попросить их реализовать его.

Для Spotify, похоже, что сейчас они используют широковещательную передачу 'com.spotify.music.metadatachanged' (и настройки в приложении). Вам придется отслеживать отдельные случаи, подобные этому, ничто не заставляет разработчиков Android выполнять стандартную трансляцию.

+0

вы можете попробовать Google Music, если хотите образец приложения, который правильно это реализует. – Teovald

+0

Я пробовал Google Music и приложение Amazon Music, используя BroadcastReveiver, отлично работает. Однако такие приложения, как Spotify и Pandora, я не могу получить информацию о песнях, BroadcastReceiver ничего не получил. – Wesley

1

В андроиде 4.4+ вы можете использовать класс RemoteController для получения информации о треке из текущей исполняемой песни. Это работает с каждым приложением, которое реализует RemoteControlClient. Он также работает с видео- и потоковыми службами, такими как chromecast.

http://forum.xda-developers.com/showthread.php?p=48702254#post48702254

Это очень удобное руководство, если вы хотите использовать этот RemoteController.

И страница разработчиков:

https://developer.android.com/reference/android/media/RemoteController.html

1

определенно и знает путь песни, где работает Uri myUri1 = Uri.parse (путь);

Теперь и может вызвать этот метод, имеющий путь, то мы можем получить всю информацию, либо в деятельности или от службы путем связывания

private void getTrackInfo(Uri audioFileUri) { 
    MediaMetadataRetriever metaRetriever= new MediaMetadataRetriever(); 
    metaRetriever.setDataSource(getRealPathFromURI(audioFileUri)); 
    String artist = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); 
    String title = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); 

} 


private String getRealPathFromURI(Uri uri) { 
    File myFile = new File(uri.getPath().toString()); 
    String s = myFile.getAbsolutePath(); 
    return s; 
} 
Смежные вопросы