2

我想制作基于 Android 浏览器的 Radio Web App。我的 Web App 的关键功能是连续播放音乐列表(mp3 文件)...... JavaScript 代码很简单...... 它在 PC 浏览器、iOS safari 和 Android Dolphin 浏览器(第 3 方浏览器)中运行良好......


var audioPlayer = new Audio();

audioPlayer.addEventListener('ended', nextSong, false);

function nextSong() {
  audioPlayer.src = nextMusic_src; 
}

但。在 Android 默认浏览器中,当 android 处于后台模式(主屏幕模式和 LCD-off 睡眠模式)时,Android 浏览器的 onPause() 会阻止“结束”事件和 nextSong() 的执行。所以,我的网络应用程序只能播放一首音乐......并且不再工作...... Android浏览器的onPause()源代码是这样的......


浏览器活动.java

public class BrowserActivity extends Activity 
{

   private Controller mController;

   // ...

   @Override

   protected void onPause() {

       if (mController != null) {
           mController.onPause();        //   <<==== here
       }
       super.onPause();
   }

}

控制器.java

public class Controller implements WebViewController, UiController {

   protected void onPause() {

       // ...
       mActivityPaused = true;
       // ...
       mUi.onPause();
       mNetworkHandler.onPause();        //   <<==== here

       WebView.disablePlatformNotifications();      //   <<====here
   }

}


NetworkStateHandler.java

public class NetworkStateHandler {

   // ...

   void onPause() {

       // unregister network state listener

       mActivity.unregisterReceiver(mNetworkStateIntentReceiver);  //  <<==== here

   }

}

是否有任何浏览器策略可以防止后台模式中的事件......?如果没有,我怎么能注意到这个报告给谷歌开发者请求使用网络应用播放背景音乐......?我认为不是基于 WebView 的网络应用程序(混合),而是基于浏览器的网络应用程序......谢谢......

郭诺贤

4

1 回答 1

0

Droid 的结束事件不会持续触发。我听说,它在 ICS 中已修复。但是姜饼和以前的有问题。

除了收听 .ended 之外,您是否可以收听 .timeupdate 并在该处理程序中查看时间是否是歌曲的结尾?这可能会解决您的问题。

于 2012-11-27T20:12:02.543 回答