2013-03-14 81 views
11

我想利用MediaPlayer類播放視頻文件。問題是視頻沒有得到顯示,儘管我可以聽到視頻播放中的聲音。使用MediaPlayer類播放視頻

以下是活動

public class MainActivity extends Activity implements OnClickListener { 

private SurfaceView surfaceView; 
private Button btnPlay; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    init(); 
    addListener(); 

} 

private void init() { 
    // TODO Auto-generated method stub 
    surfaceView = (SurfaceView) findViewById(R.id.surfaceView1); 
    btnPlay = (Button) findViewById(R.id.btnPlay); 
} 

private void addListener() { 
    // TODO Auto-generated method stub 

    btnPlay.setOnClickListener(this); 
} 

MediaPlayer mediaPlayer = null; 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    case R.id.btnPlay: 
     try{ 
     if (mediaPlayer != null) { 
      mediaPlayer.reset(); 
      mediaPlayer.release(); 
     }else{ 
     getWindow().setFormat(PixelFormat.UNKNOWN); 
     MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.wildlife); 
     SurfaceHolder surfaceHolder = surfaceView.getHolder(); 

     surfaceHolder.setFixedSize(176, 144); 
     surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
     mediaPlayer.setDisplay(surfaceHolder); 
     mediaPlayer.start();} 
     }catch (Exception e) { 
      Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
     break; 

    default: 
     break; 
    } 
    } 
    } 

下面的代碼是佈局的XML代碼

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<SurfaceView 
    android:id="@+id/surfaceView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" /> 

<Button 
    android:id="@+id/btnPlay" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@+id/surfaceView1" 
    android:layout_alignTop="@+id/surfaceView1" 
    android:text="@string/play" /> 

</RelativeLayout> 

請告訴我需要做什麼? 在此先感謝。

+0

您可以創建自己的曲面視圖並在您的活動中調用此曲面視圖來播放視頻。希望這可以解決您的問題 – AndroidOptimist 2013-12-07 06:42:11

回答

0

set surface在xml文件中查看填充父項的高度和寬度。

<SurfaceView 
android:id="@+id/surfaceView1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:layout_alignParentBottom="true" 
android:layout_alignParentLeft="true" 
android:layout_alignParentRight="true" 
android:layout_alignParentTop="true" /> 
+0

是啊試過這一個也 – Chaitanya 2013-03-14 12:12:16

0

設置你的SurfaceView佈局WRAP_CONTENT不會大小的視頻,以在適當的寬高比播放。

您可以參考這個答案的鏈接

https://stackoverflow.com/a/6283676/1441666

而且也是這個博客Play media on surfaceview using android.media.MediaPlayer

+0

是的,你提供的鏈接是安靜的幫助,並在那裏的應用程序能夠播放SD卡相同的視頻文件。但我不想使用'ContentProvider',即'MediaStore'。所以你可以建議我一個鏈接,我可以檢查如何利用原始資源使用'MediaPlayer'類播放視頻。 – Chaitanya 2013-03-14 12:14:59

0

好吧,如果你需要一個具體的情況我不知道,但你已經試過FullscreenVideoView

它試圖抽象所有這些SurfaceView的問題,你只能關注UI按鈕。當它打開時,您可以根據需要劃分FullscreenVideoView的子類並進行自定義。