-1

我是 Android 应用程序的初学者我有一个新应用程序,它从资产文件中调用 html 文件这个应用程序的任务之一是当用户选择复选框输入值“打开”mp3 播放以及当用户从应用程序退出时按下返回按钮或按主页按钮声音停止并关闭应用程序。我在 html 和主要活动之间做了我的接口,以在 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();}
}
} 
4

1 回答 1

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();
     }
 }
于 2013-06-30T11:01:58.043 回答