2015-09-11 262 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