Android 11适配攻略

安卓获取设备及系统信息小结 安卓开发过程中,免不了要获取一些系统信息,常用的大致就是从 Build、PackageInfo、ApplicationInfo、TelephonyManager 中拿,这里将这些知识做一个小结,具体使用后面再开个辅助类博客介绍吧! 下面看具体内容: Build Build 类可以用来获取Android系统的相关信息。 字段 含义 示例 用法 Build.BRAND 产品品牌 Meizu 通过这个字段可以获取到对用户有意义的手机厂商名称,例如Xiaomi,Meizu,Huawei等。 Bu 阅读详情

首语

分享一个Github小技巧。不用下载任何软件,也不需要装任何的浏览器插件,你只用在Github的网址中,gitHub后面添加1s,回车就可以在Vscode界面访问项目代码了。来个例子。
原始地址:https://github.com/hujuny/CommunityLibrary
Vscode界面地址:https://github1s.com/hujuny/CommunityLibrary

接下来进入今天的主题👉 Android 11。
Android 12预览版从2021年2月开始启动,目前已经发布了Beta Release版本,Final Relase版本预计在今年年底发布。是时候适配一波Android11了,为后面项目适配铺平道路。

介绍

2020年6月11日,Google正式推送了Android 11 Beta版本,同年年9月9日正式发布。系统主要增强了聊天气泡,安全性和隐私性的保护,电源菜单,可以更好的支持瀑布屏,折叠屏,双屏和 Vulkan 扩展程序等。
首先我们项目中的 targetSdkVersion 改为30。开始适配Android 11。

隐私变更

强制执行分区存储机制

为了避免存储空间的读写权限被滥用,手机中存在着大量不明文件,且应用卸载后也没有删除掉。Android 10 中提出了分区存储(Scoped Storage)这一概念。通过添加外部存储访问机制来更好的管理文件。
外部存储使用getExternalStorageDirectory()方法来获取路径存储文件。外部存储访问机制将外部存储空间划分为三部分:

  • 特定于应用的目录。使用getExternalFilesDir()、getExternalCacheDir()或getExternalMediaDirs()方法访问。无需权限,且卸载应用时会自动删除(在AndroidManifest.xml文件中声明android:hasFragileUserData="true",用户可以选择是否保留)。
  • 媒体集合。照片、视频、音频这类媒体文件。使用MediaStore 访问,无法直接使用File。访问其他应用的媒体文件时需要READ_EXTERNAL_STORAGE权限。
  • 其它目录。使用存储访问框架SAF(Storage Access Framwork)。
    简单粗暴的适配办法就是在AndroidManifest.xml文件中添加如下代码来使用旧的存储模式。
 android:requestLegacyExternalStorage="true"

但是这个适配方法在Android 11中已经失效,必须按照存储机制来乖乖适配,不一样的是Android 11允许使用File来访问媒体集合,但是,使用原始文件路径直接访问还是会重定向到MediaStore API,而且会造成性能影响,因为推荐直接使用MediaStore API。
在 Android 11 上,应用无法再访问外部存储中任何其他应用的专用应用特定目录中的文件。
其它细节详见以下文档:
Google介绍Scoped Storage的中字视频:https://www.bilibili.com/video/av77198618
Android 11 中的存储更新:https://developer.android.google.cn/about/versions/11/privacy/storage#manage-device-storage

单次授权

从 Android 11 开始,每当应用请求与位置信息、麦克风或摄像头相关的权限时,面向用户的权限对话框会包含仅限这一次选项。如果用户在对话框中选择此选项,系统会向应用授予临时的单次授权。
单次授权

重置权限

如果用户在 Android 11 或更高版本上几个月未与应用互动,系统会自动重置应用的敏感权限。

位置权限

