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:
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>
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.
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>