2017-10-16 25 views
0

Je suis totalement nouveau à Android Development et aux appareils Android en général, donc je ne sais pas comment les choses fonctionnent ici.Comment diffuser de la musique à partir d'url avec Java - Android

Je veux faire une application qui va diffuser de la musique à partir de mon URL et toujours jouer la chanson après avoir réduit l'application.

J'ai cherché ma question mais beaucoup de réponses étaient pour des chansons mp3 ou d'autres types, mais mon URL est d'une radio de phase donc ce n'est pas une seule chanson.

L'une des réponses que j'ai trouvé et nous avons été bon pour mon problème était this et utilise ce code:

Uri myUri = Uri.parse("your url here"); 
Intent intent = new Intent(android.content.Intent.ACTION_VIEW); 
intent.setDataAndType(myUri, "audio/*"); 
startActivity(intent); 

Cela me invite à choisir un lecteur de musique.

Est-il possible d'appuyer simplement sur le bouton "play" et d'entendre la musique?

Dans mon application iOS-je utiliser ce code et je peux démarrer et arrêter la musique en streaming chaque fois que je veux sans un lecteur externe:

func prepareToPlay() { 

     let url = URL(string: "myUrl") 

     playerItem = AVPlayerItem(url: url!) 

     player = AVPlayer(playerItem: playerItem) 

     player?.play() 
} 

Merci à l'avance

EDIT

Après suggéré dans les commentaires et la réponse, j'ai essayé de jouer avec MPlayer, j'ai fait une fonction et je l'ai appelé quand j'ai appuyé sur mon bouton comme ceci:

public void playM() { 
    String url = "http://android.programmerguru.com/wp-content/uploads/2013/04/hosannatelugu.mp3"; 

    mPlayer = new MediaPlayer(); 
    mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    try { 
     mPlayer.setDataSource(url); 
    } catch (IllegalArgumentException e) { 
     Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show(); 
    } catch (SecurityException e) { 
     Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show(); 
    } catch (IllegalStateException e) { 
     Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    try { 
     mPlayer.prepare(); 
    } catch (IllegalStateException e) { 
     Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show(); 
    } catch (IOException e) { 
     Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show(); 
    } 
    mPlayer.start(); 
} 

Mais je reçois une erreur (le quatrième message) et j'ai vu dans les journaux ceci:

Impossible de créer un lecteur multimédia

prepareAsync appelé à l'état 1, MPlayer (0x0)

début appelé à l'état 1, mPlayer (0x0)

erreur (-38, 0)

+0

Qu'est-ce que [protocole réseau] (https://developer.android.com/guide/topics/media/media-formats.html#network) est votre serveur en utilisant? – CommonsWare

+0

@CommonsWare Il utilise http –

+2

AFAIK, ce qui n'était pas assez spécifique - voir les documents auxquels je me suis connecté. Vous êtes invités à passer l'URL à 'MediaPlayer' et voir si cela fonctionne. – CommonsWare

Répondre

1

L'intention est utilisée uniquement pour envoyer des données entre les activités/services et le système. Il ne jouera pas la musique. Il ne fait rien d'autre que de dire à une activité quoi faire. Vous avez besoin du mécanisme qui va lire votre flux multimédia. Vous devez utiliser la classe MediaPlayer pour lire du contenu multimédia dans votre application.

Voici quelques tutoriel, comment jouer de la musique de flux: http://programmerguru.com/android-tutorial/android-mediaplayer-example-play-from-internet/

+0

Ok merci, je vais vérifier tout de suite ... –

+0

Je l'ai essayé mais cela n'a pas fonctionné, si vous voulez vérifier mon édition –

+0

Avez-vous vu à la fin de la page l'ajout du code d'autorisation? –

1

intention avec le drapeau d'action est destiné à ouvrir une autre application dans la plupart des cas. Puisque vous n'en avez pas besoin. Vous voulez votre propre lecteur personnalisé. Donc, Android a une classe Media Player pour de tels scénarios. Créez une instance de celui-ci et transmettez votre URL de flux.

Maintenant, définissez les données source et appeler à préparer() après que onBtnClickListener() commencer la musique en appelant mp.start()

Uri myUri = ....; // initialize Uri here 
MediaPlayer mediaPlayer = new MediaPlayer(); 
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mediaPlayer.setDataSource(getApplicationContext(), myUri); 
mediaPlayer.prepare(); 
mediaPlayer.start(); 


P.S: Attrapez toutes les exceptions et assurez-vous que les PERMISSIONS dans le fichier manifeste