Enable screen timeout when video is paused. closes #368

This commit is contained in:
daniel oeh 2014-03-28 20:38:01 +01:00
parent ae09dbffb6
commit 1048939f69
3 changed files with 41 additions and 4 deletions

View File

@ -135,6 +135,12 @@ public abstract class MediaplayerActivity extends ActionBarActivity
public void onPlaybackSpeedChange() {
MediaplayerActivity.this.onPlaybackSpeedChange();
}
@Override
protected void setScreenOn(boolean enable) {
super.setScreenOn(enable);
MediaplayerActivity.this.setScreenOn(enable);
}
};
}
@ -151,6 +157,9 @@ public abstract class MediaplayerActivity extends ActionBarActivity
setTheme(UserPreferences.getTheme());
}
protected void setScreenOn(boolean enable) {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
chooseTheme();
@ -243,7 +252,8 @@ public abstract class MediaplayerActivity extends ActionBarActivity
menu.findItem(R.id.support_item).setVisible(
media != null && media.getPaymentLink() != null &&
(media instanceof FeedMedia) &&
((FeedMedia) media).getItem().getFlattrStatus().flattrable());
((FeedMedia) media).getItem().getFlattrStatus().flattrable()
);
menu.findItem(R.id.share_link_item).setVisible(
media != null && media.getWebsiteLink() != null);
menu.findItem(R.id.visit_website_item).setVisible(
@ -285,7 +295,8 @@ public abstract class MediaplayerActivity extends ActionBarActivity
dialog.dismiss();
controller.disableSleepTimer();
}
});
}
);
stDialog.setNegativeButton(R.string.cancel_label,
new DialogInterface.OnClickListener() {
@ -294,7 +305,8 @@ public abstract class MediaplayerActivity extends ActionBarActivity
int which) {
dialog.dismiss();
}
});
}
);
stDialog.create().show();
}
break;
@ -451,7 +463,8 @@ public abstract class MediaplayerActivity extends ActionBarActivity
dialog.dismiss();
finish();
}
});
}
);
errorDialog.create().show();
}

View File

@ -337,4 +337,14 @@ public class VideoplayerActivity extends MediaplayerActivity {
return R.layout.videoplayer_activity;
}
@Override
protected void setScreenOn(boolean enable) {
super.setScreenOn(enable);
if (enable) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
} else {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}
}

View File

@ -422,12 +422,16 @@ public abstract class PlaybackController {
checkMediaInfoLoaded();
cancelPositionObserver();
updatePlayButtonAppearance(playResource, playText);
if (PlaybackService.getCurrentMediaType() == MediaType.VIDEO) {
setScreenOn(false);
}
break;
case PLAYING:
clearStatusMsg();
checkMediaInfoLoaded();
if (PlaybackService.getCurrentMediaType() == MediaType.VIDEO) {
onAwaitingVideoSurface();
setScreenOn(true);
}
setupPositionObserver();
updatePlayButtonAppearance(pauseResource, pauseText);
@ -551,6 +555,16 @@ public abstract class PlaybackController {
}
}
/**
* Should be implemented by classes that show a video. The default implementation
* does nothing
*
* @param enable True if the screen should be kept on, false otherwise
*/
protected void setScreenOn(boolean enable) {
}
public OnClickListener newOnPlayButtonClickListener() {
return new OnClickListener() {
@Override