如何停止按钮点击事件
服务我使用下列service
在我的应用程序播放声音时,应用程序启动的声音开始,当在菜单中的任何button
其停止用户点击。但我正面临一些问题。如果用户打开应用程序,并且在应用程序菜单中未按任何button
,则按移动声音上的菜单button
不会停止。如果应用程序启动并呼叫或消息来自移动静音在后台播放。如何在这2件事上停止service
?如何停止按钮点击事件
服务代码
public class PlayAudio extends Service{
private static final String LOGCAT = null;
MediaPlayer objPlayer;
public void onCreate(){
super.onCreate();
Log.d(LOGCAT, "Service Started!");
objPlayer = MediaPlayer.create(this, R.raw.test);
}
public int onStartCommand(Intent intent, int flags, int startId){
objPlayer.start();
Log.d(LOGCAT, "Media Player started!");
if(objPlayer.isLooping() != true){
Log.d(LOGCAT, "Problem in Playing Audio");
}
return 1;
}
public void onStop(){
objPlayer.stop();
objPlayer.release();
}
public void onPause(){
objPlayer.stop();
objPlayer.release();
}
public void onDestroy(){
objPlayer.stop();
objPlayer.release();
}
@Override
public IBinder onBind(Intent objIndent) {
return null;
}
}
当我的应用程序从飞溅活动开始我开始音频喜欢 -
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
objIntent = new Intent(this, PlayAudio.class);
startService(objIntent);
new Handler().postDelayed(csRunnable2, 5000);
}
然后在主菜单中的活动停止它,当用户按下任何按钮 -
hist = (Button) findViewById(R.id.hist);
hist.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
objIntent = new Intent(MainActivity.this, PlayAudio.class);
stopService(objIntent);
startActivity(new Intent(MainActivity.this, History.class));
finish();
请告诉我,我必须做什么改变?
您应该重写的onStop()和的onPause()这样的活动的方法:
@Override
public void onStop()
{
super.onStop();
stopService(new Intent(getApplicationContext(), YourService.class));
}
@Override
public void onPause()
{
super.onPause();
stopService(new Intent(getApplicationContext(), YourService.class));
}
或者
@Override
public void onPause()
{
super.onPause();
// send a message to service to set sound player on pause(using Handler)
}
@Override
public void onResume()
{
super.onResume();
// send a message to service to resume sound playing
}
无法正常工作。在按回家键仍然在播放。 –
尝试重写onBackPressed()方法: @Override public void onBackPressed() { super.onBackPressed(); stopService(new Intent(getApplicationContext(),YourService.class)); } – floyd
仍然无法正常工作。 –
为了您的第一个问题,你可以参考这篇文章,
Android service running after pressing Home key
关于第二个问题,您应该创建一个接收器监听来电。
,并在接收器的onReceive()
方法,你可以停止该服务。
参考this question有关如何创建传入接收器的详细信息。
利用这一点,你可以一次性切断呼叫后重新启动该服务。
答案你提供的第一个问题看起来不好。我如何篡改我的代码? –
就叫
stopService(new Intent(getApplicationContext(), YourService.class));
这将停止您的服务
在哪里添加这个? –
你想停止你的服务? –
阅读完整的问题,然后回答我。 –
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
startService(new Intent(getApplicationContext(), MyService.class));
}
});
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
stopService(new Intent(getApplicationContext(), MyService.class));
}
});
所谓
Stopself()方法。你在哪里做的?这是你发布的完整代码吗? – DaxeshKhatri
你应该明确地调用它的点击按钮也 – Saggy