Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >andriod使用超级播放器悬浮窗播不能正常使用

andriod使用超级播放器悬浮窗播不能正常使用

原创
作者头像
腾讯云-qichengdeng
修改于 2019-10-08 06:46:27
修改于 2019-10-08 06:46:27
2.3K0
举报
文章被收录于专栏:总结手写习惯总结手写习惯

我使用播放器的时候,有时候需要使用其它的应用,这时候又想播放器继续播放视频,又不想应用被杀掉,这个时候会悬浮窗功能。

使用过程中会遇到不能播播放的问题,建议按照以下的方式排查

1.手机本地悬浮窗权限开启

检查手机设置里悬浮窗权限有没有开启,各个手机开启悬浮窗口权限都不同,可以自己网上查下

2.检查代码的中的悬浮窗权限

2.1如果是在Android4.x的情况,只用在AndroidManifest.xml中添加权限:

<!-- 显示系统窗口权限 -->

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

<!-- 在 屏幕最顶部显示addview-->

<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />

2.2andriod6.0需要申请悬浮窗权限 api>23 demo中对应悬浮窗的权限说明

不同的手机对应不同的api 会出现不同的悬浮窗问题,这是由于andriod系统导致的,看下你手机对应下图中的api等级

2.3 andriod8.0以上手机报错

  android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootlmpl$W@40ec8528 -- permission denied for this window

Android O 系统,针对 Android 8.0 或更高平台版本进行编译,或将 targetSdkVersion 设为 Android 8.0 或更高版本的应用开发是,只要区别设置即可

if (Build.VERSION.SDK_INT>=26) {//8.0新特性

    mWindowParams.type= WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;

}else{

    mWindowParams.type= WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;

}

3.是否启用了悬浮窗格式

你使用的超级播放器中的SuperPlayerGlobalConfig中是否启用了悬浮窗格式

4.关闭悬浮窗

使用demo在你的机型能否支持,如果demo也不能在你的手机使用悬浮窗播放,由于andriod系统不支持悬浮功能

,这时候想关闭悬浮窗能力怎么办?办法如下

SuperPlayerView类 第792行的方法最前面增加

public void onRequestPlayMode(int requestPlayMode) {

// 屏蔽悬浮窗模式代码

if (requestPlayMode == SuperPlayerConst.PLAYMODE_FLOAT) {

Context viewContext = SuperPlayerView.this.getContext();

if (viewContext instanceof Activity) {

((Activity) viewContext).finish();

return;

}

}

//......

}

SuperPlayerActivity 这个类第726行 showFloatWindow 改为如下实现

private void showFloatWindow() {

finish(); // 结束当前activity

}

5.原理引入

悬浮窗本质手机原生的WindowManager来实现的,悬浮窗需要在别的应用之上显示窗口控件,需要某些权限才可以,API Level>=23 需要在AndriodManefest.xml文件中声明权限SYSTEM_ALERT_WINDOW才能在其他应用上绘制控件。除了在其他应用上设置悬浮窗还需要对本应用进行设置悬浮窗权限,该权限在应用中手动设置如图中的new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION)

注意的是andriod8.0之前,悬浮窗口设置可以为TYPE_PHONE,这种类型是用于用户交互操作的非应用窗口,

