android多悬浮窗口播放器,Android实现悬浮播放器

本文介绍了如何在Android应用中实现多悬浮窗口播放器。通过保存当前视频播放状态,利用BroadcastReceiver和Service创建悬浮窗口,并在悬浮窗口中使用VideoView播放视频。当切换回原生播放器时,能恢复之前的播放位置。
摘要由CSDN通过智能技术生成

1. 实现的大概流程:

首先一个本地的视频正在播放时(MovieActivity类),程序里用变量保存当前播放视频的URI和MIME类型,当点击某个按钮时,会先把当前视频的播放位置保存到数据库里,然后开始进入悬浮框初始化(显示位置、大小、属性等),悬浮框里包含了VideoView类,这个类就是用于播放视频,将之前保存的数据(URI等)对其赋值,然后关闭当前播放视频的窗口,这样浮动视频框就出来了!同样当悬浮视频切换到本地原生视频播放器时,也会保留当前播放视频的播放位置,在重新进入MovieActivity类时,将这保留的最新数据进行对其赋值,这样就可以继续播放了!

2. MainActivity.java

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

sendBroadcast(new Intent(Mp3BroadCastReceiver.ACTION_MOVIE_START));

finish();

}

3. Mp3BroadCastReceiver.java

public class Mp3BroadCastReceiver extends BroadcastReceiver {

public static final String ACTION_MOVIE_START = "com.example.lcn_louis.START";

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if (action.equals(ACTION_MOVIE_START)) {

Intent mIntent = new Intent("createUI");

mIntent.setClass(context, MediaPlaybackService.class);

context.startService(mIntent);

}

}

}

4. MediaPlaybackService.java

public class MediaPlaybackService extends Service {

@Override

public void onCreate() {

super.onCreate();

}

public ViewGroup fView;

MyFloatView sFloatView;

private void createView(Context context) {

if (fView != null) {

return;

}

fView = (ViewGroup) View.inflate(context, R.layout.activity_main, null);

// 显示myFloatView图像

sFloatView = new MyFloatView(fView);

sFloatView.bindViewListener();

sFloatView.showLayoutView();

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

if (intent != null) {

String action = intent.getAction();

String cmd = intent.getStringExtra("command");

if ("createUI".equals(action)) {

createView(this);

} else if ("removeUI".equals(action)) {

fView = null;

sFloatView = null;

}

}

return START_STICKY;

}

@Override

public IBinder onBind(Intent intent) {

// TODO Auto-generated method stub

return null;

}

}

5. MyFloatView.java

public class MyFloatView implements OnCompletionListener, OnErrorListener,

OnInfoListener, OnPreparedListener, OnSeekCompleteListener,

OnVideoSizeChangedListener, SurfaceHolder.Callback,

android.view.View.OnClickListener

{

private float mTouchStartX;

private float mTouchStartY;

private float x;

private float y;

ViewGroup mlayoutView;

Context context;

Display currentDisplay;

SurfaceView surfaceView;

SurfaceHolder surfaceHolder;

Button mButton;

MediaPlayer mediaPlayer;// 使用的是MediaPlayer来播放视频

int videoWidth &#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值