在默认音乐播放器上播放歌曲 - 安卓

时间:2015-06-19 11:46:24

标签: android android-intent mediastore android-music-player

我的应用程序显示来自SD卡的歌曲列表。我希望能够在默认播放器上播放歌曲。我已经获得了关于这首歌的所有数据:id,title,album,artist,path ......

有没有办法启动默认播放器播放歌曲?

我尝试了什么:

  1. 使用Intent.CATEGORY_APP_MUSIC。我可以启动默认播放器,但无法设置歌曲。 Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_MUSIC)打开默认音乐应用。 但是intent.setData(Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id))会抛出未找到intent的异常。

  2. 使用已弃用的MediaStore.INTENT_ACTION_MUSIC_PLAYER。找不到活动。 Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER).setDataAndType(Uri.fromFile(songFile), "audio/*")

  3. 使用INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH。启动搜索,但不是歌曲,说不能准备混合播放音乐。但是,它现在可以在Google上运行,因此它可能是关键。 Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH).putExtra(SearchManager.QUERY, name)
  4. 使用ACTION_VIEW。它有效,但它推出了一个紧凑版本的播放器,我想要完整的播放器。
  5. compat view

    注意:我想启动外部播放器,而不是我的应用。

    更新:看起来像Google Now硬编码的Play Music和Youtube支持。

4 个答案:

答案 0 :(得分:4)

如果您想在设备上启动默认音乐播放器应用,请尝试以下操作:

Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_VIEW);  
File file = new File(YOUR_SONG_URI);  
intent.setDataAndType(Uri.fromFile(file), "audio/*");  
startActivity(intent);

答案 1 :(得分:1)

它正在推出一个紧凑版本,因为该应用程序已经实现了这种方式, 你可以找到很多用

打开完整应用程序的第三方应用程序
Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_VIEW);  
File file = new File(YOUR_SONG_URI);  
intent.setDataAndType(Uri.fromFile(file), "audio/*");  
startActivity(intent);

你已经尝试过这个

答案 2 :(得分:0)

尝试这样简单的事情:

MediaPlayer mp = new MediaPlayer();     
mp.setLooping(true);
try {
    mp.setDataSource(mFile); //mFile is the path to your mp3 file
} catch (Exception e) {
    e.printStackTrace();
}
try {
    mp.prepare();
} catch (Exception e) {
    e.printStackTrace();
}
mp.start();

MadiaPlayer的另一个例子和文件保存在res / raw /目录中:

MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);
mediaPlayer.start(); // no need to call prepare(); create() does that for you

更多关于:http://developer.android.com/guide/topics/media/mediaplayer.html

答案 3 :(得分:0)

 Intent musicIntent = new Intent();  
 //use Action VIEW to launch app
 musicIntent.setAction(Intent.ACTION_VIEW);    

String mimeType  = getMimeTypeFromFile(); // in your case it is audio
Uri uri = " yourfile uri";
musicIntent.setDataAndType(uri,mimeType);
startActivity(intent);

如果更改了mime类型,将打开默认视图应用程序,将打开视频mime型视频播放器,音频播放器和图像库。

如果有多个玩家,则会打开Resolver个活动。

不要忘记抓住ActivityNotFoundException

在ACTION_VIEW的音乐播放器中,优先调用AudioPreview activty。还有其他活动可以处理此操作,只需检查一次操作" com.android.music.PLAYBACK_VIEWER"而不是ACTION_VIEW或它。