2011-07-08 247 views
6

這是我的代碼,但是當我啓動mediaplayer時,它只有聲音出來,表面沒有任何顯示。爲什麼?播放視頻時SurfaceView空白使用媒體播放器

我不知道這一點。你有一些代碼可以幫助我學習這一點。

videoV = (SurfaceView) findViewById(R.id.SurfaceView1); 
    sh = videoV.getHolder(); 

    File path = Environment.getExternalStorageDirectory(); 
    File file = new File(path, "sample2.mp4"); 

    sh.addCallback(this);  
    mp = new MediaPlayer(); 
    mp.setDataSource(file.getAbsolutePath()); 
    mp.setDisplay(sh); 
    mp.prepare(); 
    mp.start(); 

回答

1


試試這段代碼。

resource是要玩,one.two是包命名您的路徑可能像android.resource://package_name/raw/file_name

VideoView video=(VideoView) findViewById(R.id.videoview); 
MediaController mediaController = new MediaController(this); 
mediaController.setAnchorView(video); 
video.setMediaController(mediaController); 
//Uri uri = Uri.parse("android.resource://play.vedio/"+R.raw.dobeernotdrugs); 
video.setKeepScreenOn(true); 
video.setVideoPath("android.resource://one.two/raw/"+resource); 
video.start(); 
video.requestFocus(); 

也看看這個tutorial

3

已添加的編制監聽文件名?我在該方法中實現了開始,因爲它是指示視頻何時可以呈現的觸發器。

sh.addCallback(this);  
mp = new MediaPlayer(); 
mp.setDataSource(file.getAbsolutePath()); 
mp.setDisplay(sh); 
mp.setOnPreparedListener(this); 
mp.prepare(); 

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

嘗試添加後

sh.addCallback(this); 

在我的情況下,它是有益的。

+1

從Honeycomb開始,setType方法已被廢棄。 –

相關問題