2016-07-27 17 views
7

Ich möchte FloatingView implementieren. Welche machen Aktivität Größe und ziehbare (wie folgendes Bild). Ich sehe auch diese thread und basierend darauf ich meine eigene service erstellen. (Siehe auch this & this Bibliotheken)Implementieren Sie Floating View für Video-Streaming

Das Problem ist, je nach Implementierung kann ich nicht weiter Video und manchmal auch Bildschirm geht schwarz und nichts angezeigt. Ich möchte wissen, was ist der richtige Weg, damit umzugehen? Ohne Video unterbrochen und weiterspielen. (Ich weiß, Unterbrechung wegen setOnPrepareListener aber wie das vermeiden?)

Hier ist mein Code:

public class FloatingStream extends Service implements FloatingViewListener { 


    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     if (mFloatingViewManager != null) { 
      return START_STICKY; 
     } 


     final DisplayMetrics metrics = new DisplayMetrics(); 
     final WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 
     windowManager.getDefaultDisplay().getMetrics(metrics); 
     floatingServiceBinder = new FloatingServiceBinder(this); 
     final View rootView = LayoutInflater.from(this).inflate(R.layout.view_exoplayer, null, false); 
     final VideoView videoView = (VideoView) rootView.findViewById(R.id.video_view); 
     videoView.setVideoURI(Uri.parse(MY_URL)); 
     videoView.setOnPreparedListener(new OnPreparedListener() { 
      @Override 
      public void onPrepared() { 
       videoView.start(); 
      } 
     }); 

     mFloatingViewManager = new FloatingViewManager(this, this); 
     mFloatingViewManager.setFixedTrashIconImage(R.drawable.ic_play_circle_filled); 
     mFloatingViewManager.setActionTrashIconImage(R.drawable.ic_menu); 
     final FloatingViewManager.Options options = new FloatingViewManager.Options(); 
     mFloatingViewManager.addViewToWindow(rootView, options); 


     return START_REDELIVER_INTENT; 
    } 

} 

enter image description here

Edit: es ist nicht draggable panel weil in dieser App, wenn der Benutzer zu einem anderen gehen Aktivitätsvideo nicht unterbrochen und spielt immer noch.

+0

Hallo, Entschuldigung für diese Dummy-Frage, aber wenn Sie sagen, dass Sie "Video nicht fortsetzen können", was es genau bedeutet? Kannst du das Video nicht "flüssig" anschauen? – jos

+0

@jos Wie Sie in Gif Bild sehen nicht gestoppt (oder unterbrochen). Wenn die Größe der Aktivität geändert werden soll, muss ** setOnPreparedListener ** nicht aufgerufen werden. – Amir

Antwort

1

Was Sie erreichen möchten, ist Picture in Picture, ähnlich wie bei der YouTube App.

Android unterstützt dies offiziell für TV, seit Android N. Für mobile Geräte können Sie jedoch die Draggable Panel library verwenden.

+0

Danke Aber Draggable Panel funktioniert nicht, weil es an seine Aktivität gebunden ist und wenn Sie zu einer anderen Aktivität ziehen ziehbare zerstört. – Amir

+0

Deshalb verwenden wir Fragmente, mein Freund :) – Suleiman19

+0

Hier ist ein Link der Anwendung Sie denken, es ist Fragment? https://play.google.com/store/apps/details?id=tv.perception.android.aio – Amir