I am using Android Webview to play html5 videos, including Youtube videos (my own tags and Youtube embedded iFrames). I encountered an issue with Samsung Galaxy S4, on the following scenario:
I tried this on a test environment with two kind of Webviews: "regular" Android Webview and HTML5 webview
The only "suspicious" thing I see is an error while pressing the 'back' (Android error):
sendUserActionEvent() mView == null
Is it a Galaxy S4 issue? An Android issue? Any idea?
tnx, Yaniv
It appears that if the AudioService does not have focus when you close the Webview, it is not paused. This causes several issues (another player cannot start playing etc.)
The only solution that worked for me is:
@Override
protected void onPause() {
super.onPause();
((AudioManager)getSystemService(
Context.AUDIO_SERVICE)).requestAudioFocus(
new OnAudioFocusChangeListener() {
@Override
public void onAudioFocusChange(int focusChange) {}
}, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
}
This will cause the current player to be paused/killed (not sure which) when going down and solve all of the experienced issues/problems.
The previous answer isn't worked to me at Android Kitkat, the following answer will work properly on all platforms.
try {
Class.forName("android.webkit.WebView")
.getMethod("onPause", (Class[]) null)
.invoke(webView, (Object[]) null);
} catch (ClassNotFoundException cnfe) {
cnfe.printStackTrace();
} catch (NoSuchMethodException nsme) {
nsme.printStackTrace();
} catch (InvocationTargetException ite) {
ite.printStackTrace();
} catch (IllegalAccessException iae) {
iae.printStackTrace();
} catch (NullPointerException nullPointerException) {
nullPointerException.printStackTrace();
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With