Aplikacja do przesyłania strumieniowego radia online dla Androida

Buduję aplikację na Androida, która będzie przesyłać strumieniowo kilka stacji radiowych z kraju łacińskiego, jest jak stacje 10, które Wiem, że mogą być odtwarzane w Androidzie, mam adres URL od nich i faktycznie wykonane je pracować za pomocą tego samouczka (link USUNIĘTY, bo jest martwy), ale problem mam jest to, że odtwarza przez kilka sekund, a następnie zatrzymuje się ładuje, ale nie uruchamia ponownie streamingu, moje pytania: {]}

  • Jeśli ktoś pracował z tym tutorialem może mi wyjaśnić jak sprawiają, że strumień stale się zatrzymuje.
  • Czy istnieje łatwiejszy sposób przesyłania strumieniowego dźwięku radiowego? ten samouczek wydaje się trochę stary, czy istnieje nowszy samouczek lub nowsza próbka kodu do nauki lub użycia? Czy ktoś może wysłać mnie we właściwy sposób?
Author: Willi Mentzel, 2011-06-08

3 answers

Więc znalazłem tę próbkę i działa dla mnie, tutaj jest, jeśli masz ten sam problem:

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

W XML (main.xml) kod:

<?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>

I manifest Androida:

<?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
Author: zvzej,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-27 08:44:01

Cóż, jeśli spodziewasz się paska postępu, dostajesz disapointing, jest to strumień, który domyślnie nie ma czasu na zakończenie jest nieskończony. O URL możesz użyć punktu montowania w shoutcast2 / Icecast server i / w shoutcast1.

 3
Author: César Araújo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-06 09:01:03

W onResume lub wrvr chcesz! Wklej ten kod.

    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();
        }
    });
W manifeście.XML dodaj uprawnienia internetowe.
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
 0
Author: Mario Alzate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-16 07:23:04