我是靠谱客的博主 等待鸡,最近开发中收集的这篇文章主要介绍Android12适配指北影响Android 12 上运行的所有应用的部分二.麦克风和摄像头切换开关三.Display.getRealSize() & Display.getRealMetrics()废弃四.应用无法关闭系统对话框五.大致位置,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

通常我们说的适配一般指两个部分:
一个是影响在 Android 12 上运行的所有应用,无论采用哪种 targetSdkVersion 都不例外的部分
一个是只以Android12为目标的应用(targetSdkVersion为31)

下面说说第一个部分:

影响Android 12 上运行的所有应用的部分

一.Splash Screen

Android12新增了系统默认的App启动页,该启动页会使用App定义的主题和Icon生成。如果不进行适配产生的后果可能会有:
1.如果原本使用了android:windowBackground实现了启动页,那么这个实现会被默认的启动页样式替换
2.如果使用了一个额外的Activity作为启动页则会先弹出默认的启动页再弹出这个额外的Activity,用户会看到两次闪屏。

默认情况下,SplashScreen 使用主题的 windowBackground(如果它是单色)和启动器图标。启动画面的自定义通过向应用主题添加属性来完成。

自定义应用中的启动画面

1.设置主题属性以更改其外观

  • 设置背景
// An highlighted block
<item name="android:windowSplashScreenBackground">@color/xxx
</item>
  • 替换中心部位的图标,如果使用 AnimationDrawable 和 AnimatedVectorDrawable 可呈现动画效果且可绘制,则也会在显示起始窗口的同时播放动画。
<item name="android:windowSplashScreenAnimatedIcon">@drawable/...</item>
  • 使用 windowSplashScreenAnimationDuration 设置启动画面在关闭之前显示的时长。最长时间为 1000 毫秒。

当应用绘制第一帧后,启动画面会立即关闭。如果需要延迟关闭,可以使用 ViewTreeObserver.OnPreDrawListener 让应用暂停绘制第一帧。

二.麦克风和摄像头切换开关

在 Android 12 中,部分设备允许用户通过按一个切换开关选项,为设备上的所有应用启用和停用摄像头和麦克风使用权限。该开关不影响应用处理 CAMERA 和 RECORD_AUDIO 权限的方式。

摄像头和麦克风切换开关会影响设备上的所有应用:

  • 当用户关闭摄像头使用权限后,应用会收到空白的摄像头画面。
  • 当用户关闭麦克风使用权限后,应用会收到无声音频。

检查设备是否支持麦克风和摄像头切换开关

SensorPrivacyManager sensorPrivacyManager = getApplicationContext()
        .getSystemService(SensorPrivacyManager.class);
boolean supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE);
boolean supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA);

三.Display.getRealSize() & Display.getRealMetrics()废弃

Android 12 上进一步废弃了 Display.getRealMetrics() 和Display.getRealSize()。现在推荐使用 WindowMetrics, 并且谷歌提供了一个兼容到 Android 4.0 的 WindowManager 兼容库。通常情况可以使用如下代码代替以前计算屏幕宽高:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
     metrics = activity.getWindowManager().getCurrentWindowMetrics();
     int width = metrics.getBounds().width();
     int height = metrics.getBounds().height();
 }

四.应用无法关闭系统对话框

为了加强用户与应用和系统互动时的控制,从 Android 12 开始,弃用了 ACTION_CLOSE_SYSTEM_DIALOGS intent 操作。除了一些特殊情况之外,当应用尝试调用包含此操作的 intent 时,系统会基于应用的目标 SDK 版本执行以下操作之一:

  • 如果应用以 Android 12 为目标平台,则会发生 SecurityException。

  • 如果应用以 Android 11(API 级别 30)或更低版本为目标平台,则系统不会执行 intent

五.大致位置

应用以 Android 12 为目标平台并且请求 ACCESS_FINE_LOCATION 权限,还须请求 ACCESS_COARSE_LOCATION 权限。必须在单个运行时请求中包含这两项权限。如果仅请求 ACCESS_FINE_LOCATION,则系统会忽略该请求,并在 Logcat 中记录以下错误消息:ACCESS_FINE_LOCATION must be requested with ACCESS_COARSE_LOCATION

最后

以上就是等待鸡为你收集整理的Android12适配指北影响Android 12 上运行的所有应用的部分二.麦克风和摄像头切换开关三.Display.getRealSize() & Display.getRealMetrics()废弃四.应用无法关闭系统对话框五.大致位置的全部内容,希望文章能够帮你解决Android12适配指北影响Android 12 上运行的所有应用的部分二.麦克风和摄像头切换开关三.Display.getRealSize() & Display.getRealMetrics()废弃四.应用无法关闭系统对话框五.大致位置所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部