我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android怎么实现设备的异显功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android怎么实现设备的异显功能

这篇文章主要讲解了“Android怎么实现设备的异显功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么实现设备的异显功能”吧!

    一、什么是异显

    无线投屏或者有线投屏的时候,安卓设备的画面会原封不动的投影在显示器上,这就是投屏。   

    而异显,则是安卓设备和显示器的画面分开显示,比如安卓设备上在聊天,显示器上还可以在播放电影,是不是和多窗口的感觉有点像。

    当然,安卓设备需要支持VGA/HDMI显示。 哪些设备支持呢,我在某商家店面上发现只有部分设备是支持的。

    另外有部分安卓设备同时支持投屏和办公两种模式,有部分安卓设置则只支持投屏。    

    二、实现步骤

    2.1 权限

    • 静态权限

    在实现投屏功能之前,应该去允许操作投屏的权限,它的权限实际上是显示系统窗口的权限,在配置文件中

    <!-- 显示系统窗口权限 --><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/><!-- 在 屏幕最顶部显示--><uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
    • 动态权限

    if (Build.VERSION.SDK_INT >= 23) {            if (!Settings.canDrawOverlays(MainActivity.this)) {                Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,                        Uri.parse("package:" + getPackageName()));                startActivityForResult(intent, 10);            }        }         @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (requestCode == 10) {            if (Build.VERSION.SDK_INT >= 23) {                if (!Settings.canDrawOverlays(this)) {                    // SYSTEM_ALERT_WINDOW permission not granted...                    Toast.makeText(MainActivity.this, "not granted", Toast.LENGTH_SHORT);                }            }        }        super.onActivityResult(requestCode, resultCode, data);    }

    为什么需要这些权限,因为副屏的主要类Presentation是继承与Dialog的

    2.2 定义分屏的界面

    public class DifferentDisplay extends Presentation {    public DifferentDisplay(Context outerContext, Display display) {        super(outerContext, display);    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.diffrentdisplay);    }    public void setText(String text) {        TextView textView = findViewById(R.id.tv_test);        textView.setText(text);    }}

    界面布局

    <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/purple_200"    tools:context=".MainActivity">    <TextView        android:id="@+id/tv_test"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:text="异显"        android:textSize="50sp" /></RelativeLayout>

    2.3 操作分屏界面

    先放代码再来说明

    public class MainActivity extends AppCompatActivity {    final String TAG = "MainActivity";    DifferentDisplay mPresentation;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 双屏显示        DisplayManager mDisplayManager; //屏幕管理类        Display[] displays;// 屏幕数组        mDisplayManager = (DisplayManager) MainActivity.this.getSystemService(Context.DISPLAY_SERVICE);        displays = mDisplayManager.getDisplays(); // 得到显示器数组        if (displays.length == 0) {            Log.d(TAG, "无显示屏");            return;        }        mPresentation = new DifferentDisplay(getApplicationContext(), displays[1]);//displays[1]是副屏       // 8.0 需要替换为 TYPE_APPLICATION_OVERLAY mPresentation.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);        mPresentation.show();    }    int index = 1;    public void Test(View view) {        if (mPresentation != null)            mPresentation.setText(++index + "点击");    }}

    Display[] displays是获取的屏幕的个数,包括安卓设备自身的屏幕。 比如new DifferentDisplay(getApplicationContext(), displays[1]) 操作的就是第一块副屏。

    另外有个权限问题

    mPresentation.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

    上诉代码在6.0及以上是可以的(未验证),但在8.0以上需要这样使用
    8.0以上需要将:WindowManager.LayoutParams.TYPE_SYSTEM_ALERT 替换为:WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY

    感谢各位的阅读,以上就是“Android怎么实现设备的异显功能”的内容了,经过本文的学习后,相信大家对Android怎么实现设备的异显功能这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Android怎么实现设备的异显功能

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Android怎么实现设备的异显功能

    这篇文章主要讲解了“Android怎么实现设备的异显功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么实现设备的异显功能”吧!一、什么是异显无线投屏或者有线投屏的时候,安卓
    2023-06-29

    Android备忘录功能怎么实现

    要实现Android的备忘录功能,可以按照以下步骤进行:1. 创建一个新的Android项目。2. 在布局文件中,设计一个界面用于显示备忘录列表和添加备忘录的按钮。3. 创建一个Java类,用于表示备忘录的数据结构,包括备忘录的标题、内容、
    2023-08-29

    Android怎么实现显示和隐藏密码功能

    这篇文章主要介绍“Android怎么实现显示和隐藏密码功能”,在日常操作中,相信很多人在Android怎么实现显示和隐藏密码功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android怎么实现显示和隐藏密
    2023-07-02

    android怎么实现搜索功能

    要实现Android应用的搜索功能,你可以按照以下步骤进行操作:创建一个搜索框:在你的布局文件中添加一个EditText或SearchView组件,用于用户输入搜索关键词。监听搜索框的文本变化:使用addTextChangedListene
    2023-10-26

    Android怎么实现聊天功能

    要实现聊天功能,可以使用 Android 提供的 Socket 和网络通信技术。以下是一个简单的实现聊天功能的步骤:1. 创建一个服务器端和一个客户端:- 服务器端:使用 ServerSocket 创建一个服务器端的 Socket,并监听指
    2023-10-09

    Android怎么实现点击功能

    Android中实现点击功能的方法有多种。以下是几种常用的实现方式:1. 使用Button控件:在布局文件中添加Button控件,然后在相应的Java文件中设置点击事件监听器。```javaButton button = findViewB
    2023-08-18

    android聊天功能怎么实现

    要实现Android聊天功能,你可以按照以下步骤进行:1. 创建一个用于显示聊天信息的界面。可以使用RecyclerView或ListView来展示聊天消息的列表。2. 创建一个用于输入消息的界面。可以使用EditText和Button来实
    2023-08-18

    android辅助功能怎么实现

    Android系统提供了一些辅助功能的API,可以帮助开发者实现辅助功能的功能。使用辅助功能服务:开发者可以创建一个辅助功能服务类,继承AccessibilityService,并在AndroidManifest.xml文件中声明该服务。在
    2023-10-23

    android筛选功能怎么实现

    要实现Android筛选功能,可以按照以下步骤进行:创建一个包含所有筛选选项的界面,可以是一个弹出窗口、抽屉式菜单或者单独的筛选页面。在该界面中,包含所有筛选条件的控件,比如复选框、单选框、下拉框等。在主界面中添加一个筛选按钮或者菜单项,当
    android筛选功能怎么实现
    2024-03-01

    javascript怎么实现密码显示功能

    随着网络的普及和科技的发展,我们的生活变得越来越数字化和智能化。在我们的日常生活中,密码成为了绝大多数人的必备选项。但是,输入密码时,我们往往需要保证输入准确性,这就需要我们清晰地看到密码。那么,如何实现密码的显示呢?本文将介绍一种使用JavaScript实现密码显示的方法。JavaScript是一种广泛使用的编程语言,可以用于在网页中添加交互性和动态性。在密码输入框中,我们可
    2023-05-14

    Android 中怎么利用EditText实现密码的隐藏和显示功能

    这篇文章给大家介绍Android 中怎么利用EditText实现密码的隐藏和显示功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Android EditText密码的隐藏和显示功能实现效果图:实现代码:首先在xml里
    2023-05-30

    android怎么实现换壁纸功能

    要在Android上实现换壁纸功能,可以按照以下步骤进行:1. 在应用的AndroidManifest.xml文件中添加`SET_WALLPAPER`权限。```xml```2. 创建一个按钮或者其他触发换壁纸的控件。```xmlandro
    2023-08-18

    vue怎么实现实时搜索显示功能

    这篇“vue怎么实现实时搜索显示功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue怎么实现实时搜索显示功能”文章吧。效
    2023-06-30

    Android中怎么实现拍照功能

    这期内容当中小编将会给大家带来有关Android中怎么实现拍照功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。解析:1)判断是否有摄像头checkCameraHardware(this) 2)获得相机c
    2023-05-30

    Android怎么实现手写板功能

    今天小编给大家分享一下Android怎么实现手写板功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。具体代码如下:packa
    2023-07-02

    Android怎么实现APP秒表功能

    要实现一个APP秒表功能,可以按照以下步骤进行操作:1. 创建一个新的Android项目。在Android Studio中,选择“File” -> “New” -> “New Project”来创建一个新的项目。2. 在布局文件中添加所需的
    2023-08-17

    android计时器功能怎么实现

    要实现Android计时器功能,可以使用Android中的CountDownTimer类。首先,在Activity或Fragment中创建一个CountDownTimer对象,并重写其中的onTick和onFinish方法。```javaC
    2023-08-29

    Android中怎么实现截图功能

    Android中怎么实现截图功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android 截图功能源码的分析一般没有修改rom的android原生系统截图功能的组合键是音量
    2023-05-30

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录