gpt4 book ai didi

android - 如何将 MediaPlayer 用于 fragment 中的 SurfaceView

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:35:55 27 4
gpt4 key购买 nike

因为我希望能够传递播放视频的 MediaPlayer,所以我想在播放视频的 fragment 中使用 SurfaceView 而不是 VideoView。

我看了一个earlier question关于如何将 MediaPlayer 附加到 SurfaceView。问题的答案告诉我创建两个函数:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_player);

getWindow().setFormat(PixelFormat.UNKNOWN);
mPreview = (SurfaceView)findViewById(R.id.surfaceView);
holder = mPreview.getHolder();
holder.setFixedSize(800, 480);
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mp = new MediaPlayer();
}


@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
mp.setDisplay(holder);
play();
}

不幸的是,我无法通过 Fragment 覆盖 surfaceCreated,因为 Fragment 没有该方法。我仍然可以将 MediaPlayer 附加到 Fragment 中的 SurfaceView 吗?

最佳答案

使用回调监听器将 Surface View 从 Fragment 传递到父 Activity,然后将 Media Player 从 Activity 附加到 Surface View,然后更新 Fragment Surface View,演示代码,IN Fragment

      SurfaceView mPreview ;

private MyListener mylistener=null;
public interface MyListener extends EventListener{
void onPassSurface(SurfaceView surfaceview);
}

public void setListener (MyListener listener)
{
mylistener = listener;
}

public void updateSurfaceView(SurfaceView surfaceview)
{
mPreview=surfaceview;

}

mPreview = (SurfaceView)findViewById(R.id.surfaceView);

mylistener.onPassSurface(mPreview);

Activity 中

    MyFragment  myfragment=new MyFragmment();
myfragment.setListener(new MyFragment.MyListener)
{
@Override
void onPassSurface(SurfaceView mPreview)
{
//attach Media Player Here or Write Method to attach
//media player with Surface View and Call from Here

//after attaching media player call this method
myfragment.updateSurfaceView(mPreview);
}

关于android - 如何将 MediaPlayer 用于 fragment 中的 SurfaceView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50181565/

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