DO NOT MERGE : cherry pick of change Ieb7ae26b from master

Buffering in full screen mode will show progressView

bug:4187252
Change-Id: Ia44d880ab126c2439fb13504db87492d45c90bc8
This commit is contained in:
Teng-Hui Zhu
2011-03-30 14:39:56 -07:00
parent a9cadefde4
commit 2fcf82aee3
3 changed files with 34 additions and 9 deletions

View File

@@ -191,8 +191,6 @@ public class HTML5VideoFullScreen extends HTML5VideoView
if (mProgressView != null) {
mProgressView.setVisibility(View.GONE);
mLayout.removeView(mProgressView);
mProgressView = null;
}
mVideoWidth = mp.getVideoWidth();
@@ -314,4 +312,13 @@ public class HTML5VideoFullScreen extends HTML5VideoView
return false;
}
@Override
protected void switchProgressView(boolean playerBuffering) {
if (playerBuffering) {
mProgressView.setVisibility(View.VISIBLE);
} else {
mProgressView.setVisibility(View.GONE);
}
return;
}
}

View File

@@ -78,6 +78,7 @@ public class HTML5VideoView implements MediaPlayer.OnPreparedListener {
TIMEUPDATE_PERIOD);
}
mPlayer.start();
setPlayerBuffering(false);
}
}
@@ -296,4 +297,21 @@ public class HTML5VideoView implements MediaPlayer.OnPreparedListener {
return 0;
}
// This is true only when the player is buffering and paused
public boolean mPlayerBuffering = false;
public boolean getPlayerBuffering() {
return mPlayerBuffering;
}
public void setPlayerBuffering(boolean playerBuffering) {
mPlayerBuffering = playerBuffering;
switchProgressView(playerBuffering);
}
protected void switchProgressView(boolean playerBuffering) {
// Only used in HTML5VideoFullScreen
}
}

View File

@@ -95,8 +95,10 @@ class HTML5VideoViewProxy extends Handler
// identify the exact layer on the UI thread to use the SurfaceTexture.
private static int mBaseLayer = 0;
// This is true only when the player is buffering and paused
private static boolean mPlayerBuffering = false;
private static void setPlayerBuffering(boolean playerBuffering) {
mHTML5VideoView.setPlayerBuffering(playerBuffering);
}
// Every time webView setBaseLayer, this will be called.
// When we found the Video layer, then we set the Surface Texture to it.
// Otherwise, we may want to delete the Surface Texture to save memory.
@@ -111,7 +113,7 @@ class HTML5VideoViewProxy extends Handler
int currentVideoLayerId = mHTML5VideoView.getVideoLayerId();
if (layer != 0 && surfTexture != null && currentVideoLayerId != -1) {
int playerState = mHTML5VideoView.getCurrentState();
if (mPlayerBuffering)
if (mHTML5VideoView.getPlayerBuffering())
playerState = HTML5VideoView.STATE_NOTPREPARED;
boolean foundInTree = nativeSendSurfaceTexture(surfTexture,
layer, currentVideoLayerId, textureName,
@@ -166,7 +168,6 @@ class HTML5VideoViewProxy extends Handler
WebChromeClient client, int videoLayerId) {
int currentVideoLayerId = -1;
boolean backFromFullScreenMode = false;
mPlayerBuffering = false;
if (mHTML5VideoView != null) {
currentVideoLayerId = mHTML5VideoView.getVideoLayerId();
if (mHTML5VideoView instanceof HTML5VideoFullScreen) {
@@ -231,7 +232,6 @@ class HTML5VideoViewProxy extends Handler
}
public static void onPrepared() {
mPlayerBuffering = false;
if (!mHTML5VideoView.isFullScreenMode() || mHTML5VideoView.getAutostart()) {
mHTML5VideoView.start();
}
@@ -351,11 +351,11 @@ class HTML5VideoViewProxy extends Handler
break;
}
case BUFFERING_START: {
VideoPlayer.mPlayerBuffering = true;
VideoPlayer.setPlayerBuffering(true);
break;
}
case BUFFERING_END: {
VideoPlayer.mPlayerBuffering = false;
VideoPlayer.setPlayerBuffering(false);
break;
}
}