如何通过主要活动停止界面播放声音?

时间:2013-06-30 10:46:19

标签: android eclipse android-layout android-mediaplayer

我是Android App的初学者我有新的应用程序从资源文件中调用html文件此应用程序上的任务之一是当用户选中复选框输入值“打开”mp3播放时以及当用户从应用程序中输出时按下后退按钮或按主页按钮声音停止并关闭应用程序。我在html和main活动之间做了我的接口,在html上调用java方法。当我添加我的代码来停止声音时它不会播放。我试图在主要活动oncreate方法中添加这行代码。

mp= MediaPlayer.create(mContext,R.raw.sound);

按下后或家中或关闭按钮时声音停止。但当我打开应用程序时声音工作,但这是我不需要我需要这是当用户选择复选框。我怎么能这样做。

 @Override
 protected void onPause()
 {
     super.onPause();
     if(mp.isPlaying())
     mp.pause(); //stop the sound
 }

 @Override
 protected void onResume() 
 {
     super.onResume();
     mp.start();
 }

public class WebAppInterface   {
Context mContext;
 private MediaPlayer mp;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
    mContext = c;
}


/** Show a toast from the web page */
@JavascriptInterface
public void playsound(String value  ) {
    if (value.equals("on")) {
    mp= MediaPlayer.create(mContext,R.raw.sound);
        mp.setLooping(true);
  mp.start();
    }
    else 
    {  mp.stop();}
}
} 

1 个答案:

答案 0 :(得分:0)

我假设问题是无论您是否选中了复选框,声音都会播放。解决这个问题的一种方法是确认是否在onResume()方法中选中了复选框,而不是仅仅启动。

public class WebAppInterface extends Ramadan   {
Context mContext;
private MediaPlayer mp;
private static boolean checked = false;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
    mContext = c;
}

/** Show a toast from the web page */
@JavascriptInterface
public void playsound(String value , MediaPlayer mp ) {
     if (value.equals("on")) {
        checked = true;
        mp= MediaPlayer.create(mContext,R.raw.sound);
        mp.setLooping(true);
        mp.start();
    }
    else 
    {  
        checked = false;
        mp.stop();
    }
}
} 

在你的主要课程中:

 @Override
 protected void onPause()
 {
     super.onPause();
     if(mp.isPlaying())
     mp.pause(); //stop the sound
 }

 @Override
 protected void onResume() 
 {
     super.onResume();
     if(WebAppInterface.checked)
     {
         mp.start();
     }
 }