My app show list of song from sd card. I want to be able to play the song on the default player. I've got all the data about the song: id, title, album, artist, path...
Is there a way to launch the default player to play the song?
What I've tried:
Using
Intent.CATEGORY_APP_MUSIC
. I can launch the default player, but can't set the song.Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_MUSIC)
open the default music app. Howeverintent.setData(Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id))
throws exception that intent not found.Using deprecated
MediaStore.INTENT_ACTION_MUSIC_PLAYER
. Activity not found.Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER).setDataAndType(Uri.fromFile(songFile), "audio/*")
- Using
INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH
. Launch the search, but not the song, says couldn't prepare mix on Play music. However, it works from Google now, so it may be the key.Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH).putExtra(SearchManager.QUERY, name)
- Using
ACTION_VIEW
. it works but it launch a compact version of the player, and I want the full player.
Note: I want to launch External player, not in my app.
Update: Looks like Google Now hardcoded Play Music and Youtube support.
Try with something simple like this:
And one more example with MadiaPlayer and file saved in res/raw/ directory:
More about: http://developer.android.com/guide/topics/media/mediaplayer.html