2015-06-22 3 views
0

Я хочу, чтобы получить текущую информацию о треке с всех доступных устройств Android. Поэтому я пробовал этот код, и он отлично работает в эмуляторе или с любым телефоном nexus, но как только я попробовал его на телефоне xperia, он работает на работу, и он не получает никаких данных обратно! Я думаю, что он не может обнаружить медиаплеер плеера.Получить текущую информацию о дорожке из всех доступных устройств Android

public void onCreate() { 
    super.onCreate(); 

    IntentFilter iF = new IntentFilter(); 
    iF.addAction("com.android.music.metachanged"); 
    iF.addAction("com.android.music.playstatechanged"); 
    iF.addAction("fm.last.android.metachanged"); 
    iF.addAction("fm.last.android.playbackpaused"); 
    iF.addAction("com.sec.android.app.music.metachanged"); 
    iF.addAction("com.nullsoft.winamp.metachanged"); 
    iF.addAction("com.nullsoft.winamp.playstatechanged"); 
    iF.addAction("com.amazon.mp3.metachanged"); 
    iF.addAction("com.amazon.mp3.playstatechanged"); 
    iF.addAction("com.miui.player.metachanged"); 
    iF.addAction("com.miui.player.playstatechanged"); 
    iF.addAction("com.real.IMP.metachanged"); 
    iF.addAction("com.real.IMP.playstatechanged"); 
    iF.addAction("com.sonyericsson.music.metachanged"); 
    iF.addAction("com.sonyericsson.music.playstatechanged"); 
    iF.addAction("com.rdio.android.metachanged"); 
    iF.addAction("com.rdio.android.playstatechanged"); 
    iF.addAction("com.samsung.sec.android.MusicPlayer.metachanged"); 
    iF.addAction("com.samsung.sec.android.MusicPlayer.playstatechanged"); 
    iF.addAction("com.andrew.apollo.metachanged"); 
    iF.addAction("com.andrew.apollo.playstatechanged"); 
    iF.addAction("com.htc.music.metachanged"); 
    iF.addAction("com.htc.music.playstatechanged"); 
    iF.addAction("com.spotify.music.playbackstatechanged"); 
    iF.addAction("com.spotify.music.metadatachanged"); 
    iF.addAction("com.rhapsody.playstatechanged"); 

    registerReceiver(mReceiver, iF); 
} 

public BroadcastReceiver mReceiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     boolean playing = intent.getBooleanExtra("playing", false); 
     String cmd = intent.getStringExtra("command"); 
     Log.v("tag ", action + "/" + cmd); 
     String artist = intent.getStringExtra("artist"); 
     String album = intent.getStringExtra("album"); 
     String track = intent.getStringExtra("track"); 
     Log.i("tag", "This is the track information:"); 
     Log.v("tag", artist + ":" + album + ":" + track); 
     Toast.makeText(TrackInformations.this, track, Toast.LENGTH_SHORT).show(); 

Я думаю, что я пропустил что-то, потому что soundcloud плеер также не обнаруживается.

+0

Для каких-либо из этих действий «Intent» не требуется никаких действий или для других игроков отправлять любые трансляции, связанные с информацией о треке. – CommonsWare

+0

Можете ли вы объяснить больше плз? – raeX

ответ

0

Я думаю, что у Xperias есть другое приложение Walkman.

я испытал с этим намерением, и она работает:

com.sonyericsson.music.playbackcontrol.ACTION_TRACK_STARTED 

Намерение дополнительные различны, информация трек на карте, вам нужно отладить его и посмотреть, что вы нужду.

манифеста от Xperia Walkman App (в случае, если вам нужно больше фильтров):

http://pastebin.com/cDNJJYGc

Удачи!

+0

Thanx для ответа :) Я попробовал это сейчас, но он возвращает null для всего V/tag: null: null: null – raeX

+0

Вам нужно отладить намерение и посмотреть, где их получить, потому что строки, которые вам нужны, на Карте в дополнительных приложениях, а не в дополнительных строках, которые вы используете. – isma3l

+0

Извините, но я действительно начинаю здесь, как именно я должен отлаживать намерение? – raeX

Смежные вопросы