Online radio streaming app for Android

前端 未结 3 1482
北恋
北恋 2020-11-28 17:52

I\'m building an Android app that will stream several radio stations from a Latin Country, there is like 10 stations that I know can be played in android, I got the URL\'s f

相关标签:
3条回答
  • 2020-11-28 18:15

    Well, if you expect a progress bar, you get disapointing, this is a stream, which by default has no time to end is endless. About the URL you can use the mount point in shoutcast2/icecast server and the / in the shoutcast1.

    0 讨论(0)
  • 2020-11-28 18:17

    So I found this sample and it works for me, here it is if you have the same issue:

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

    in the XML (main.xml) code:

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

    and the 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>
    

    0 讨论(0)
  • 2020-11-28 18:17

    In onResume or wrvr you want! Paste this code.

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

    In the manifest.xml add the Internet permission.

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    
    0 讨论(0)
提交回复
热议问题