如何检查在android设备中播放音乐的音乐应用程序?
使用AudioManager,我们可以检查是否正在播放音乐。但它提供了播放音乐应用程序的细节。
(AudioManager)this.getSystemService(Context.AUDIO_SERVICE);= AudioManager am
如果在设备中播放音乐,am.isMusicActive()
返回true。但我想要的音乐应用程序的名字,它是从它被播放。
参考资料:
例如,如果我播放谷歌音乐播放器的音乐。然后,我必须能够得到的音乐应用程序名为“谷歌音乐播放器”。
如能对此作出任何答复,将不胜感激。谢谢!
发布于 2015-11-18 03:35:47
尝试此操作以获取当前播放track的文件路径:
public Cursor query(Context context, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder, int limit) {
try {
ContentResolver resolver = context.getContentResolver();
if (resolver == null) return null;
if (limit > 0) uri = uri.buildUpon().appendQueryParameter("limit", "" + limit).build();
return resolver.query(uri, projection, selection, selectionArgs, sortOrder);
} catch (UnsupportedOperationException ex) { return null; }
}
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String path = intent.getStringExtra("track").replaceAll("'","''");
Cursor c = query(context, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Audio.Media.DATA }, MediaStore.Audio.Media.TITLE + "='" + path + "'",
null, null, 0);
try {
if (c == null || c.getCount() == 0) return;
int size = c.getCount();
if (size != 1) return;
c.moveToNext();
// Here's the song path
String songPath = c.getString(0);
Log.d("ROAST_APP", "" + songPath);
} finally {
if (c != null) c.close();
}
}
};
@Override
protected 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.android.music.playstatechanged");
iF.addAction("com.android.music.playbackcomplete");
iF.addAction("com.android.music.queuechanged");
registerReceiver(mReceiver, iF);
}
资料来源:
https://stackoverflow.com/questions/29794257
复制相似问题