8 Stimmen

Wie kann ich einen Android MediaController von Layout-Xml erscheinen?

Ich habe eine layout.xml-Datei mit dem folgenden XML erstellt, aber ich kann den MediaController nicht bekommen, um überhaupt zu erscheinen.

<MediaController android:id="@+id/media_controller"
    android:layout_width="fill_parent"
    android:layout_height="200px"
    android:visibility="visible"/>

Im Code kann ich einen Verweis darauf aus dem Code erhalten, show() aufrufen usw., aber es erscheint nie.

Ich habe in der Android-Entwicklungsdokumentation festgestellt ( MediaController.html ), dass dort steht: "Der Weg, diese Klasse zu verwenden, ist, sie programmatisch zu instanziieren.", vielleicht bin ich also ein Dummkopf und muss nur etwas anders machen, z. B. nicht das tun, was ich gerade tue :)

Ich KANN es anzeigen lassen, wenn ich es programmatisch mache, aber es muss immer auf dem Bildschirm angezeigt werden. Bin ich nur dumm, oder ist es einfach nicht gemeint, über XML aufgeblasen werden?

0voto

Adil Hussain Punkte 27332

Wenn ich meinen MediaController in einer Layout-Datei deklariere, kann ich im Code darauf zugreifen (mit der Option Activity.findViewById(int id) Methode) und das Anhängen an meine VideoView (unter Verwendung der VideoView.setMediaController(MediaController controller) Methode), finde ich, dass es sich manchmal unerwünscht verhält (erzwingt das Schließen der App). Stattdessen erstelle ich sie im Code, hänge sie an die VideoView an und gebe dann an, wo sie in der Aktivität angezeigt werden soll, indem ich die VideoView.setAnchorView(View view) Methode wie folgt:

myVideoView.setVideoURI(Uri.parse(myVideoUrl));
myVideoView.setOnPreparedListener(new OnPreparedListener()
{
  public void onPrepared(MediaPlayer mp)
  {
    MediaController mediaController = new MediaController(MyActivity.this);
    videoView.setMediaController(mediaController);

    // put the MediaController at the bottom of the Activity rather than directly beneath the VideoView
    // (note that my Activity's layout file has root node with id 'myactivity_layoutroot')
    if (findViewById(R.id.myactivity_layoutroot) != null)
      mediaController.setAnchorView(findViewById(R.id.myactivity_layoutroot));

    videoView.requestFocus();
  }
});
myVideoView.start();

0voto

Andre Punkte 1

Ich denke, es ist Ihre "mVideoView.setVideoURI" Abschnitt. Ich habe vor kurzem auf eine ähnliche Sache einschließlich dieser gearbeitet und es scheint, dass das Video über Server abgerufen werden muss. Sie müssen Ihre Videos auf einem Server speichern und ihn dann hier aufrufen. So ist es jedenfalls bei mir gewesen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X