2015-09-11 163 views
0

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

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) {} 

回答

0

试试这个,

@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(); 
      } 

     } 
+0

嗯它没有工作,但可能是因为我设置了错误的URI路径。我不知道我会设定uri路径,因为整个事情充满了复杂性。 – worker

+0

嗯..但你已经清除你的问题,对吗? –

+0

我只是不知道。 – worker