Android 10请求ACCESS_FINE_LOCATION或 ACCESS_COARSE_LOCATION权限表示在前台时拥有访问设备位置信息的权限。在请求弹框还能看到始终允许,Android 11中,取消了始终允许选项,默认不会授予后台访问设备位置信息的权限。
Android 11将后台获取设备位置信息抽离了出来,通过ACCESS_BACKGROUND_LOCATION权限后台访问设备位置信息的权限,需要注意的一点是,请求ACCESS_BACKGROUND_LOCATION的同时不能请求其它权限,否则系统会抛出异常(在没研究Android 11适配的时候,我就已经发现了这个bug,当时以为是系统的bug,还截了两张图,后面仔细查看,找资料才发现是Android 11的变更)。
后台位置权限
怎么处理上述问题呢,官方给出的建议是先请求前台位置信息访问权限,再请求后台位置信息访问权限;单独请求后台位置信息访问权限。

软件包可见性

为了最大限度的减少应用获取其它应用的信息、数据,避免数据泄露、病毒软件等不安全隐患,Google将已安装的应用列表视为个人和敏感用户数据,因此Android 11提出了一个新的特性👉软件包可见性。
软件包可见性会影响提供其他应用相关信息的方法的返回结果,如queryIntentActivities()、getPackageInfo()和 getInstalledApplications()。
需要注意的一点是startActivity 方法不受系统软件包可见性行为的影响,queryIntentActivities()查询为false,一样也可以跳转。
如何适配呢?在之前接入微信支付的时候,文档就有提示Android 11 第三方应用无法拉起应用适配,适配方案为在主工程的AndroidManifest.xml 中增加 <queries> 标签。对于其它应用一样,添加包名即可。

<manifest package="com.example.app"> 
  	...
  	// 在应用的AndroidManifest.xml添加如下<queries>标签
    <queries>
        <package android:name="com.tencent.mm" />   // 指定微信包名
        <package android:name="com.eg.android.AlipayGphone" />
    </queries>
  	...
</manifest>

除了直接添加包名的方式外,也可以按intent和provider来添加。

<manifest package="com.yhj.hualin">
    <queries>
        <intent>
            <action android:name="android.intent.action.SEND" />
            <data android:mimeType="image/jpeg" />
        </intent>

        <provider android:authorities="com.yhj.settings.files" />
    </queries>
    ...
</manifest>

在极少数情况下,如果遇到 <queries> 元素无法提供适当的软件包可见性,您还可以使用 QUERY_ALL_PACKAGES 权限。
使用queries元素需要Android Gradle 插件版本是 4.1及以上,因为旧版本的插件并不兼容此元素,出现"Element queries is not allowed here" 的警告,也可能会导致manifest合并失败。

前台服务

Android 10中,在前台服务访问位置信息,需要在对应的service中添加 location 服务类型。
Android 11中,在前台服务访问摄像头或麦克风,需要在对应的service中添加camera或microphone 服务类型。

<manifest>
    ...
    <service ...
        android:foregroundServiceType="location|camera|microphone" />
</manifest>

当应用程序在后台运行启动前台服务时,前台服务有如下限制:

  • 除非用户已授予ACCESS_BACKGROUND_LOCATION权限,否则 前台服务无法访问位置。
  • 前台服务无法访问麦克风或摄像头。

除非在以下情况可以访问。

  • 该服务由系统组件启动。
  • 该服务通过与应用小部件交互启动。
  • 该服务通过与通知交互来启动。
  • 该服务作为PendingIntent。
  • 从不同的可见应用程序发送的启动 。
  • 该服务由在设备所有者模式下运行的设备策略控制器(DPC)应用程序启动。
  • 该服务由提供VoiceInteractionService。
  • 该服务由具有START_ACTIVITIES_FROM_BACKGROUND特权权限的应用程序启动 。
SYSTEM_ALERT_WINDOW权限

