it-swarm.com.de

Online-Radio-Streaming-App für Android

Ich baue eine Android-App, die mehrere Radiosender aus einem lateinischen Land streamen wird. Es gibt ungefähr 10 Stationen, von denen ich weiß, dass sie in Android abgespielt werden können. weil es tot ist) aber das Problem, das ich habe, ist, dass es einige Sekunden lang spielt und dann stoppt, es lädt weiter, aber das Streaming wird nicht neu gestartet, meine Fragen:

  • Wenn jemand mit diesem Tutorial gearbeitet hat, kann man mir erklären, wie man es ohne Abbruch ständig zum Streamen bringt.
  • Gibt es eine einfachere Möglichkeit, Radio-Audio zu streamen? Dieses Tutorial scheint etwas alt zu sein, gibt es ein neueres Tutorial oder ein neueres Codebeispiel zum Lernen oder Verwenden?
  • Kann mir jemand den richtigen Weg schicken?
35
zvzej

Ich habe dieses Beispiel gefunden und es funktioniert für mich, hier ist es, wenn Sie das gleiche Problem haben:

in myMain.Java

import Android.app.Activity;
import Android.os.Bundle;

import Java.io.IOException;

import Android.media.MediaPlayer;
import Android.media.MediaPlayer.OnBufferingUpdateListener;
import Android.media.MediaPlayer.OnPreparedListener;
import Android.util.Log;
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.widget.Button;
import Android.widget.ProgressBar;

public class myMain extends Activity implements OnClickListener {

    private ProgressBar playSeekBar;

    private Button buttonPlay;

    private Button buttonStopPlay;

    private MediaPlayer player;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        initializeUIElements();

        initializeMediaPlayer();
    }

    private void initializeUIElements() {

        playSeekBar = (ProgressBar) findViewById(R.id.progressBar1);
        playSeekBar.setMax(100);
        playSeekBar.setVisibility(View.INVISIBLE);

        buttonPlay = (Button) findViewById(R.id.buttonPlay);
        buttonPlay.setOnClickListener(this);

        buttonStopPlay = (Button) findViewById(R.id.buttonStopPlay);
        buttonStopPlay.setEnabled(false);
        buttonStopPlay.setOnClickListener(this);

    }

    public void onClick(View v) {
        if (v == buttonPlay) {
            startPlaying();
        } else if (v == buttonStopPlay) {
            stopPlaying();
        }
    }

    private void startPlaying() {
        buttonStopPlay.setEnabled(true);
        buttonPlay.setEnabled(false);

        playSeekBar.setVisibility(View.VISIBLE);

        player.prepareAsync();

        player.setOnPreparedListener(new OnPreparedListener() {

            public void onPrepared(MediaPlayer mp) {
                player.start();
            }
        });

    }

    private void stopPlaying() {
        if (player.isPlaying()) {
            player.stop();
            player.release();
            initializeMediaPlayer();
        }

        buttonPlay.setEnabled(true);
        buttonStopPlay.setEnabled(false);
        playSeekBar.setVisibility(View.INVISIBLE);
    }

    private void initializeMediaPlayer() {
        player = new MediaPlayer();
        try {
            player.setDataSource("http://usa8-vn.mixstream.net:8138");
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        player.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {

            public void onBufferingUpdate(MediaPlayer mp, int percent) {
                playSeekBar.setSecondaryProgress(percent);
                Log.i("Buffering", "" + percent);
            }
        });
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (player.isPlaying()) {
            player.stop();
        }
    }
}

im XML-Code (main.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical" Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<TextView Android:layout_width="fill_parent"
        Android:layout_height="wrap_content" Android:text="Source: (Radio La Chevere)"
        Android:layout_marginTop="10dip" Android:gravity="center" />
<ProgressBar Android:id="@+id/progressBar1"
        Android:indeterminateOnly="false" Android:progressDrawable="@Android:drawable/progress_horizontal"
        Android:indeterminateDrawable="@Android:drawable/progress_indeterminate_horizontal"
        Android:minHeight="20dip" Android:maxHeight="20dip"
        Android:layout_width="fill_parent" Android:layout_height="wrap_content"
        Android:layout_marginLeft="20dip" Android:layout_marginRight="20dip"
        Android:layout_marginTop="10dip"></ProgressBar>
<LinearLayout Android:id="@+id/linearLayout1"
        Android:layout_height="wrap_content" Android:layout_width="match_parent"
        Android:layout_marginTop="20dip" Android:gravity="center">
        <Button Android:text="Play" Android:id="@+id/buttonPlay"
                Android:layout_width="wrap_content" Android:layout_height="wrap_content"></Button>
        <Button Android:text="Stop" Android:id="@+id/buttonStopPlay"
                Android:layout_width="wrap_content" Android:layout_height="wrap_content"></Button>
</LinearLayout>
</LinearLayout>

und das Android-Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
  package="package.your.RadioStream"
  Android:versionCode="1"
  Android:versionName="1.0">
<uses-sdk Android:minSdkVersion="8" />
<uses-permission Android:name="Android.permission.INTERNET"></uses-permission>

<application Android:icon="@drawable/icon" Android:label="@string/app_name">
    <activity Android:name=".myMain"
              Android:label="@string/app_name">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />
            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

60
zvzej

Wenn Sie eine Fortschrittsleiste erwarten, werden Sie enttäuscht. Dies ist ein Stream, der standardmäßig keine Zeit hat, um zu enden. Über die URL können Sie den Einhängepunkt in shoutcast2/icecast server und das/in shoutcast1 verwenden. 

3
César Araújo

In onResume oder wrvr willst du! Fügen Sie diesen Code ein.

    String url = "http://server2.crearradio.com:8371"; // your URL here
    final MediaPlayer mediaPlayer = new MediaPlayer();
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    try {
        mediaPlayer.setDataSource(url);
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        mediaPlayer.prepare(); // might take long! (for buffering, etc)
    } catch (IOException e) {
        e.printStackTrace();
    }
    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

        public void onPrepared(MediaPlayer mp) {
            mediaPlayer.start();
        }
    });

Fügen Sie in der manifest.xml die Internetberechtigung hinzu.

<uses-permission Android:name="Android.permission.INTERNET"></uses-permission>
0
Mario Alzate