请看一下我简单的三方法Service类,它可以流式传输音频并直接播放.
public class StreamService extends Service {
private static final String TAG = "MyService";
String url;
MediaPlayer mp;
@Override
public void onCreate() {
Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
Log.d(TAG, "onCreate");
mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
@Override
public void onDestroy() {
Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
Log.d(TAG, "onDestroy");
mp.stop();
}
@Override
public int onStartCommand(Intent intent, int flags, int startid) {
Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
Log.d(TAG, "onStart");
url = intent.getExtras().getString("url");
try {
mp.setDataSource(url);
mp.prepare();
mp.start();
} catch(Exception e){}
return START_STICKY;
}
}
> playButton执行此操作:
Intent i = new Intent(this, StreamService.class);
i.putExtra("my_mp3_url_string");
startService(i);
> stopButton执行:
stopService(new Intent(this, StreamService.class));
现在,我有一些问题:
>我如何实现pauseButton?我想暂停在服务中运行的媒体
>我的播放/停止媒体/服务的方式是否正确?有没有更好的方法?
>我如何(定期)从我的服务更新我的活动用户界面?我需要添加一些东西吗?
解决方法:
我建议不要使用服务的生命周期来开始和停止播放.使用这种方法意味着每次想要启动新流时,必须通过启动新服务来减慢代码的速度.只需让相同的服务播放所有内容,您就可以节省一些时间.虽然这并不意味着它应该保持running all the time.
要实现这一点(并且能够暂停),您需要在启动后绑定到服务.使用绑定的服务,您将能够对其进行调用 – 例如暂停,播放,停止等.
> Using a Service with MediaPlayer
> Binding to a Service
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。