在 Android 11 中,向应用授予 SYSTEM_ALERT_WINDOW 权限的方式发生了一些变更。这些变更可以让权限的授予更有目的性,从而达到保护用户的目的。
根据请求自动向某些应用授予 SYSTEM_ALERT_WINDOW 权限。
系统会根据请求自动向某些类型的应用授予 SYSTEM_ALERT_WINDOW 权限:

  • 系统会自动向具有 ROLE_CALL_SCREENING 且请求 SYSTEM_ALERT_WINDOW 的所有应用授予该权限。如果应用失去 ROLE_CALL_SCREENING,就会失去该权限。
  • 系统会自动向通过 MediaProjection 截取屏幕且请求 SYSTEM_ALERT_WINDOW 的所有应用授予该权限,除非用户已明确拒绝向应用授予该权限。当应用停止截取屏幕时,就会失去该权限。此用例主要用于游戏直播应用。
    这些应用无需发送 ACTION_MANAGE_OVERLAY_PERMISSION 以获取 SYSTEM_ALERT_WINDOW 权限,它们只需直接请求 SYSTEM_ALERT_WINDOW 即可。
    MANAGE_OVERLAY_PERMISSION intent 始终会将用户转至系统权限屏幕。
    从 Android 11 开始,ACTION_MANAGE_OVERLAY_PERMISSION intent 始终会将用户转至顶级设置屏幕,用户可在其中授予或撤消应用的 SYSTEM_ALERT_WINDOW 权限。intent 中的任何 package: 数据都会被忽略。
    在更低版本的 Android 中,ACTION_MANAGE_OVERLAY_PERMISSION intent 可以指定一个软件包,它会将用户转至应用专用屏幕以管理权限。从 Android 11 开始将不再支持此功能,而是必须由用户先选择要授予或撤消哪些应用的权限。此变更可以让权限的授予更有目的性,从而达到保护用户的目的。
REQUEST_INSTALL_PACKAGES权限

在Android 11中当用户开启“安装未知来源应用”的权限,app就会被杀死。该行为与强制分区存储有关,因为持有 REQUEST_INSTALL_PACKAGES 权限的应用可以访问其他应用的Android/obb 目录。
好在用户授予权限之后,虽然app会被杀死,但是安装页面依然会弹出。

电话号码

应用在读取电话号码时,使用 READ_PHONE_STATE 权限。在Android 11中,通过以下电话号码API,必须请求 READ_PHONE_NUMBERS 权限,不再是 READ_PHONE_STATE 权限。

  • TelephonyManager 类和 TelecomManager 类中的 getLine1Number() 方法。
  • TelephonyManager 类中不受支持的 getMsisdn() 方法。
<manifest>
    <!-- 仅在运行 Android 10(API 级别 29)及更低版本的设备上授予 READ_PHONE_STATE 权限 -->
    <uses-permission android:name="READ_PHONE_STATE"
                     android:maxSdkVersion="29" />
    <uses-permission android:name="READ_PHONE_NUMBERS" />
</manifest>
永久SIM标识符

从Android 11开始,通过 getIccId() 方法访问不可重置的ICCID受到限制,该方法会返回一个非空的空字符串,要唯一标识设备上安装的SIM,改用 getSubscriptionId() 方法。除非设备恢复出厂设置,否则此标识符对于SIM是不变的。

Toast

从Android 11开始 ,从后台发送自定义view的Toast消息系统会进行屏蔽。前台使用不受影响。Toast相应的setView 和 getView方法也已经废弃不建议使用。
如果要在后台使用,并且希望用户执行某项操作,请使用通知(Notification)。

新功能和API

状态栏

WindowMetrics 是Android 11新增的类,用于获取窗口边界,同样可以用来获取导航栏高度。

 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {

            val wm = getSystemService(Context.WINDOW_SERVICE) as WindowManager
            val windowMetrics=  wm.currentWindowMetrics
            val wi=windowMetrics.windowInsets
            val insets=wi.getInsetsIgnoringVisibility(WindowInsets.Type.navigationBars() or WindowInsets.Type.displayCutout())
            Log.e("yhj", "${insets.top}") 
        }
