1.增加悬浮窗权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
2.手机8.0需要先去申请悬浮窗的权限
btn_permission.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { Class clazz = Settings.class; Field field = clazz.getDeclaredField("ACTION_MANAGE_OVERLAY_PERMISSION"); Intent intent = new Intent(field.get(null).toString()); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setData(Uri.parse("package:" + getPackageName())); startActivity(intent); } catch (Exception e) { e.printStackTrace(); } } });
3.新建一个Searvice显示桌面悬浮窗
<service android:name=".FloatVideoWindowService" />
public class FloatVideoWindowService extends Service { private WindowManager mWindowManager; private WindowManager.LayoutParams wmParams; private LayoutInflater inflater; // 浮动布局 private View mFloatingLayout; //容器父布局 private LinearLayout smallSizePreviewLayout; /** * 显示时间 */ private TextView time; /** * 记录麦克风状态值 */ private boolean isShowVoice; private CallBack callback = null; private volatile static FloatVideoWindowService service; public void setCallback(CallBack callback) { this.callback = callback; } @Nullable @Override public IBinder onBind(Intent intent) { return new MyBinder(); } public class MyBinder extends Binder { public FloatVideoWindowService getService() { return FloatVideoWindowService.this; } //更新时间 public void setData(String data) { time.setText(data); } } @Override public void onCreate() { super.onCreate(); service = this; //设置悬浮窗基本参数(位置、宽高等) initWindow(); //悬浮框点击事件的处理 initFloating(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { super.onDestroy(); service = null; smallSizePreviewLayo