andriod8.0对系统和api行为做了修改,要实现在其他应用和窗口上方显示提醒窗口,必须为TYPE_APPLICATION_OVERLAY

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
悬浮窗开发设计实践
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
杨充
2022/11/18
2.8K0
简易的可拖动的桌面悬浮窗效果Demo
首先,我们需要知道,悬浮窗分为两种:Activity级别的悬浮窗,系统级别的悬浮窗 Activity级别的悬浮窗跟随所属Activity的生命周期而变化,而系统级别的悬浮窗则可以脱离Activity而存在。 由此可知,要实现360手机卫士那样的悬浮窗效果,就需要使用系统级别的悬浮窗 下面学习实现桌面悬浮窗效果的代码步骤: Demo描述,悬浮窗为一个ImageView ,可以在桌面 ,任意应用,锁屏上方任意移动 1、配置清单文件AndroidManifest.xml 中 添加系统悬浮窗的权限 <use
听着music睡
2018/05/18
3.3K0
Android经典实战之WindowManager和创建系统悬浮窗
WindowManager 是 Android 中管理窗口的系统服务。它负责管理应用程序窗口的布局以及与其他窗口交互。每个应用程序的窗口都由 WindowManager 管理,系统弹出窗口(如系统通知和对话框)也由 WindowManager 管理。
AntDream
2024/09/06
6710
Android经典实战之WindowManager和创建系统悬浮窗
Android 8.0完美适配全局dialog 悬浮窗弹出
最近项目targetSdkVersion升级到了26,出现很多问题趟了很多坑,其中就包括本篇的需要解决的问题:全局dialog 不显示。
蜻蜓队长
2018/09/29
5.6K0
Android 8.0完美适配全局dialog 悬浮窗弹出
Android 悬浮窗功能的实现
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
黄林晴
2019/08/31
6.6K1
Android 无需权限显示悬浮窗, 兼谈逆向分析 App
前言 最近 UC 浏览器中文版出了一个快速搜索的功能, 在使用其他 app 的时候, 如果复制了一些内容, 屏幕顶部会弹一个窗口, 提示一些操作, 点击后跳转到 UC, 显示这个悬浮窗不需要申请and
非著名程序员
2018/02/02
3.3K0
Android 无需权限显示悬浮窗, 兼谈逆向分析 App
Android开发笔记(一百一十八)自定义悬浮窗
在前面《Android开发笔记(六十六)自定义对话框》中,我们提到每个页面都是一个Window窗口,许多的Window对象需要一个管家来打理,这个管家我们称之为WindowManager窗口管理。在手机屏幕上新增或删除页面窗口,都可以归结为WindowManager的操作,下面是该管理类的常用方法说明: getDefaultDisplay : 获取默认的显示屏信息。通常用该方法获取屏幕分辨率,详情参见《Android开发笔记(三)屏幕分辨率》。 addView : 往窗口添加视图。第二个参数为WindowManager.LayoutParams对象。 updateViewLayout : 更新指定视图的布局参数。第二个参数为WindowManager.LayoutParams对象。 removeView : 往窗口移除指定视图。 下面是窗口布局参数WindowManager.LayoutParams的常用属性说明: format : 窗口的像素点格式。取值见PixelFormat类中的常量定义,一般取值PixelFormat.RGBA_8888。 type : 窗口的显示类型,常用的类型说明如下: --TYPE_SYSTEM_ALERT : 系统警告提示。 --TYPE_SYSTEM_ERROR : 系统错误提示。 --TYPE_SYSTEM_OVERLAY : 页面顶层提示。 --TYPE_SYSTEM_DIALOG : 系统对话框。 --TYPE_STATUS_BAR : 状态栏 --TYPE_TOAST : 短暂通知Toast flags : 窗口的行为准则,常用的标志位如下说明(对于悬浮窗来说,一般只需设置FLAG_NOT_FOCUSABLE): --FLAG_NOT_FOCUSABLE : 不能抢占焦点,即不接受任何按键或按钮事件。 --FLAG_NOT_TOUCHABLE : 不接受触摸屏事件。悬浮窗一般不设置该标志,因为一旦设置该标志,将无法拖动悬浮窗。 --FLAG_NOT_TOUCH_MODAL : 当窗口允许获得焦点时(即没有设置FLAG_NOT_FOCUSALBE标志),仍然将窗口之外的按键事件发送给后面的窗口处理。否则它将独占所有的按键事件,而不管它们是不是发生在窗口范围之内。 -- :  --FLAG_LAYOUT_IN_SCREEN : 允许窗口占满整个屏幕。 --FLAG_LAYOUT_NO_LIMITS : 允许窗口扩展到屏幕之外。 --FLAG_WATCH_OUTSIDE_TOUCH : 如果设置了FLAG_NOT_TOUCH_MODAL标志,则当按键动作发生在窗口之外时,将接收到一个MotionEvent.ACTION_OUTSIDE事件。 alpha : 窗口的透明度,取值为0-1。 gravity : 取值同View的setGravity方法。 x : 窗口左上角的X坐标。 y : 窗口左上角的Y坐标。 width : 窗口的宽度。 height : 窗口的高度。
aqi00
2019/01/18
2.4K1
腾讯云点播 SDK 集成接入之踩坑&填坑记
音视频播放对于现在的互联网应用来说,已经是不可或缺的功能之一。作为一个 App 开发者,开发一个音视频播放功能,说难不难,说简单也不简单,我们常常会面临几个抉择:
开发的猫
2021/12/01
4K0
腾讯云点播 SDK 集成接入之踩坑&填坑记
Android仿微信文章悬浮窗效果
前些日子跟朋友聊天,朋友Z果粉,前些天更新了微信,说微信出了个好方便的功能啊,我问是啥功能啊,看看我大Android有没有,他说现在阅读公众号文章如果有人给你发微信你可以把这篇文章当作悬浮窗悬浮起来,方便你聊完天不用找继续阅读,听完是不是觉得这叫啥啊,我大Android微信版不是早就有这个功能了吗,我看文章的时候看到过有这个悬浮按钮,但是我一直没有使用过,试了一下还是挺方便的,就想着自己实现一下这个功能,下面看图,大家都习惯了无图言X
用户2802329
2018/10/18
1.7K0
Android仿微信文章悬浮窗效果
Android各版本查询和开启悬浮窗权限
如果你是从事Android开发的程序员,那么你肯定对于权限这个词不会陌生,Android的权限分为一般权限和危险权限,一般权限(只需在AndroidManifest.xml文件中声明即可),危险权限(需要手动申请),接下来进入正题。
晨曦_LLW
2020/09/25
10.3K3
Android实现可移动的悬浮窗
我们在很多android应用中可能会看到悬浮窗按钮,最多的应该就是360了,通过代码我们也可以实现这个功能
Vaccae
2019/07/24
4.8K1
Android 可拖动悬浮窗实现
博客:https://www.jianshu.com/p/1d22edea2647
陈宇明
2020/12/16
2.3K0
相关推荐
悬浮窗开发设计实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档