Sto implementando un'applicazione per ottenere informazioni sulla traccia musicale corrente.Informazioni sulla traccia della musica attualmente in riproduzione
Sto usando il seguente codice per ottenere che:
public class CurrentMusicTrackInfoActivity extends Activity {
public static final String SERVICECMD = "com.android.music.musicservicecommand";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
IntentFilter iF = new IntentFilter();
iF.addAction("com.android.music.metachanged");
iF.addAction("com.android.music.playstatechanged");
iF.addAction("com.android.music.playbackcomplete");
iF.addAction("com.android.music.queuechanged");
registerReceiver(mReceiver, iF);
}
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
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.v("tag", artist + ":" + album + ":" + track);
Toast.makeText(CurrentMusicTrackInfoActivity.this, track, Toast.LENGTH_SHORT).show();
}
};
}
Si sta lavorando bene solo per alcuni cellulari. Voglio implementare il codice per ottenere informazioni sulla traccia musicale corrente in tutti i dispositivi Android (ad esempio, dispositivi HTC e Samsung).
C'è un modo per farlo?
ho un problema con questo su ICS. Sto facendo un widget media player per ICS. Non appena lancio il mio primo widget & thr è un po 'di musica che suona in un player nativo, ottengo intenti metachanged con i dettagli corretti del brano e in pochi millisecondi, ottengo lo stato del playstate cambiato, con qualche altro nome di canzone. Qualche idea su come risolvere questo? – AndroidGuy
fornire esempi per ottenere carrect che riproducono i dettagli del brano – kiran
Scusa, ma non ho capito kiran, sto usando lo stesso codice sopra menzionato. Il mio onReceive viene chiamato due volte, una volta per com.android.music.metachanged e immediatamente per com.android.music.playstatechanged, ma la traccia che ottengo dai due intenti è diversa. MetaChanged dà il nome corretto, ma il cambio di Playstate dà un nome diverso. Questo succede solo per il lancio iniziale. Come faccio a bypassare il cambio Playstate per il primo avvio. – AndroidGuy