2015-06-19 15 views
5

Meine App Liste der Songs von SD-Karte anzeigen. Ich möchte den Song auf dem Standardplayer abspielen können. Ich habe alle Daten über das Lied: ID, Titel, Album, Künstler, Pfad ...Song auf Standard-Musik-Player abspielen - Android

Gibt es eine Möglichkeit, den Standard-Player zum Abspielen des Songs starten?

Was ich habe versucht:

  1. Intent.CATEGORY_APP_MUSIC verwenden. Ich kann den Standardplayer starten, aber den Song nicht einstellen. Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_MUSIC) Öffnen Sie die Standard-Musik-App. Allerdings gibt intent.setData(Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id)) die Ausnahme aus, dass die Absicht nicht gefunden wurde.

  2. Verwenden veraltet MediaStore.INTENT_ACTION_MUSIC_PLAYER. Aktivität wurde nicht gefunden. Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER).setDataAndType(Uri.fromFile(songFile), "audio/*")

  3. Verwendung INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH. Starten Sie die Suche, aber nicht das Lied, sagt, konnte Mix auf Play Musik nicht vorbereiten. Es funktioniert jedoch jetzt von Google, also könnte es der Schlüssel sein. Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH).putExtra(SearchManager.QUERY, name)
  4. Verwenden ACTION_VIEW. Es funktioniert, aber es startet eine kompakte Version des Players, und ich möchte den vollen Player.

compat view

Hinweis: Ich möchte Externer Player, nicht in meiner App starten.

Update: Sieht aus wie Google Now hardcoded Play Musik und Youtube-Unterstützung.

+0

Mögliche Duplikat [Android startet Musik-Player mit Absicht] (h ttp: //stackoverflow.com/questions/3114471/android-launching-music-player-using-intent) –

+0

Eigentlich nicht, ich möchte bestimmte Songs, nicht nur Musik-Player starten. –

+0

Haben Sie die Antworten gefunden?> –

Antwort

0

Versuchen mit einfachen etwas wie folgt aus:

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

Und ein weiteres Beispiel mit MadiaPlayer und Datei in res/raw/Verzeichnis gespeichert:

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

Mehr über: http://developer.android.com/guide/topics/media/mediaplayer.html

+0

** Hinweis **: Ich möchte ** Externer Player ** starten, nicht in meiner App. –

+0

Hmmm, hast du es mit dieser als beste Antwort hier ausgewählt? Http://stackoverflow.com/questions/3114471/android-launching-music-player-user-intent? –

+0

Ja, es startet eine kompakte Version nur zum Abspielen und nicht den ganzen Client. –

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

Die Standard-Ansicht-Anwendung wird geöffnet, wenn der Mime-Typ für Video-Mime-Typ-Vid geändert wird EO-Player wird geöffnet, für Audio-Musik-Player und für Bildergalerie.

Wenn mehrere Player vorhanden sind, wird Resolver Aktivität geöffnet.

Vergessen Sie nicht, ActivityNotFoundException

In Music-Player für ACTION_VIEW AudioPreview activty heißt mit Priorität zu fangen. Es gibt andere Aktivitäten, die diese Aktion durchführen, einfach einmal mit der Aktion "com.android.music.PLAYBACK_VIEWER" anstelle von ACTION_VIEW oder damit prüfen.

+0

Wie unterscheidet sich das von Lösung 4 auf meiner Frage? –

+0

überprüfen Sie AndroidManifest.xl der Musik App, können Sie den Code von AndroidXRef –

+0

android.content.ActivityNotFoundException: Keine Aktivität gefunden Intent zu handeln {act = com.android.music.PLAYBACK_VIEWER dat = Inhalt: // Medien/externe/Audio/media/2797 typ = audio/*} –

3

Wenn Sie möchten, dass die Standard-Musik-Player-Anwendung auf dem Gerät starten, sollte dies versuchen:

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

Es startet die kompakte Version des Standard-Musik-Player, siehe Bild in der aktualisierten Frage –

+0

ah, sorry, ich vermisse dich zu verstehen! – Karoly

+0

Es ist in Ordnung, es ist die naheste Lösung. –

0

es ist für das Spielen eine kompakte Version starten, wie die App es auf diese Weise umgesetzt hat, können Sie viele 3rd-Party-App finden, die die volle App öffnen mit

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

wie Sie bereits versucht, diese