应用签名

从Android 11开始,仅通过v1签名的应用无法在Android 11的设备上安装或更新,必须使用v2或更高版本进行签名。
Android 11 添加了对 APK 签名方案 v4 的支持。此方案会在单独的文件 (apk-name.apk.idsig) 中生成一种新的签名,但在其他方面与 v2 和 v3 类似。没有对 APK 进行任何更改。此方案支持 ADB 增量 APK 安装,这样会加快 APK 安装速度。

无线调试

Android 11开发者选项增加了一个无线调试功能,可以无需USB连接线连接真机进行日常开发调试工作。类似于使用的插件Android ADB WIFI。

  • 使用方法

打开手机开发者选项,找到无线调试打开。选择使用配对码配对设备,记下设备上显示的配对码、IP 地址和端口号。Android Studio terminal 运行 adb pair ipaddr:port 。使用第 5 步中的 IP 地址和端口号,最后输入配对码连接。
需要注意的是,电脑和手机必须在同一网络。Platform Tools 版本需大于30.0。可使用 adb --version 查看。
我用小米手机打开无线调试直接提示”由于某个应用遮挡了权限请求界面,因此设置应用无法验证您的回应“,目前还没有解决,有知道解决的大佬留言哈。
无线调试

兼容性调试工具

以往我们做适配时,需要先将项目中的 targetSdkVersion 改为对应版本,这就导致适配过程中可能受到其它变更的影响,而新增的兼容性调试工具科技让我们在不升级targetSdkVersion的情况下,开启适配。

  • 使用方法

打开手机开发者选项,找到应用兼容性变更选项,点击进入找到需要调试的应用,在变更列表中,找到想要开启或关闭的变更。
兼容性变更

这些常量的详细含义参考官方文档:https://developer.android.google.cn/about/versions/11/reference/compat-framework-changes

相机

Android 11 添加了 API 以查询对同时使用多个摄像头(包括前置摄像头和后置摄像头)的支持。
如需在运行应用的设备上检查支持情况,请使用以下方法:

  • getConcurrentCameraIds()可返回摄像头 ID 组合 Set,这些组合可与有保证的数据流组合并发进行流式传输(如果它们是由同一应用进程配置的)。
  • isConcurrentSessionConfigurationSupported()可查询摄像头设备是否可以并发支持相应的会话配置。
AsyncTask

AsyncTask在Android 11已经不建议使用,建议迁移至Kotlin的协程。
此外 Handler未指定 Looper 的构造方法也已不建议使用。

Handler(Looper.getMainLooper())

总结

Android 11的变更还是比较多的,除了上述变更外,还有5G、瀑布屏、网络连接等其它变更,未列出的变更请参考官方文档:https://developer.android.google.cn/about/versions/11/。
最后,展示一个Android 11小动画🔊。

Android 11 小动画

READ_PHONE_STATE 升级sdk的时候,sdk要求适配版本最低要求为9编译目标版本为23, <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="23" /> 不是专业搞安卓的对这块也不是很了解,后面发现获取手机IMEI的时候,APP会卡主,发现是因为获取不到READ_PHONE_STATE权限。然... 阅读详情

相关推荐

Android开发者必看:Mock Location功能实现全攻略(适配Android 11/10/9)

本文为Android开发者提供了实现Mock Location功能的完整指南,重点适配Android 11/10/9等新版本系统。文章详细解析了模拟位置的核心机制、权限演进,并给出了从权限声明、创建Mock Location Service到多版本适配的实战代码,帮助开发者高效解决测试中地理位置模拟的难题。

weixin_29230865的博客 1219

关于READ_PHONE_STATE权限问题

