Información de la pista de la música que se está reproduciendo actualmente
Estoy implementando una aplicación relacionada con la obtención de la información actual de la pista musical.
Estoy usando el código siguiente para conseguir eso:
- ¿Convertir el archivo .mid a cualquier formato de audio como .wav o .mp3 en android?
- Cómo reproducir canciones en Android - phonegap
- Android Stop Música de fondo
- ¿Dónde almacena Google Music las "pistas sin conexión"?
- Cómo agregar medios a MediaStore en Android 4.4 KitKat Tarjeta SD con metadatos
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(); } }; }
Está funcionando bien para algunos móviles solamente. Quiero implementar código para obtener información actual de la pista de música en todos los dispositivos Android (por ejemplo, dispositivos HTC y Samsung).
¿Hay alguna manera de hacer esto?
- ¿Cómo puedo hacer que 2 caracteres se superpongan entre sí en un Android EditText
- Android Exerciser Monkey comienza a reproducir archivos de audio al azar
- Android equivelent al programa de afiliados de iTunes, api de streaming de música y participación de beneficios
- Android: ¿Cómo crear efectos de sonido de fade-in / fade-out para cualquier archivo de música que reproduzca mi aplicación?
- Control de reproducción de botón de pausa en fragmento de servicio de reproductor de música
- Aplicación para Android con transmisión de música
- ¿Cómo funcionan los "Mapas de Flujo" en la visualización de música?
- Los archivos OGG no se enlazarán correctamente usando Android usando MediaPlayer
Esto podría ayudar. Utilizo esto para obtener metadatos en archivos de audio en una de mis aplicaciones:
String scheme = mAudioUri.getScheme(); String title = ""; String artist = ""; if(scheme.equals("content")) { String[] proj = {MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ARTIST}; Cursor cursor = this.getContentResolver().query(mAudioUri, proj, null, null, null); if(cursor != null && cursor.getCount() > 0) { cursor.moveToFirst(); if(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE) != -1) { title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE)); artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST)); } } }
Hay un montón de columnas en la clase MediaStore.Audio.Media que puede utilizar para encontrar lo que estás buscando, creo.
Compruebe esto es lo que se utiliza en mi aplicación funciona bien
iF.addAction("com.android.music.metachanged"); iF.addAction("com.htc.music.metachanged"); iF.addAction("fm.last.android.metachanged"); iF.addAction("com.sec.android.app.music.metachanged"); iF.addAction("com.nullsoft.winamp.metachanged"); iF.addAction("com.amazon.mp3.metachanged"); iF.addAction("com.miui.player.metachanged"); iF.addAction("com.real.IMP.metachanged"); iF.addAction("com.sonyericsson.music.metachanged"); iF.addAction("com.rdio.android.metachanged"); iF.addAction("com.samsung.sec.android.MusicPlayer.metachanged"); iF.addAction("com.andrew.apollo.metachanged");
Amazon MP3 (Build 2.8.1) parece estar prefijando los extras con com.amazon.mp3 así para com.amazon.mp3.metachanged He utilizado:
String artist = ""; String track = ""; if (action.equals("com.amazon.mp3.metachanged")) { artist = intent.getStringExtra("com.amazon.mp3.artist"); track = intent.getStringExtra("com.amazon.mp3.track"); } else { artist = intent.getStringExtra("artist"); track = intent.getStringExtra("track"); }
Esto era práctico para comprobar los nombres adicionales:
Set<String> extrasList = intent.getExtras().keySet(); for (String str : extrasList) { Log.d(TAG, str); }
import com.example.media.R; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.widget.Toast; 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.activity_main); IntentFilter iF = new IntentFilter(); iF.addAction("com.android.music.metachanged"); iF.addAction("com.htc.music.metachanged"); iF.addAction("fm.last.android.metachanged"); iF.addAction("com.sec.android.app.music.metachanged"); iF.addAction("com.nullsoft.winamp.metachanged"); iF.addAction("com.amazon.mp3.metachanged"); iF.addAction("com.miui.player.metachanged"); iF.addAction("com.real.IMP.metachanged"); iF.addAction("com.sonyericsson.music.metachanged"); iF.addAction("com.rdio.android.metachanged"); iF.addAction("com.samsung.sec.android.MusicPlayer.metachanged"); iF.addAction("com.andrew.apollo.metachanged"); registerReceiver(mReceiver, iF); } private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String track = intent.getStringExtra("track"); Toast.makeText(CurrentMusicTrackInfoActivity.this, track, Toast.LENGTH_SHORT).show(); } }; }
¿Hay algún error que ejecutar en mi dispositivo Xperia Sola, pero se detiene por favor me ayude
- Android Firebase, simplemente obtiene los datos de un objeto secundario
- Android addHeaderView desaparece cuando no hay elementos en ListView