Как использовать MediaPlayer для SurfaceView во фрагменте - PullRequest
0 голосов
/ 04 мая 2018

Поскольку я хочу иметь возможность передавать MediaPlayer, который воспроизводит видео, я хочу использовать SurfaceView вместо VideoView внутри моего фрагмента, который воспроизводит видео.

Я посмотрел на предыдущий вопрос о том, как прикрепить 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();
}

К сожалению, я не могу перезаписать поверхность, созданную с помощью фрагмента, потому что у фрагмента нет метода. Могу ли я присоединить MediaPlayer к SurfaceView во фрагменте?

1 Ответ

0 голосов
/ 09 мая 2018

Передача просмотра поверхности от фрагмента к родительскому действию с помощью прослушивателя обратного вызова, а затем присоединение Media Player от представления активности к поверхности, затем обновление представления поверхности фрагмента, демонстрационного кода, 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);

В ДЕЯТЕЛЬНОСТИ

    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);
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...