私はAndroidラテン国から複数のラジオ局をストリーミングするアプリを作成しています。Androidで再生できることがわかっている10局があり、それらからURLを取得して実際に作成しました彼らはこのチュートリアルを使用して動作します(リンクは削除されていますが、死んでいるため)
だから私はこのサンプルを見つけましたが、それは私にとってはうまくいきます、あなたが同じ問題を抱えているなら、ここにあります:
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();
}
}
}
xML(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>
およびAndroidマニフェスト:
<?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>
さて、プログレスバーが表示されると期待はずれになります。これはストリームであり、デフォルトでは終了する時間がありません。 URLについては、shoutcast2/icecastサーバーのマウントポイントとshoutcast1の/を使用できます。
OnResumeまたはwrvrであなたが欲しい!このコードを貼り付けます。
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();
}
});
Manifest.xmlで、インターネットアクセス許可を追加します。
<uses-permission Android:name="Android.permission.INTERNET"></uses-permission>