我的第一个活动是exoplayer,单击全屏按钮时,我将打开一个新的VideoActivity全屏。我只发送当前职位并启动该职位的VideoActivity。
from python.helper.my_client import Client
def deco_download(f):
def f_download(*args, **kwargs):
# some retry functionality here
return json_data
return f_download
class Downloader:
def __init__(self):
self.attribute = 'some_value'
@deco_download
def download_persons(self, client, *args, **kwargs):
return client.get_persons(*args, **kwargs)
@deco_download
def download_organizations(self, client, *args, **kwargs):
return client.get_organizations(*args, **kwargs)
def run(self):
dispatcher = {
'person': self.download_persons(client),
'organization': self.download_organizations(client)
}
for key in dispatcher:
print("Downlading data for: {0}".format(key)
dispatcher[key]
但是问题是当打开新活动并从当前位置启动exoplayer时。 Exoplayer再次开始缓冲。
是否可以将缓冲数据传送到SecondActivity。
答案 0 :(得分:0)
实际上是不可能的。但是我设法实现的一种解决方法是,当您要全屏播放时,将播放器视图的宽度和高度更改为MATCH_PARENT
(即使在配置上进行了更改)。How to play video full screen in landscape using exoplayer这可以为您提供帮助。
答案 1 :(得分:0)
现在回答这个问题可能为时已晚,但这可能会对其他人有所帮助。
如果您想为exoplayer实现全屏功能,请不要通过单独的活动来实现,您只需要打开一个具有高宽和宽的对话框即可计算整个屏幕,只需要添加您正在使用的playerview适用于“全屏”浏览器。
mFullScreenButton.setOnClickListener(v -> {
if (!mExoPlayerFullscreen) {
((Activity) mContext).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
openFullscreenDialog();
} else {
((Activity) mContext).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
closeFullscreenDialog();
}
});
在这里,我们为全屏按钮初始化onClick
private void openFullscreenDialog() {
((ViewGroup) playerView.getParent()).removeView(playerView);
mFullScreenDialog.addContentView(playerView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
mFullScreenIcon.setImageResource(R.drawable.ic_exit_fullscreen);
mExoPlayerFullscreen = true;
mFullScreenDialog.show();
}
上面的是在调用全屏按钮以匹配屏幕时调用的方法。下面是撤消全屏的方法。
private void closeFullscreenDialog() {
((ViewGroup) playerView.getParent()).removeView(playerView);
((FrameLayout) findViewById(R.id.main_media_frame)).addView(playerView);
mExoPlayerFullscreen = false;
mFullScreenDialog.dismiss();
mFullScreenIcon.setImageResource(R.drawable.ic_fullscreen);
}
下面是用于初始化对话框的代码段。
mFullScreenDialog = new Dialog(mContext, android.R.style.Theme_Black_NoTitleBar_Fullscreen) {
public void onBackPressed() {
if (mExoPlayerFullscreen) {
closeFullscreenDialog();
}
super.onBackPressed();
}
};