2013-03-14 13 views
11

Ich versuche, MediaPlayer Klasse zum Abspielen einer Videodatei verwenden. Das Problem ist, dass Video überhaupt nicht angezeigt wird, obwohl ich den Ton im Video hören kann.Wiedergabe von Video mit MediaPlayer-Klasse

Im Folgenden finden Sie den Code der Tätigkeit

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; 
    } 
    } 
    } 

Im Folgenden finden Sie den Code von Layout 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> 

Bitte sagen Sie mir, was getan werden muss? Vielen Dank im Voraus.

+0

Sie können Ihre eigene Oberflächenansicht erstellen und diese Oberflächenansicht in Ihrer Aktivität aufrufen, um das Video abzuspielen. Hoffe, das kann Ihr Problem lösen – AndroidOptimist

Antwort

0

Oberfläche festlegen Höhe und Breite anzeigen, um die übergeordnete Datei in der XML-Datei zu füllen.

<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

ja versucht, dieses auch – Chaitanya

0

Ihr Surface Layout einstellen wrap_contentnicht Größe ein Video im richtigen Seitenverhältnis zu spielen.

Sie können auf diese Antwort Link verweisen

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

Und auch dieses Blog Play media on surfaceview using android.media.MediaPlayer

+0

Yeah der Link Sie zur Verfügung gestellt war leise hilfreich und die App in dort war in der Lage, die gleiche Videodatei von SD-Karte zu spielen. Aber ich möchte nicht den 'ContentProvider' verwenden, d. H.' MediaStore'. Also kannst du mir einen Link vorschlagen, von dem aus ich überprüfen kann, wie man mit der 'MediaPlayer'-Klasse rohe Ressourcen nutzt, um Videos abzuspielen. – Chaitanya

0

Nun, ich weiß nicht, ob Sie eine bestimmte Situation benötigen, haben aber bereits Sie versucht FullscreenVideoView?

Es versucht, alle diese SurfaceView-Probleme zu abstrahieren und Sie können nur in UI-Schaltflächen konzentrieren. Wie es geöffnet ist, können Sie FullscreenVideoView Unterklasse und anpassen, wie Sie benötigen.

Verwandte Themen