前几天有一个朋友遇到了一个关于READ_PHONE_STATE的权限问题,尽管在manifest中添加了该权限,仍然会报权限不足。READ_PHONE_STATE这个权限在Android6.0(Api 23)及以上的版本,不仅需要在manifest中添加权限,还需要在运行时请求权限。一个不靠谱的解决方法(懒人解决方法),将app/build.gradle中的targetSdkVersion和Com...

wuhaibin12的博客 6万+

Android 11+分区存储机制解析:开发者适配与高级用户访问Android/data目录全攻略

在移动应用开发中,文件存储与访问权限是保障用户数据安全的核心机制。Android系统通过沙箱隔离原理,为每个应用分配独立的私有存储空间,防止数据被恶意窃取或篡改。这一设计的技术价值在于从系统层面强化了隐私保护,但也对需要跨应用文件管理的场景带来了挑战。随着Android 11引入分区存储(Scoped Storage)机制,传统的运行时存储权限作用范围被大幅收窄,应用默认无法直接访问其他应用的私有目录,如Android/data和Android/obb。这直接影响了文件管理器、数据备份工具等应用的开发,以及

weixin_33755649的博客 319

Android动态权限详解

首先,从一张图开始此文。IOS 12定位权限。

霍格沃兹测试学院的博客 2239

晶晨S905L/LB芯片刷机实战:安卓11.0线刷包+移动遥控适配+外置网卡支持全攻略

本文提供晶晨S905L/LB芯片电视盒子的安卓11.0线刷全攻略。内容涵盖从刷机前的设备识别、风险准备,到核心刷机流程与故障处理,并重点详解了刷机后如何配置外置网卡以扩展网络能力,以及启用IPV6协议栈的详细步骤,旨在帮助用户彻底改造老旧设备,提升其性能与网络适应性。

b0c1d2的博客 732

Android Studio权限管理最佳实践:Android 11适配指南

本文旨在为Android开发者提供全面的Android 11权限管理适配指南,涵盖从基础概念到高级实践的所有内容。我们将重点讨论Android 11引入的权限变更,以及如何在现有应用中实现平滑过渡。文章首先介绍Android权限系统的基础知识,然后深入Android 11的特定变更,接着通过代码示例展示实现方案,最后讨论实际应用场景和最佳实践。运行时权限(Runtime Permission):需要用户在使用时明确授权的危险权限权限组(Permission Group):逻辑上相关的权限集合。

移动开发前沿的博客 685

Android 11 变更及适配攻略

终于开始了Android 11的适配工作,记录一下,供需要的人参考。

唯鹿的博客 2万+

【RK3588开发记录】超详细的RK3588修改debug串口波特率为115200

修改RK3588的debug串口为115200

Crazydrams的博客 4804

Android 11适配全攻略:从理论到实践

Android 11在隐私保护、用户体验和系统性能等方面进行了多项改进。例如,引入了分区存储(Scoped Storage)以更好地管理文件,提升了存储访问的安全性和隐私性;增强了位置信息的权限管理,允许用户授予应用一次性的临时访问权限;优化了电源菜单和聊天气泡等功能,提升了用户的操作便捷性。Android 11的适配是一个复杂而细致的过程,需要开发者们充分了解新特性和行为变更,并根据应用的实际情况进行相应的调整和优化。

md_1008的博客 758

Coze平台智能体开发实战:打造测试工程师的AI助手

智能体是具备特定身份和能力的AI实体,由大语言模型(LLM)驱动,并通过插件、知识库和工作流扩展其能力。明确的角色定位:可以设定特定身份和专业领域扩展能力:通过插件连接外部工具和服务记忆能力:通过知识库存储和检索专属信息流程化处理:通过工作流执行复杂多步任务通过Coze平台创建测试工程师智能体,可以显著提升测试效率和质量。明确的角色定位:聚焦测试工程师的实际需求丰富的知识库:提供准确的领域知识支持合适的工具集成:通过插件连接现有工具链持续迭代优化:根据反馈不断改进智能体行为自动化测试生成。

