【问题标题】:Playing a video on SurfaceView在 SurfaceView 上播放视频
【发布时间】:2015-12-08 14:20:42
【问题描述】:

我正在尝试让我的应用运行视频,但它不起作用,我认为这是因为表面属性。我不知道我应该在surfacechanged括号中放什么,我只知道我希望它的参数覆盖整个屏幕,除了我的按钮。我不确定要为 surfaceDestroyed 放什么,我只想让我的视频在每次结束时重新开始。此外,考虑到它与我在互联网上找到的示例有很大不同,我考虑是否输入了正确的代码设置数据源。

public void surfaceChanged (SurfaceHolder holder, int format, int width, int height) {  
 }

@Override
public void surfaceCreated(SurfaceHolder holder) {
    try {
        mediaPlayer = new MediaPlayer();
        mediaPlayer.setDisplay(surfaceHolder);
        mediaPlayer.setDataSource("com.vid.vid_n_vid.vid");
        mediaPlayer.prepare();
        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            public void onPrepared(MediaPlayer mp) {
                mediaPlayer.start();
            }
        });


    } catch (Exception e) {
        e.printStackTrace();
    }

}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {}

【问题讨论】:

    标签: android android-mediaplayer surfaceview


    【解决方案1】:

    试试这个,

     @Override
          public void surfaceCreated(SurfaceHolder holder) {
          // TODO Auto-generated method stub
                //set the surface holder to use in displaying the video
               mPlayer.setDisplay(surfaceHolder);
               try {
                //set data source to the video file
                    mPlayer.setDataSource(this, Uri.parse("android.resource://com.example.andtip/"+R.raw.pixarforbirds));
                    //prepare the MediaPlayer
                    mPlayer.prepare();
                    //start playing the video
                    mPlayer.start();
                } catch (IllegalArgumentException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (SecurityException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IllegalStateException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
          }
    

    【讨论】:

    • 嗯,它不起作用,但这可能是因为我设置了错误的 uri 路径。我不确定我会将 uri 路径设置为什么,因为整个事情都充满了复杂性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 2014-02-10
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多