2016-07-31 5 views
0

Ich habe keine ähnliche Frage oder die Antwort darauf gefunden, also entschied ich mich, eine neue zu schreiben.VideoView spielt kein Video ab, wenn es mit WindowManager zum globalen Layout hinzugefügt wurde

Ich habe ein benutzerdefiniertes RelativeLayout erstellt, das die Rolle eines Wrappers des Inhaltslayouts spielt, das während der Initialisierung des so genannten Wrappers aufgebläht und dem Wrapper hinzugefügt wird.

Und bis auf die Videowiedergabe scheint alles in Ordnung zu sein, tatsächlich ist das Video überhaupt nicht geladen (der onPrepared wird nie aufgerufen). Ich habe auch versucht, auf irgendwelche Fehler zu achten, die vielleicht etwas damit zu tun hatten, aber auch nichts war da (OnError wird nie aufgerufen). Das Protokoll enthielt keine Informationen, die möglicherweise ebenfalls mit diesem Problem verbunden waren.

Es ist ein seltsames Problem, da das VideoView in Activities, Fragmenten usw. gut funktioniert, aber wenn es zum globalen (systemweiten) Layout (mit WindowManager) hinzugefügt wird, wird es wirklich seltsam.

Ist es sogar möglich, ein Video im VideoView innerhalb des globalen (systemweiten) Layouts abzuspielen?

Jede Hilfe wäre willkommen! Danke im Voraus!

-Code-Schnipsel:

CustomRelativeLayout

public class CustomRelativeLayout extends RelativeLayout { 


public static final String TAG = "Some Tag"; 


public CustomRelativeLayout(Context context) { 
    super(context); 
    init(); 
} 


//The rest of the constructors 
//go here... 


private void init() { 
    WindowManager windowManager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); 
    LayoutInflater inflater = LayoutInflater.from(getContext()); 

    View inflatedView = inflater.inflate(R.layout.my_layout, this, false); 

    VideoView videoView = (VideoView) inflatedView.findViewById(R.id.videoView); 
    videoView.setVideoURI(Uri.parse("http://www.html5videoplayer.net/videos/toystory.mp4")); 
    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mediaPlayer) { 
      Log.e(TAG, "The Video is ready to be played!"); 
      mediaPlayer.start(); 
     } 
    }); 

    //adding the inflated view 
    addView(inflatedView); 

    //adding to the windowManager 
    Point size = new Point(); 
    mWindowManager.getDefaultDisplay().getSize(size); 

    WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(
     size.x, 
     size.y 
    ); 
    layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL; 
    layoutParams.flags = (WindowManager.LayoutParams.FLAG_DIM_BEHIND | WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); 
    layoutParams.dimAmount = 0f; 
    layoutParams.format = PixelFormat.RGBA_8888; 

    mWindowManager.addView(this, layoutParams); 
} 

}

Layout-

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

     <VideoView 
      android:id="@+id/videoView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@android:color/black"/> 


</RelativeLayout> 

Berechtigungen

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 

Antwort

0
View inflatedView = inflater.inflate(R.layout.my_layout, this, false); 
    //you should add view i think 
addView(inflatedView); 

VideoView videoView = (VideoView) inflatedView.findViewById(R.id.videoView); 
videoView.setVideoURI(Uri.parse("http://www.html5videoplayer.net/videos/toystory.mp4")); 
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
    @Override 
    public void onPrepared(MediaPlayer mediaPlayer) { 
     Log.e(TAG, "The Video is ready to be played!"); 
     mediaPlayer.start(); 
    } 
}); 
+0

Aber die aufgeblähte Ansicht wird hinzugefügt –

Verwandte Themen