gpt4 book ai didi

android - 如何使用 exoplayer 在 vi​​ewpager 中播放一个视频

转载 作者:行者123 更新时间:2023-12-05 00:04:44 25 4
gpt4 key购买 nike

我正在制作一个应用程序,我在 View 寻呼机中使用 exo 播放器播放视频,但问题是我一次无法播放一个视频。一次在那里播放的所有视频。我无法在滑动时暂停视频。请帮助。

**this is my activity where i am setting data in view pager**

ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager(),list);


viewpager.setAdapter(adapter);

这是我的 View 寻呼机
public class ViewPagerAdapter extends FragmentPagerAdapter {

List<VideosModel> list;

public ViewPagerAdapter(FragmentManager fragmentManager, List<VideosModel> list) {
super(fragmentManager);
this.list=list;
}

// Returns total number of pages
@Override
public int getCount() {
return list.size();
}

// Returns the fragment to display for that page
@Override
public Fragment getItem(int position) {
return GlobalFragment.newInstance(list.get(position).getVideo());
}

}

这是我获取视频网址并在 exo 播放器中播放的 fragment
public class GlobalFragment extends Fragment {

public static String video_url;
public static ExoPlayer player;
private PlayerView my_player_view;

public GlobalFragment() {
// Required empty public constructor
}

// newInstance constructor for creating fragment with arguments
public static GlobalFragment newInstance(String title) {
GlobalFragment fragmentFirst = new GlobalFragment();
Bundle args = new Bundle();
args.putString(Commn.video_url,title);


fragmentFirst.setArguments(args);
return fragmentFirst;
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

video_url=getArguments().getString(Commn.video_url);


Log.e("Videoss","Videoss"+video_url+"");


}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view= inflater.inflate(R.layout.fragment_global, container, false);

iniViews(view);
setDimension();

playVideo();


return view;
}

private void iniViews(View view) {
my_player_view=view.findViewById(R.id.my_player_view);
my_player_view.setRepeatToggleModes(10);
}

private void playVideo() {
try {


BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(bandwidthMeter));
player = ExoPlayerFactory.newSimpleInstance(getActivity(), trackSelector);

Uri videoURI = Uri.parse(video_url);

DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("exoplayer_video");
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
MediaSource mediaSource = new ExtractorMediaSource(videoURI, dataSourceFactory, extractorsFactory, null, null);

my_player_view.setPlayer(player);
player.prepare(mediaSource);
player.setPlayWhenReady(true);

}catch (Exception e){
Log.e("MainAcvtivity"," exoplayer error "+ e.toString());
}
}
private void setDimension() {

float videoProportion = getVideoProportion();
int screenWidth = getResources().getDisplayMetrics().widthPixels;
int screenHeight = getResources().getDisplayMetrics().heightPixels;
float screenProportion = (float) screenHeight / (float) screenWidth;
android.view.ViewGroup.LayoutParams lp = my_player_view.getLayoutParams();

if (videoProportion < screenProportion) {
lp.height= screenHeight;
lp.width = (int) ((float) screenHeight / videoProportion);
} else {
lp.width = screenWidth;
lp.height = (int) ((float) screenWidth * videoProportion);
}
my_player_view.setLayoutParams(lp);
}
private float getVideoProportion(){
return 2f;
}

最佳答案

int 寻呼机 fragment 布局我定义了这个:

                        <com.google.android.exoplayer2.ui.PlayerView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/playerView"/>
然后在 fragment onCreateView 我添加了这些行:
        PlayerView playerView = v.findViewById(R.id.playerView);
playerView.getLayoutParams().width = ListPager.widthPixels;
playerView.getLayoutParams().height = ListPager.widthPixels;
if(player!=null)
player.release();
player = new SimpleExoPlayer.Builder(App.applicationContext).build();
playerView.setPlayer(player);
MediaItem mediaItem = MediaItem.fromUri(url);
player.setMediaItem(mediaItem);
player.prepare();
player.play();

关于android - 如何使用 exoplayer 在 vi​​ewpager 中播放一个视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62406725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com