如何停止按钮点击事件

问题描述:

服务我使用下列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(); 

请告诉我,我必须做什么改变?

+1

Stopself()方法。你在哪里做的?这是你发布的完整代码吗? – DaxeshKhatri

+0

你应该明确地调用它的点击按钮也 – Saggy

您应该重写的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 
} 
+0

无法正常工作。在按回家键仍然在播放。 –

+0

尝试重写onBackPressed()方法: @Override public void onBackPressed() { super.onBackPressed(); stopService(new Intent(getApplicationContext(),YourService.class)); } – floyd

+0

仍然无法正常工作。 –

为了您的第一个问题,你可以参考这篇文章,

Android service running after pressing Home key

关于第二个问题,您应该创建一个接收器监听来电。

,并在接收器的onReceive()方法,你可以停止该服务。

参考this question有关如何创建传入接收器的详细信息。

利用这一点,你可以一次性切断呼叫后重新启动该服务。

+0

答案你提供的第一个问题看起来不好。我如何篡改我的代码? –

就叫

stopService(new Intent(getApplicationContext(), YourService.class)); 

这将停止您的服务

+0

在哪里添加这个? –

+0

你想停止你的服务? –

+0

阅读完整的问题,然后回答我。 –

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)); 
    } 
}); 
所谓