2

デフォルトのメディアプレーヤーでメディアを再生する方法はありますか?私は次のコードでこれを行うことができます:

 Intent intent = new Intent(Intent.ACTION_VIEW);
 MimeTypeMap mime = MimeTypeMap.getSingleton();
 String type = mime.getMimeTypeFromExtension("mp3");
 intent.setDataAndType(Uri.fromFile(new File(songPath.toString())), type);
 startActivity(intent);

ただし、これにより、コントロールの少ないプレーヤーが起動し、バックグラウンドにプッシュできなくなります。デフォルトのメディアプレーヤーでプレーヤーを起動できますか?

4

2 に答える 2

7

以下のコードを試してください:::

   Intent intent = new Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER);  
   File file = new File(songPath.toString());  
   intent.setDataAndType(Uri.fromFile(file), "audio/*");  
   startActivity(intent);

更新::これも試してください

   Intent intent = new Intent();  
   ComponentName comp = new ComponentName("com.android.music", "com.android.music.MediaPlaybackActivity");
   intent.setComponent(comp);
   intent.setAction(android.content.Intent.ACTION_VIEW);  
   File file = new File(songPath.toString());  
   intent.setDataAndType(Uri.fromFile(file), "audio/*");  
   startActivity(intent);
于 2012-06-03T04:46:12.883 に答える
3

私はストックミュージックプレーヤーを持っていないので、ここ数日これを研究してきました。とても悲劇的なので、簡単にはできません。さまざまな音楽アプリのAndroidManifest.xmlで手がかりを探した後、MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCHに出くわしました。

以下の方法を使用すると、曲がAndroid MediaStoreにある限り、Samsungミュージックプレーヤーをバックグラウンドで起動できます。アーティスト、アルバム、またはタイトルを指定できます。この方法はGooglePlayミュージックでも機能しますが、残念ながら、ストックAndroidプレーヤーの最新バージョンでさえこの意図はありません。

https://github.com/android/platform_packages_apps_music/blob/master/AndroidManifest.xml

private boolean playSong(String search){
    try {
        Intent intent = new Intent();
        intent.setAction(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra(SearchManager.QUERY, search);
        startActivity(intent);
        return true;
    } catch (Exception ex){
        ex.printStackTrace();
        // Try other methods here
        return false;
    }
}

コンテンツのURIまたはURLを使用するソリューションを見つけるのは良いことですが、このソリューションは私のアプリケーションでは機能します。

于 2016-02-03T05:51:41.760 に答える