hogwarts_beibei的博客 1005

使用FloodRisk2插件进行洪水风险评估

入汛以来,长江流域持续的强降雨使得沿岸多地成为洪水风险极高地区,抗洪、抢险、救灾继新冠病毒之后成为又一个攻坚阵地。如何科学地评估洪水风险,是快速决策的关键。 实际生活中,根据风险是否可控,一般将洪水风险大致分为两类:一类是通过数据分析可以得出其发生的可能性和后果,如强降雨引发的区域性洪水、水库/大坝溃决洪水等。这类洪水可以通过有关资料分析和设定一定条件计算得到可能的损失后果,也就是说,风险可以预判。另一类洪水风险基本是未知的,如滑坡堵塞河道形成堰塞湖引发的洪水,无法预知事件发生的地点和规模,具体的洪水风险无

QGISClass的博客 2877

抢先看!安卓11新特性和适配攻略

引言 近期,Google 发布了 Android 11的平台稳定版本。Android 11 将在确保用户隐私安全的前提下,更好地让用户畅享最新科技。 下图是 Android 11 发布整体流程的时间线: 个推深耕开发者领域,一直紧跟行业发展趋势,对Android 11的有关更新展开了深入研究。本文将从分区存储、应用包可见性、权限变化和新功能四个方面来谈谈 Android 11 新特性,以帮助开发者更快速、更便捷地上手适配Android新系统。 作者| 个推高级安卓开发...

个推技术学院 4735

一种四通道高精度IEPE加速度传感器控制器设计稿

一种四通道高精度IEPE加速度传感器控制器设计稿,颇具参考价值。

boyondmcu的博客 3853

【划重点】5分钟带你看懂Android 11预览版适配攻略-MobTech

近日,谷歌推送了最新的Android 11第二个开发者预览版(Developer Preview 2)更新,而这距离上一个版本已过去了一个月之久。 按照谷歌提供的里程碑列表,从今年2月份起,每月将会发布一个开发者预览版,直至第三季度Android 11最终版本推出。谷歌官方提示广大开发者,尽早开始应用程序兼容性的测试,留更充裕的时间用于后期的适配处理。 图片来自网络 本次新版本主要带来了新的隐私...

Mobholly的博客 4357

Kile5报错—> ARM-Compiler ‘Default Compiler Version 5‘ which is not available安装使用Compiler Version 5 的办法

Kile5报错—> ARM-Compiler ‘Default Compiler Version 5‘ which is not available安装使用Compiler Version 5 的办法

weixin_72050316的博客 1180

腾讯滑块验证码防水墙 tdc.js 补环境实录

腾讯滑块验证码破解研究摘要 本文记录了破解腾讯防水墙滑块验证码(tdc.js)的全过程。研究重点包括: 流程分析:通过抓包分析验证码完整链路,识别出关键参数collect和eks需从tdc.js虚拟机获取 环境模拟:采用渐进式补环境方法,针对字节码虚拟机特性构建完整的window对象,包括navigator、screen、canvas等API的精确模拟 核心破解:成功调用TDC.getData()和TDC.getInfo()获取关键参数,解决POW计算和滑块缺口识别问题 优化调整:针对errorCode 5

码王吴彦祖的博客 225

RK356X安卓11开发板SELINUX关闭全攻略:从调试到生产环境适配

本文详细解析了在RK356X安卓11开发板上,SELINUX在userdebug与user模式下的行为差异及生效机制。通过深入分析init进程决策逻辑,提供了从修改编译配置到内核参数的完整实战方案,帮助开发者实现从调试到生产环境的SELINUX策略精准控制与适配。

rrr55的博客 586

SAP 消息号T-CODE

SAP消息号修改汇总 确实有很多消息是可以修改的 FI: oBA5|oFMG|oFPM MM: oMRM|oKZZ|oMT4|oMCQ|o04C| SD: oVAH(V4)|oVM1(VL) CO:  oPR4_ACT|oPR4_CK|oPR4_CKML|oPR4_CKPF|oPR4_KKA|oPR4_KKP|oPR4_KKS| oPR4_KKS1|oPR4_P

