Comment diffuser de la musique à partir d'une URL avec Java-Android


Je suis totalement nouveau dans le développement Android et sur les appareils Android en général, donc je ne sais pas comment les choses fonctionnent ici.

Je veux créer une application qui diffusera de la musique à partir de mon URL tout en jouant la chanson après avoir minimisé l'application.

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

L'Une des réponses que j'ai trouvé et ont été bonnes pour mon problème était ce 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 m'incite à choisir un lecteur de musique.

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

Dans mon application iOS, j'utilise ce code et je peux démarrer et arrêter la musique en streaming quand je veux sans lecteur externe:

func prepareToPlay() {

        let url = URL(string: "myUrl")

        playerItem = AVPlayerItem(url: url!)

        player = AVPlayer(playerItem: playerItem)

        player?.play()
}

Merci d'avance

MODIFIER

Après avoir suggéré dans les commentaires et la réponse, j'ai essayé de le jouer avec MPlayer, j'ai créé une fonction et je l'ai appelée 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 j'obtiens une erreur (le quatrième message) et j'ai vu dans les journaux ceci:

Impossible de créer un lecteur multimédia

PrepareAsync appelé dans l'état 1, MPlayer (0x0)

Début appelé dans l'état 1, MPlayer (0x0)

Erreur (-38, 0)

Author: mike vorisis, 2017-10-16

2 answers

Intent utilise uniquement pour envoyer des données entre les activités/services et le système. Il ne va pas jouer de la musique. Il ne fait rien sauf 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 multimédia dans votre application.

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

 1
Author: abr_stackoverflow, 2017-10-16 19:33:21

L'intention avec l'indicateur d'ACTION est destinée à ouvrir une autre application dans la plupart des cas. Puisque vous n'en avez pas besoin. Vous voulez votre propre joueur. Donc, Android a une classe de lecteur multimédia pour de tels scénarios.

Créez-en une instance et transmettez votre stream-URL. Maintenant, définissez la source de données et appelez prepare () après cela dans onBtnClickListener() démarrez 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();


Ps: Attrapez toutes les exceptions et assurez-vous que les AUTORISATIONS dans le fichier manifeste

 1
Author: samirk433, 2017-10-16 19:59:54