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

在默认音乐播放器上播放歌曲-android,android,android-intent,mediastore,android-music-player,Android,Android Intent,Mediastore,Android Music Player,我的应用程序显示sd卡中的歌曲列表。我希望能够在默认播放器上播放歌曲。我有关于这首歌的所有数据:id、标题、专辑、艺术家、路径 有没有办法启动默认播放器播放歌曲 我所尝试的: 使用Intent.CATEGORY\u APP\u MUSIC。我可以启动默认播放器,但无法设置歌曲。 Intent.makemain选择活动(Intent.ACTION\u MAIN、Intent.CATEGORY\u APP\u MUSIC)打开默认音乐应用程序。 但是intent.setData(Uri.withAp

我的应用程序显示sd卡中的歌曲列表。我希望能够在默认播放器上播放歌曲。我有关于这首歌的所有数据:id、标题、专辑、艺术家、路径

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

我所尝试的:

  • 使用
    Intent.CATEGORY\u APP\u MUSIC
    。我可以启动默认播放器,但无法设置歌曲。
    Intent.makemain选择活动(Intent.ACTION\u MAIN、Intent.CATEGORY\u APP\u MUSIC)
    打开默认音乐应用程序。 但是
    intent.setData(Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL\u CONTENT\u Uri,id))
    引发找不到intent的异常

  • 使用不推荐的
    MediaStore.INTENT\u ACTION\u MUSIC\u PLAYER
    。未找到活动。
    Intent(MediaStore.Intent\u ACTION\u MUSIC\u PLAYER)。setDataAndType(Uri.fromFile(songFile),“audio/*”

  • 使用
    INTENT\u ACTION\u MEDIA\u PLAY\u FROM\u SEARCH
    。启动搜索,但不是歌曲,他说无法准备播放音乐的混音。然而,它现在可以在谷歌上运行,所以它可能是关键。
    Intent(MediaStore.Intent\u ACTION\u MEDIA\u PLAY\u FROM\u SEARCH).putExtra(SearchManager.QUERY,name)
  • 使用
    操作视图
    。它可以工作,但它推出了一个紧凑版的播放器,我想要完整的播放器
  • 注意:我想启动外部播放器,而不是在我的应用程序中


    更新:看起来像谷歌现在硬编码播放音乐和Youtube支持。

    试试下面这样简单的方法:

    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
    
    更多关于:

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

    如果有多个播放器,则将打开
    解析器
    活动

    不要忘记捕获
    活动NotFoundException


    在Music player for ACTION_VIEW AudioPreview Activity中,优先调用。还有其他处理此操作的活动,只需使用操作“
    com.android.music.PLAYBACK\u VIEWER
    ”检查一次,而不是使用操作视图或它。

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

    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);
    

    它正在推出一款紧凑型的游戏版本,因为该应用程序以这种方式实现了它, 您可以找到许多第三方应用程序,它们使用

    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);
    

    由于您已经尝试了此操作

    注意:我想启动外部播放器,而不是在我的应用程序中。嗯,那么您是否尝试将此选择作为此处的最佳答案?是的,它启动了一个仅用于播放而非整个客户端的压缩版本。它启动了默认音乐播放器的压缩版本,请参见更新问题中的图片啊,对不起,我想了解你!没关系,这是最接近的解决方案。嘿,我有一个想法,但它是非常非常黑暗的魔法Android。你应该为你的默认音乐播放器创建一个假启动器图标。在这种情况下,操作系统认为应该启动应用程序。此解决方案的缺点:仅适用于一个播放机。启动默认媒体播放机很简单,但不设置歌曲。在我的问题上,这与解决方案4有何不同?请检查音乐应用程序的AndroidManifest.xl,您可以从AndroidXRefandroid.content.ActivityNotFoundException获取代码:未找到可处理意图的活动{act=com.android.music.PLAYBACK_VIEWER dat=content://media/external/audio/media/2797 typ=audio/*}@RahulPatil.你能回答我吗?可能的副本实际上不是,我想发布特定的歌曲,而不仅仅是音乐播放器。你找到答案了吗>
    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);