heng0757的专栏 1万+

从Android 1.0到Android 11:SDK版本演进史与开发适配全攻略

本文系统梳理了Android系统从1.0到11的SDK版本演进历程,重点解析了minSdkVersion、targetSdkVersion和compileSdkVersion三大关键配置的协同作用与适配策略。文章提供了针对分区存储、后台权限等新特性的实战适配方案,旨在帮助开发者构建兼顾兼容性与先进性的健壮应用架构。

weixin_29218963的博客 537

BoT-SORT实战:手把手教你实现BoT-SORT训练和测试

文章目录摘要1、数据准备2、配置BoT-SORT环境2.1、获取代码2.2、创建虚拟环境2.3、安装必要的包2.3.1、安装pytorch2.3.2、安装cython2.3.3、安装Cython-bbox2.3.4、安装faiss2.3.5、安装其他的包3、训练3.1、生成REID数据集3.2、预训练模型3.2.1、ByteTrack预训练模型3.2.2、REID预训练模型3.3、开始训练4、如何更改FASTREID的BackBone?5、测试5.1、测试视频5.2、测试摄像头5.3、多类别测试 摘要 Bo

m0_47867638的博客 2298

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

告别‘适配焦虑’:用Android 11兼容性调试工具和无线调试,边测边改的保姆级攻略

本文详细介绍了Android 11的兼容性调试工具和无线调试功能,帮助开发者高效解决系统版本适配问题。通过渐进式适配和无线调试技术,开发者可以边测边改,大幅提升开发效率,告别‘适配焦虑’。文章还提供了实战案例和进阶技巧,助力开发者快速掌握这些工具的应用。

weixin_30314813的博客 388

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android Studio实战:适配Android 11+的权限申请全攻略,涵盖文件、相册与相机

本文详细解析了Android 11+权限模型的核心变化,包括分区存储、媒体权限细化和一次性权限等关键特性。通过实战代码示例,指导开发者在Android Studio中正确处理文件读写、相册与相机权限的动态申请,提供版本兼容方案和用户引导策略,帮助开发者高效适配最新Android系统。

weixin_30667649的博客 443

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android新特性

5、App在后台运行时,如果需要获取心率、体温、血氧饱和度等传感器信息,将不仅需要向用户申请现有的BODY_SENSORS权限,还必须声明新的BODY_SENSORS_BACKGROUND权限。4、闹钟权限增加USE_EXACT_ALARM权限,一旦申请之后不可撤销,避免频繁打扰用户,能够更高效地为用户提供闹钟、日程提醒等服务。3、读取视频或图片增加了一个只允许访问部分图片或视频的权限(非强制),申请读取权限之后自动获取写入权限。5、动态加载的文件(Jar、Dex、Apk 格式)需要设置成只读的。

dongaddxing的博客 735

Android11最全适配实践指南

从 Android 11 开始,已弃用自定义消息框视图。如果您的应用以 Android 11 为目标平台,包含自定义视图的消息框在从后台发布时会被屏蔽可能有人会奇怪了,什么是自定义消息框视图啊?我说英文你就知道了,英文是,也就是自定义toast。糟了糟了,自定义toast被弃用了?我们项目就是用的这个啊!不用担心,只是不允许自定义toast从后台显示了。IToast.show("你好,我是自定义toast")}, 3000)啥也没显示,只是发出来一个警告。

u010345983的博客 4058
上一篇: 再见 onActivityResult!你好 Activity Results API
下一篇: Android Jetpack组件(九)DataStore
八归少年
八归少年 新星创作者: 操作系统技术领域 新星创作者: 操作系统技术领域
博客等级 码龄9年 9011粉丝 63原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八归少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值