admin管理员组文章数量:1606187
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 &#
版权声明:本文标题:android多悬浮窗口播放器,Android实现悬浮播放器 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1728486456a1160211.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论