我正在编写一个Android应用程序来从ip传输无线电。我做了一个测试应用程序,其中流服务在MainActivity中,并且它可以工作。 但是,我想在用户转到另一个应用程序时继续流式传输音频。
在我的MainActivity中,我有一个播放/停止按钮,点击后,服务将开始或停止。我的MainActivity处理按钮更改。
开始服务:
Intent intent = new Intent(MainActivity.this, StreamRadio.class);
intent.putExtra("url", "http:/xx.xx.xxx.xxx:xxxx/");
startService(intent);
停止服务:
stopService(new Intent(MainActivity.this, StreamRadio.class));
在StreamRadio.java中,我想要一个从给定网址播放音频的服务。这是我目前的代码,但是它没有用。
public class StreamRadio extends Service implements MediaPlayer.OnPreparedListener {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(intent.getExtras().getString("url"));
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.prepareAsync();
mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
return START_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
@Override
public void onDestroy() {
super.onDestroy();
stopForeground(true);
}
}
正确调用服务,我收到错误
E / MediaPlayer:错误(1,-1)
在物理设备上进行测试时,我在模拟器上收到这两个错误:
E / MediaPlayer:错误(1,-2147483648) E / MediaPlayer:错误(1,-2147483648)
问题:如何制作从ip流式传输无线电的服务?
提前致谢!