Come lo streaming di musica da url con Java-Android


Sono totalmente nuovo allo sviluppo di Android e ai dispositivi Android in generale, quindi non capisco come stiano funzionando le cose qui.

Voglio creare un'app che trasmetta musica dal mio URL e continui a riprodurre la canzone dopo aver minimizzato l'applicazione.

Ho cercato la mia domanda ma molte risposte erano per canzoni mp3 o altri tipi, ma il mio URL proviene da una radio dal vivo, quindi non è solo una canzone.

Una delle risposte che ho trovato e sono state buone per il mio problema è stata questa e usa questo codice:

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

Questo mi richiede di scegliere un lettore musicale.

C'è un modo per premere semplicemente il mio pulsante" play " e ascoltare la musica?

Nella mia app iOS uso questo codice e posso avviare e interrompere la musica in streaming ogni volta che voglio senza un lettore esterno:

func prepareToPlay() {

        let url = URL(string: "myUrl")

        playerItem = AVPlayerItem(url: url!)

        player = AVPlayer(playerItem: playerItem)

        player?.play()
}

Grazie in anticipo

MODIFICA

Dopo aver suggerito nei commenti e nella risposta ho provato a giocarlo con MPlayer , ho creato una funzione e l'ho chiamata quando ho toccato il mio pulsante come questo:

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

Ma ottengo un errore (il quarto messaggio) e ho visto nei registri questo:

Impossibile creare il lettore multimediale

PrepareAsync chiamato nello stato 1, MPlayer (0x0)

Inizio chiamato nello stato 1, MPlayer (0x0)

Errore (-38, 0)

Author: mike vorisis, 2017-10-16

2 answers

Intent viene utilizzato solo per l'invio di alcuni dati tra attività/servizi e sistema. Non suonerà la musica. Non fa nulla se non dire a qualche attività cosa fare. Hai bisogno del meccanismo che riprodurrà il tuo flusso multimediale. Dovresti usare la classe MediaPlayer per riprodurre contenuti multimediali all'interno dell'applicazione.

Ecco alcuni tutorial, come riprodurre musica dal flusso: http://programmerguru.com/android-tutorial/android-mediaplayer-example-play-from-internet/

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

Intent con ACTION flag ha lo scopo di aprire un'altra app nella maggior parte dei casi. Dal momento che non ne hai bisogno. Vuoi il tuo giocatore personalizzato. Quindi Android ha una classe Media Player per tali scenari.

Crea un'istanza di esso e passa il tuo stream-URL. Ora, imposta l'origine dati e chiama prepare () dopo di che in onBtnClickListener() avvia la musica chiamando 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: Cattura tutte le eccezioni e assicurati che le AUTORIZZAZIONI nel file manifest

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