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