1

我正在从我的网站获取链接的 WebView 中的音乐播放程序。

当用户按下主页按钮时,我希望我的 WebView 活动与状态栏通知保持一致。请帮助给我一些方法。

我在 WebView 中的代码:

public class playlist extends Activity {
private WebView mWebView;
MediaPlayer myMediaPlayer;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.playlist);

    mWebView = new WebView(this);

    mWebView = (WebView) findViewById(R.id.playlist);
    mWebView.setWebViewClient(new myWebClient());
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setAllowFileAccess(true);
    mWebView.getSettings().setPluginsEnabled(true);
    mWebView.getSettings().setBuiltInZoomControls(true);
    mWebView.loadUrl("http://www.mp3skull.com/justin_bieber.html");
}

public class myWebClient extends WebViewClient  
{  
    @Override  
    public void onPageStarted(WebView view, String url, Bitmap favicon) {  
        // TODO Auto-generated method stub  
        super.onPageStarted(view, url, favicon);  
    }  
    @Override  
    public boolean shouldOverrideUrlLoading(WebView view, String url) {  
        // TODO Auto-generated method stub  
        view.loadUrl(url);  
        return true;
    }  
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        mWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
@Override
public void onPause() {
    mWebView.setVisibility(View.GONE);
    mWebView.destroy();
    super.onPause();
}
}

当用户按下主页按钮时,此代码音乐也会因为 Vide onPause() 而停止,但我需要在状态栏通知上以正确的活动继续播放音乐。请帮我。

问候, 维拉克

4

1 回答 1

1

当用户按下 Home 键时,您可以使用onUserLeaveHint ()方法播放声音,如文档所述:

当活动由于用户选择而即将进入后台时,作为活动生命周期的一部分调用。例如,当用户按下 Home 键时,会调用 onUserLeaveHint(),但是当有来电导致通话中的 Activity 自动被带到前台时,被中断的 Activity 不会调用 onUserLeaveHint() . 如果调用它,则在活动的 onPause() 回调之前调用此方法。

要在 Home 键上播放声音,请使用IntentService在您的 Activity 的onUserLeaveHint()中启动它, 并且此服务在作业完成时自动停止。如:

public class MyService extends IntentService {

public MyService(String name) {
    super(name);
    // TODO Auto-generated constructor stub
}
public MyService () {
  super("MyService");
}

@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}
@Override
protected void onHandleIntent(Intent arg0) {
    // TODO Auto-generated method stub
         // PLAY SOUND HERE
    }
}
于 2012-05-29T03:53:53.103 回答