我正在使用以下service
在应用启动声音启动时以及当用户点击其停止的菜单中的任何button
时在我的应用中播放声音。但我面临一些问题。就像用户打开应用程序而不按应用程序菜单中的任何button
一样,他在移动声音上按菜单button
不会停止。如果应用程序启动和呼叫或消息即将发布移动仍然在后台播放声音。如何在这两个事件上停止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();
请告诉我我必须做哪些更改?
答案 0 :(得分:2)
您应该覆盖Activity的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
}
答案 1 :(得分:1)
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));
}
});
答案 2 :(得分:0)
关于第一期,您可以参考这篇文章,
Android service running after pressing Home key
对于第二个问题,您应该创建一个侦听来电的接收器。
并且在接收方的onReceive()
方法中,您可以停止服务。
有关如何创建传入接收器的详细信息,请参阅this question。
使用此功能,您可以在呼叫断开后再次启动服务。
答案 3 :(得分:0)
只需致电
stopService(new Intent(getApplicationContext(), YourService.class));
这将停止您的服务