From 858764c471a61d466e5e786fc6d78120902e17de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E9=87=8D?= Date: Thu, 31 May 2018 09:12:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=86=E9=A2=91=E6=92=AD=E6=94=BE=E6=82=AC?= =?UTF-8?q?=E6=B5=AE=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 - .../FloatingVideoService.java | 51 ++++++++++++++++--- app/src/main/res/layout/video_display.xml | 8 +-- 3 files changed, 48 insertions(+), 13 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 4627d8e..0a5d645 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -25,6 +25,4 @@ dependencies { testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' - - implementation 'com.github.dongzhong:VideoPlayer:v1.2' } diff --git a/app/src/main/java/dongzhong/testforfloatingwindow/FloatingVideoService.java b/app/src/main/java/dongzhong/testforfloatingwindow/FloatingVideoService.java index 2f1f6d1..7918149 100644 --- a/app/src/main/java/dongzhong/testforfloatingwindow/FloatingVideoService.java +++ b/app/src/main/java/dongzhong/testforfloatingwindow/FloatingVideoService.java @@ -3,6 +3,9 @@ package dongzhong.testforfloatingwindow; import android.app.Service; import android.content.Intent; import android.graphics.PixelFormat; +import android.media.AudioManager; +import android.media.MediaPlayer; +import android.net.Uri; import android.os.Build; import android.os.IBinder; import android.provider.Settings; @@ -10,10 +13,13 @@ import android.support.annotation.Nullable; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; +import android.view.SurfaceHolder; +import android.view.SurfaceView; import android.view.View; import android.view.WindowManager; +import android.widget.Toast; -import dongzhong.videoplayer.VideoPlayer; +import java.io.IOException; /** * Created by admin on 2018/5/30. @@ -25,6 +31,7 @@ public class FloatingVideoService extends Service { private WindowManager windowManager; private WindowManager.LayoutParams layoutParams; + private MediaPlayer mediaPlayer; private View displayView; @Override @@ -45,6 +52,8 @@ public class FloatingVideoService extends Service { layoutParams.height = 450; layoutParams.x = 300; layoutParams.y = 300; + + mediaPlayer = new MediaPlayer(); } @Nullable @@ -63,12 +72,40 @@ public class FloatingVideoService extends Service { if (Settings.canDrawOverlays(this)) { LayoutInflater layoutInflater = LayoutInflater.from(this); displayView = layoutInflater.inflate(R.layout.video_display, null); - VideoPlayer videoPlayer = displayView.findViewById(R.id.videoplayer_display); - videoPlayer.preset("https://raw.githubusercontent.com/dongzhong/ImageAndVideoStore/master/Bruno%20Mars%20-%20Treasure.mp4", - "Treasure - Bruno Mars", true); - windowManager.addView(displayView, layoutParams); - displayView.setOnTouchListener(new FloatingOnTouchListener()); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + SurfaceView surfaceView = displayView.findViewById(R.id.video_display_surfaceview); + final SurfaceHolder surfaceHolder = surfaceView.getHolder(); + surfaceHolder.addCallback(new SurfaceHolder.Callback() { + @Override + public void surfaceCreated(SurfaceHolder holder) { + mediaPlayer.setDisplay(surfaceHolder); + } + + @Override + public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { + + } + + @Override + public void surfaceDestroyed(SurfaceHolder holder) { + + } + }); + mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + @Override + public void onPrepared(MediaPlayer mp) { + mediaPlayer.start(); + } + }); + try { + mediaPlayer.setDataSource(this, Uri.parse("https://raw.githubusercontent.com/dongzhong/ImageAndVideoStore/master/Bruno%20Mars%20-%20Treasure.mp4")); + mediaPlayer.prepareAsync(); + } + catch (IOException e) { + Toast.makeText(this, "无法打开视频源", Toast.LENGTH_LONG).show(); + } + windowManager.addView(displayView, layoutParams); } } @@ -97,7 +134,7 @@ public class FloatingVideoService extends Service { default: break; } - return false; + return true; } } } diff --git a/app/src/main/res/layout/video_display.xml b/app/src/main/res/layout/video_display.xml index e4fc57c..28162a5 100644 --- a/app/src/main/res/layout/video_display.xml +++ b/app/src/main/res/layout/video_display.xml @@ -1,12 +1,12 @@ - - - \ No newline at end of file + \ No newline at end of file -- GitLab