我有一个应用程序来播放使用媒体播放器服务的无线电流,它的工作方式如下: 当它开始调用服务并且收音机开始播放时,在主视图中我有一个播放和停止按钮,所以当应用程序启动时,因为收音机立即启动我已经设置播放按钮GONE和停止按钮可见。因此,如果我按下停止按钮,它将停止服务并使播放按钮可见,停止按钮为GONE,反之亦然。 到目前为止,如果服务检测到错误,它会向我的通知栏发送Toast和更新,但Stop按钮仍然是可见的,Play按钮仍然是GONE,所以我的问题是如何在检测到时提供服务错误使按钮改变?所以我可以让Play按钮VISIBLE和Stop GONE再试一次。 这就是我在主Activity:
中对OnCreate中的按钮进行编码的方法 Button playBtn = (Button) findViewById(R.id.buttonPlay);
playBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
View b = findViewById(R.id.buttonPlay);
b.setVisibility(View.GONE);
View c = findViewById(R.id.buttonStopPlay);
c.setVisibility(View.VISIBLE);
TextView textRadioName = (TextView) findViewById(R.id.textView);
textRadioName.setText("You are listening Radio!");
startService(new Intent("PLAY"));
start();
}});
Button stopBtn = (Button) findViewById(R.id.buttonStopPlay);
stopBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
View b = findViewById(R.id.buttonStopPlay);
b.setVisibility(View.GONE);
View c = findViewById(R.id.buttonPlay);
c.setVisibility(View.VISIBLE);
TextView textRadioName = (TextView) findViewById(R.id.textView);
textRadioName.setText("Listen Radio Here");
pause();
}});
这就是我在MediaPlayer服务中编写错误的方法:
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Toast.makeText(this, "Radio not connected!...." , Toast.LENGTH_LONG) .show();
StreamError = true;
updateNotification("Radio not connected!");
return false;
}
我喜欢它的工作方式但看起来很奇怪我的停止按钮可见而不是游戏,到目前为止,如果我按下停止它使我的游戏出现然后我可以再试一次!但不是应用程序应该如何正常工作? 谢谢你的时间。我希望有人能给我指路。
答案 0 :(得分:1)
您可以绑定到您的服务,该服务将返回您必须实施的IBinder。在你的IBinder里面,您可以使用以下功能:
public void setPlayer(IPlayer player);
您的IPlayer将具有您要从服务中调用的一组功能。您可以在此处放置代码以隐藏停止按钮,显示播放按钮或您要从服务中执行的任何其他操作。
根据要求,指向文档中示例的链接:http://developer.android.com/reference/android/app/Service.html#LocalServiceSample