android p_android python编程 - CSDN
精华内容
参与话题
  • Android P 上手:十年来的最大升级,你想知道的都在这里在三月份,Google 就已经放出了 Android P 的开发者预览版供大家尝鲜,爱范儿也第一时间对其进行了上手体验。而在昨天晚上 Google I/O 2018 大会结束后,...

    Android P 上手:十年来的最大升级,你想知道的都在这里


    在三月份,Google 就已经放出了 Android P 的开发者预览版供大家尝鲜,爱范儿也第一时间对其进行了上手体验

    而在昨天晚上 Google I/O 2018 大会结束后,Google 也正式向加入 Android Beta 的 Pixel 用户推送了 Android P Beta 版本。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    爱范儿手上的 Google Pixel 2 XL 也在第一时间收到了更新。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    另外,与以往不同的是,这次的新系统,不再是 Google 亲儿子独享,包括诺基亚 7 Plus、小米 MIX 2S、Essential Phone、索尼 Xperia XZ2、OPPO R15 Pro、vivo X21UD、Vivo X21 在内的几款机型都可以在今天就更新到 Android P。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    此等福利也是这么多年头一次见,随之而来的好处是,OEM 厂商们有更充裕的时间去定制新系统,同时也能让每次新 Android 的普及率有所改善,要知道,已经发布一年多的 Android O,其占有率仅有 4.6%。

    话说回来,这次的 Android P Beta 版,多了哪些新鲜玩意呢?

    意料之中的手势操作

    首先,一个最明显的变化,就是原生 Android 也终于加入手势操作了。

    由于是第一次加入手势操作,Google 并没有把它设置为新系统的默认操作方式,依然保留了传统的三颗虚拟按键。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    如果要激活手势操作,则需要在系统设置中启用手势操作,一旦启用,你会发现原有的三颗虚拟按键中,最近任务键不见了。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    而在主屏幕下,只剩一颗椭圆形的按键留在中间,在其它界面下,则还会出现一颗返回按钮,而这颗返回键,在手势操作的交互下略显突兀,但也是无奈之举。

    在过去三颗虚拟键的布局下,虽然 Android 应用的设计规范中,也有滑动退出当前界面的方案,但大多数应用都依靠那颗返回键返回上一级界面,而回到主屏幕,一直依赖 Home 键。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    上划一次那颗椭圆形的 Home 键,会呼出最近任务,最近任务的卡片也经过了重新设计,变成了更大面积的窗口,选择卡片的方式也变成了左右滑动,上划卡片可消除多任务,不过之前版本上“全部消除”的按钮不见了。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    (拖动 Home 键浏览或选择最近任务卡片)

    你还可以在最近任务界面下,通过拖动椭圆形的 Home 键来选择多任务卡片,只是拖动 Home 键的区域被限定在了右侧,在体验中,只有右手持机才好用,如果是用左手,拖到右端就够不到了,如果放在中间,似乎更加友好一些。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    (不如取消应用抽屉吧。。)

    如果想从最近任务回到主屏幕,只需点按一下 Home 键,而如果在最近任务界面下再次上划,则会进入应用抽屉。实际上,在主屏幕界面下,从屏幕底部上划时,让手指停留时间稍长一些,也可以直接呼出应用抽屉。

    但个人觉得这个体验并不是很好,过去只需上划一次呼出应用抽屉的时间变长了。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    另外,如果想要使用分屏模式,在 Android P 上只能通过点按最近任务卡片上方的应用图标后,选择分屏。

    短暂的体验后,我们认为 Android P 的手势操作并不是当前最好的解决方案,甚至有些操作逻辑略显混乱,但这也算是刚刚进入手势操作时代的原生 Android 目前位置能够做到的解决方案了吧。

    一个想帮你戒掉手机的系统?

    除了手势操作外,在系统层面更加吸引人的一项更新,可能是那个新的应用管理机制了。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    (图自:Androidauthority)

    开发这个新应用管理机制的初衷,是为了在一定程度上防止人们过度沉迷于手机。Android 产品管理副总裁 Sameer Samat 表示,Google 已经花了很长时间去开发这个产品,但最终目的并不是为了去完全消除人们对沉迷于电子设备的担忧,而只是为了不让他们完全沉迷其中。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    在这个新的应用管理机制中,它会自动分析用户使用每一个应用的时长,还会用一个饼状图直观地告诉你今天在手机上度过了多少小时,也能告诉你今天一共收到了多少条通知。

    Google 表示,这个机制可以让用户清楚的了解他们每天花了多少时间在智能手机上。如果有人问你,你每天花多长时间用智能手机,你绝对答不上来,但现在,当你低头看看那些数据,你可能会发现,我们每个人都和手机过于“亲密”。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    (图自:The Verge)

    而这也是这项新功能的第一个亮点,让人们意识到他们把时间都花在了哪。在人们了解“时间都去哪了”之后,用户可以为每一个 app 单独设置使用时长,比如说抖音,你可以设置今天只能使用抖音 30 分钟,一旦你用光了这 30 分钟,应用图标会变成灰色,你就无法开启这个应用。

    如果点击这个灰色的图标,系统会提示你已经没有使用时长,如果想要解禁,只能去应用管理界面找到这个应用,重新激活。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    不过,这个功能似乎并没有出现在当前这一 Beta 版的系统中,它大概会在下一个 Beta 版系统中上线。

    Google 称,他们并没有加入直接解禁的按钮,就是想看看人们对此会作何反应,嗯……皮一下真的很开心,也真的很 Google。

    其它被发现的小细节

    Android P 上手:十年来的最大升级,你想知道的都在这里

    Android P 将适配刘海屏已经不是什么新鲜事,这个我们在预览版的 Android P 上手势就曾找到了证据,而在这次的 Beta 版上,Google 似乎为更多的「发型」做了准备。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    在开启开发者选项后,可以从中找到一个「刘海」模拟器,有意思的是,除了标准的「刘海」,还出现了一个在手机右上角的「刘海」,以及,上下都有「刘海」的选择。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    看来,Google 是看到了 Android 厂商们对刘海的热情,那么为了「全面屏」的大业,脑洞再开大一点也没关系,只是如果真有这样的手机出现,不知道你们能不能接受?

    Android P 上手:十年来的最大升级,你想知道的都在这里

    此外,在应用抽屉中,出现了两个类似应用快捷方式的模块,Google 把它叫做「actions」。这两个位置会根据用户对于 app 的使用习惯自动生成某个 app 的常用功能,比如我经常使用支付宝的扫一扫,那么扫一扫这个功能就会出现在其中一个位置上。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    实际上,你也可以将支持 shortcut 应用的某一个功能单独放在主屏幕上,道理是一样的,只是如果你不想桌面放一大堆快捷方式,那么「actions」就可以自动帮你选择你最常用的那个功能。

    不过,将这个功能放到应用抽屉里,虽然想法是冲着方便去的,但实际操作起来,不如把它放到负一屏来得更加便捷。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    当然,Google 还为这个新系统全方位的加入了 AI,就连电池管理和屏幕亮度调节都交给了 AI。在新的电池管理中,系统会检测是哪些应用在消耗电池,并关闭那些用户已有一段时间不用、但还在后台运行的应用。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    AI 还会根据用户的使用习惯调整手机的亮度,比如当你在夜晚看手机时,习惯将亮度调到 20%,那么你的手机将会记住你的选择,并在夜间自动保持 20% 的亮度,而不是 10% 或其他数值更低,也就是说,运行 Android P 的设备,不单单是靠光线传感器来解决问题。

    Android P 上手:十年来的最大升级,你想知道的都在这里

    除了以上这些,新的 Android 系统还有更多变化有待挖掘。从交互方式的改变,到贯穿整个系统的 AI,这确实会是十年来变化最大的 Android,而这可能也是 Google 重新思考 Android 进化方向的开始。

    然而,我现在需要去思考的是,如何才能快速适应原生 Android 这套手势操作了。

    展开全文
  • Android P 正式到来

    2018-12-07 17:30:41
    极力推荐Android 开发大总结文章:欢迎收藏程序员Android 力荐 ,Android 开发者需要的必备技能   经历一年多的开发和数月以来早期用户的反复测试,最新 Android 平台 —— Android 9 Pie 终于正式面向全球...

    极力推荐Android 开发大总结文章:欢迎收藏
    程序员Android 力荐 ,Android 开发者需要的必备技能

     

    经历一年多的开发和数月以来早期用户的反复测试,最新 Android 平台 —— Android 9 Pie 终于正式面向全球发布!

    Android 9 利用人工智能技术,让您的手机更加智能、简洁与人性化。请通过本文了解 Android 9 的所有新特性,同时也希望各位开发者能够借助 Android 9,全面提升应用性能,打造出色体验,让您的应用与用户走得更近!

    在 Android 9 的开发过程中,十分感谢大家的积极反馈 ,我们收到了超过 1000 条报错与特性请求 。共有超过 140,000 名开发者通过 Android Beta 项目试用了之前发布的开发者预览版,此外,更有 7 家顶尖合作设备厂商相继推出了支持 Android P Beta 版的旗舰机型,帮助我们获取全球早期 Beta 用户的反馈。

    从今天起,我们将在 Android 开源项目 (AOSP) 中发布 Android 9 源码,同时开始向 Pixel 用户推送系统更新通知,其它更多 Android 设备预计会在接下来的几个月内陆续收到通知。

    我们会继续努力将 Android 打造成一流的开放平台,助力全球开发者取得商业成功。期望各位能够利用 Android 9 这个新平台并借助 Google Play 中新增的功能,开发出优质的应用和游戏,通过最有效和安全的方式,为全球用户带去精彩体验!

    Android 9 终版新功能

    以机器学习为核心,打造更为智能的手机

    Android 9 赋予手机强大的学习能力:系统能够根据用户在使用过程中展露的习惯与偏好,进行自我学习与适应 —— 从强劲续航到人性化应用推荐,Android 9 都能想您所想,保障持久流畅的用户体验。

    动态电量管理

    我们与 DeepMind 合作推出了动态电量管理特性,利用机器学习技术对系统资源进行有限分配,更专注于用户最常用的应用。如果您已经针对低耗电模式、应用待机模式以及后台限制对您的应用进行过相关优化,那么它就应该已经能够和动态电量管理特性完美配合。如果您暂时还未开始优化工作,请阅读电量管理官方文档,获取具体操作指南。

    DeepMind 链接
    https://deepmind.com/

    动态电量管理
    https://developer.android.google.cn/preview/features/power

    低耗电模式
    https://developer.android.google.cn/training/monitoring-device-state/doze-standby#understand_doze

    应用待机模式
    https://developer.android.google.cn/training/monitoring-device-state/doze-standby#understand_app_standby

    后台限制
    https://developer.android.google.cn/about/versions/oreo/background

    电量管理官方文档
    https://developer.android.google.cn/preview/features/power

    image

    Slices

    Slices 能够有效帮助用户节省操作时间,不需要通过全屏体验就能够使用应用的部分功能。借助配套的 UI 模板,Slices 能够将应用内容以高动态、富交互的形式插入到多个使用场景中,比如 Google Search 和 Assistant。请进一步了解如何在应用中构建 Slices。

    构建 Slices
    https://developer.android.google.cn/guide/slices/

    image

    App Actions

    App Actions 是一种全新的应用推荐方式。开发者可以利用这个功能,让更多人看到自己的应用并极大提高用户参与度。借助机器学习技术,App Actions 能对应用的语义意图和使用场景进行分析,并根据分析结果在适当的时机向用户推荐您的应用。

    image

    我们将在接下来几周内公布具体操作细节,帮助开发者了解如何在应用内处理一个或多个用户意图。一旦应用启用该推荐功能后,系统就会根据用户请求,在众多 Google 和 Android 交互入口推荐您的应用。

    App Actions
    http://developer.android.google.cn/guide/actions/

    文本识别与 Smart Linkify

    在 Android 9 中,我们对识别文本的机器学习模型进行了扩展,使其可以借助TextClassifier API 识别出类似日期或航班号这样的信息。此外, Smart Linkify 允许开发者通过 Linkify API 使用文本识别模块完成多项操作,比如对用户可采取的操作提出建议。Smart Linkify 让系统在文本识别精确度与速度上都有明显的提升。

    image

    TextClassifier API
    https://developer.android.google.cn/reference/android/view/textclassifier/package-summary

    Linkify API
    https://developer.android.google.cn/reference/android/text/util/Linkify

    神经网络 API 1.1

    Android 9.0 对神经网络 API 进行了扩展与改进,进一步优化 Android 对机器学习硬件加速的支持。神经网络 API 1.1 共增加了对 9 个新算子的支持,它们分别是 Pad、BatchToSpaceND、SpaceToBatchND、Transpose、Strided Slice、Mean、Div、Sub 和 Squeeze。TensorFlow Lite 就是一个已经用上此 API 的典型机器学习框架。

    神经网络 API 1.1
    https://developer.android.google.cn/ndk/guides/neuralnetworks/index.html

    TensorFlow Lite
    https://www.tensorflow.org/mobile/tflite/

    人机交互,就是这么容易

    “让智能手机更加智能” 是我们向前迈进的重要一步。但是,如何把握好用户与科技的关系 —— 让科技以人为先,这一点也同样关键。在 Android 9 中,我们大幅度改进了用户界面,让它更简洁,也更易于操作;对于开发者而言,这些变更能够让用户更加容易搜索,使用和管理您的应用。

    全新系统导航

    经过一年多的努力, Android 9 迎来了全新的系统导航,让多任务切换及关联应用探索变得更加简单。您只需要向上滑动屏幕就可以全屏预览最近使用过的应用,轻触预览页后便可以切换至所选应用。

    image

    凹口屏支持

    Android 9 中加入了凹口屏支持,让您的应用可以充分利用最新全面屏,展现应用的独特魅力。该功能可以在大部分应用中无缝工作,系统会通过调整状态栏高度将应用内容与屏幕缺口区域分开。如果您的应用含有沉浸式内容,您可调用 display cutout APIs 确认缺口形状与位置,然后请求围绕缺口进行全屏布局。另外,我们还加入了开发者选项来模拟任意设备上的凹口形状,从而极大简化了应用支持凹口屏幕所需的构建以及测试流程。

    凹口屏支持
    https://developer.android.google.cn/guide/topics/display-cutout/

    display cutout APIs

    https://developer.android.google.cn/reference/android/view/DisplayCutout.html

    image

    △ 内含沉浸式内容的应用可以在凹口屏设备上实现全屏显示

    通知与智能回复

    Android 9 进一步改善了通知的实用性与可操作性。消息类应用可以调用新的MessagingStyle API 来显示对话,附加照片和表情,或者提供智能回复建议。再过不久,您就可以使用 ML Kit 在应用中生成智能回复。

    image

    △ 在 MessagingStyle 通知中,您可以显示对话和智能回复 (左) 或添加图片和表情 (右)

    MessagingStyle
    https://developer.android.google.cn/preview/features%23notifications

    ML Kit
    https://developers.google.com/ml-kit/

    文本放大镜

    Android 9 中添加文字放大镜工具 (Magnifier widget),以提升文本选择方面的用户体验。由于该放大器提供了可以在文本上方拖拽的文本放大面板,所以有助于用户精准地定位光标或文本选择手柄。该功能可以灵活运用在所有附加在窗口的视图上,个性化小部件和定制文本呈现均是不错的应用场景。而且,该放大器工具还可以提供任何视图或界面的放大版本,而不仅仅是文本。

    文字放大镜工具 (Magnifier widget)
    https://developer.android.google.cn/reference/android/widget/Magnifier

    image

    请阅读《Android P 中的新文本特性》,了解更多有关放大镜以及文本特性的相关信息,如 Precomputed Text、行高以及基线文本对齐。

    Precomputed Text
    https://developer.android.google.cn/reference/android/text/PrecomputedText

    用户安全与隐私

    统一身份验证对话框

    生物传感器被广泛应用于身份认证,为了保障用户在不同感应器和应用间能够获得一致的体验, Android 9 引入了统一的身份验证对话框,提示用户进行操作。应用不再需要自行设计对话框,而是通过调用 BiometricPrompt API 触发系统对话框。除指纹识别以外 (包括屏幕下指纹识别),该 API 还支持面部识别以及虹膜识别。

    BiometricPrompt API
    https://developer.android.google.cn/reference/android/hardware/biometrics/BiometricPrompt

    image

    若您的应用仍在使用自行设计的指纹识别对话框,我们建议您尽快转用 BiometricPrompt API。

    高可信度用户确认

    Android 9 新增了高可信度用户确认 (Android Protected Confirmation) ,该功能通过可信执行环境 (TEE) 确保提示文本被真实用户确认。只有在用户成功确认之后,TEE 才会签发该文本,让应用进行后续验证步骤。

    Android Protected Confirmation
    https://developer.android.google.cn/preview/features/security#android-protected-confirmation

    加强密钥安全保护

    我们还加入了一个新的 KeyStore 类 —— StrongBox,并提供相应的 API 来支持那些提供了防入侵硬件措施的设备,比如独立的 CPU,内存以及安全存储。您可以在KeyGenParameterSpec 里进行设置,决定是否把密钥交给 StrongBox 安全芯片来保存。

    KeyStore
    https://link.juejin.im?target=https%25253A%25252F%25252Fdeveloper.android.google.cn%25252Fpreview%25252F

    KeyGenParameterSpec
    https://developer.android.google.cn/reference/android/security/keystore/KeyGenParameterSpec

    DNS over TLSAndroid 9 内置对 DNS over TLS 的支持:若网络 DNS 服务器提供支持,设备会自动将 DNS 查询升级为 TLS 查询。用户可以通过更改 “网络和互联网” 设置下的隐私 DNS (Private DNS) 模式来管理 DNS over TLS 行为。自行运行 DNS 查询的应用可以通过调用新的 LinkProperties.isPrivateDnsActive() API 来获取 DNS 模式相关信息。请阅读《Android P 开发者预览版支持 DNS over TLS》,获取进一步信息。

    默认使用 HTTPS

    为了将所有网络流量从明文 (未加密的HTTP) 逐步迁移至 TLS,我们更改了网络安全配置的默认设置,以阻止所有明文流量,强制应用通过 TLS 建立网降连接,除非开发者明确允许特定域名使用明文传输。

    网络安全配置
    https://developer.android.google.cn/training/articles/security-config.html

    基于编译器的安全缓解措施

    Android 9 将进一步扩展编译器级别的安全缓解措施,借助运行时危险行为监测进一步加强平台安全建设。Android 9 通过控制流程完整性 (CFI) 技术解决了代码重用 (code-reuse) 和任意代码执行两大漏洞,并扩展了 CFI 在媒体框架和其它关键安全组件内的使用范围,如 NFC 与蓝牙。同时,Android 9 还针对 Android 常见内核的 LLVM 编译添加了 CFI 内核支持。

    此外,Android 9 还将整数溢出检查器 (Integer overflow sanitizer) 的使用范围扩展到其他库,以缓解内存损坏与信息泄露这两个问题。我们调高了检查器在以下两类库中的优先级:1) 存在历史漏洞,2) 需要处理复杂且不受信任的输入,如 libui、libnl 和 libmediaplayerservice 一类的库都在调整范围内。

    用户隐私

    Android 9 新加入多项机制,进一步加强了对用户隐私的保护。系统禁止所有处于空闲状态的应用对话筒、摄像头和所有 SensorManager 传感器的访问。当应用的 UID 空闲时,麦克风将会报告 “无音频信号”,传感器将会停止报告事件,应用使用的摄像头也会断开连接,并在应用试图访问时生成错误。在大多数情况下,这些限制不会对现有应用造成新的问题,但建议您从应用中移除此类传感器请求。

    SensorManager
    https://developer.android.google.cn/reference/android/hardware/SensorManager.html#getSensors()

    Android 9 还让用户控制是否允许访问平台 build.serial 识别码 (它被READ_PHONE_STATE 权限保护) 。自 Android 8.0 以来,直接访问此识别码的功能已被弃用。您可以调用 Build.getSerial() 方法,访问 build.serial 识别码。

    READ_PHONE_STATE
    https://developer.android.google.cn/reference/android/Manifest.permission.html#READ_PHONE_STATE

    Build.getSerial()
    https://developer.android.google.cn/reference/android/os/Build.html#getSerial()

    了解全部隐私变更:https://developer.android.google.cn/about/versions/p/android-9.0-changes-all#privacy-changes-all

    感官新体验: 摄像和影音的全面升级

    多摄像头 API 以及其它改进

    从 Android 9 开始,您可以在支持多摄像头 API 的设备上通过两个或更多实体摄像头同时访问视频流;在配有双前置或双后置摄像头的设备上,实现单摄像头无法实现的创新功能:如无缝变焦、散景和立体视觉。该 API 还允许您调用可以在两台或更多台摄像头之间自动切换的逻辑或混合摄像头视频流。

    两个或更多实体摄像头
    https://developer.android.google.cn/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA

    摄像头的其他改进还包括:利用新的会话参数 (Session parameters) 来有效减少初始捕捉时的延迟,表面 (Surface) 共享技术让摄像头客户端无须重启视频流便可处理各种场景。此外,我们还加入了相关 API,提供基于屏幕闪光灯支持及 OIS 时间戳的访问权限。

    Session parameters
    https://developer.android.google.cn/reference/android/hardware/camera2/params/SessionConfiguration.html

    闪光灯
    https://developer.android.google.cn/reference/android/hardware/camera2/CameraMetadata.html#CONTROL_AE_MODE_ON_EXTERNAL_FLASH

    OIS 时间戳
    https://developer.android.google.cn/reference/android/hardware/camera2/CaptureResult.html#STATISTICS_OIS_TIMESTAMPS

    HDR VP9 视频以及 HEIF 图像

    Android 9 增加了对 HDR VP9 Profile 2 的内置支持。现在,您可以在支持 HDR 的设备上,把启用 HDR 功能的视频内容分享给您的用户。

    另外,我们还在添加了对 HEIF (heic) 图像编码的平台支持。 HEIF 是目前比较流行的一种的压缩格式,它改善了图片的压缩效果,并减少了图片的储存空间以及网络流量。引入平台支持后,开发者能更加方便地从后台服务器传输并使用 HEIF 图像。一旦确定您的应用与该数据格式兼容,可用于分享或者显示,不妨尝试将 HEIF 设定为应用内图片的储存格式。此外,您还可以通过 ImageDecoder 将 jpeg 文件转化为 heic 文件,或通过 Bitmap Factory 从 jpeg 文件中获取位图。您亦可使用 AndroidX 库中的 HeifWriter从 YUV 字节缓冲区、Surface以及位图中写入 HEIF 静态图像。

    HEIF
    https://developer.android.google.cn/reference/android/media/MediaFormat.html#MIMETYPE_IMAGE_ANDROID_HEIC

    HeifWriter
    https://developer.android.google.cn/reference/androidx/heifwriter/HeifWriter.html

    使用动态处理增强音频

    开发者可以调用 Dynamics Processing API 对音频进行动态处理,通过分离出特定频率的声音,降低过大的音量,或者增强过小的音量,来改善应用的音频质量。比如说,即便说话者声音小,离麦克风远,而且外界环境十分嘈杂,您的应用依然可以有效捕捉并他/她的声音,并进行相应优化。该 API 提供了多声场、多频段的动态处理效果,包括一个预均衡器、一个多频段压缩器,一个后均衡器以及一个串联的音量限制器。

    Dynamics Processing API
    https://developer.android.google.cn/reference/android/media/audiofx/DynamicsProcessing

    image

    用于位图和 drawable 的 ImageDecoder

    ImageDecoder API 让开发者可以通过一种更为简单的方式将图像解码为位图或 drawable。ImageDecoder 允许您从字节缓冲区、文件或 URI 创建位图或 drawable。它相比 BitmapFactory 有以下几个优势:支持精确缩放,支持单步解码至硬件存储器,支持解码后处理,以及动画图像解码。请获取进一步信息:https://developer.android.google.cn/preview/features#decoding-images

    ImageDecoder
    https://developer.android.google.cn/reference/android/graphics/ImageDecoder

    网络连接与位置

    使用 Wi-Fi RTT ,进行室内定位

    Android 9 为 IEEE 802.11mc Wi-Fi 协议添加了平台支持 (也称为 Wi-Fi 往返时间,RTT),这可以让您在应用中使用室内定位功能。在提供硬件支持的 Android 9 设备上,在启动位置服务并勾选 “允许获取地理位置信息” 选项后,应用就可以使用 RTT API 测量与附近 Wi-Fi 接入点 (AP) 的距离。设备不需要连接到 AP 便可以使用 RTT,而且为了保护隐私,只有手机能够确定距离,而 AP 不可以。

    RTT APIs
    https://developer.android.google.cn/reference/android/net/wifi/rtt/package-summary.html

    image

    通过测量从设备到三个或更多 AP 的距离,您可以计算设备位置至 1 到 2 米的精度。这种精确度允许您创建更多新的体验:室内导航、基于位置的细粒度服务,例如,模糊语音控制 ( "打开这里的灯" ) ;以及基于位置的资讯服务 ( "这个产品有优惠活动吗?" )。

    JobScheduler 中的数据费用敏感度

    JobScheduler 是 Android 的一项核心服务,它可以帮助您针对低耗电模式、应用待机模式以及后台限制,妥善进行各种任务的调度。在 Android 9 中,JobScheduler 可以更好地帮助用户处理与网络相关的任务,并与运营商单独提供的网络状态信号相协调。任务现在可以声明预估数据量、信号预取以及指定详细的网络要求 —— 运营商可以报告网络状况是拥塞还是不计量,然后 JobScheduler 会根据网络状态管理作业。例如,当网络拥塞时,JobScheduler 可能推迟大型网络请求;而在网络可以不计量使用时,则可以运行多种预加载作业 (例如,预读标题) 来改进用户体验。

    JobScheduler
    https://developer.android.google.cn/reference/android/app/job/JobScheduler.html

    低耗电模式
    https://developer.android.google.cn/training/monitoring-device-state/doze-standby#understand_doze

    应用待机模式
    https://developer.android.google.cn/training/monitoring-device-state/doze-standby#understand_app_standby

    后台限制
    https://developer.android.google.cn/about/versions/oreo/background

    用于 NFC 支付和安全交易的 Open Mobile API

    Android 9 将 GlobalPlatform Open Mobile API 的实现添加至平台中。在支持的设备上,应用可以使用 OMAPI API 访问安全元素 (SE) ,以启用智能卡支付等安全服务。硬件抽象层 (HAL) 提供了必要的 API,用于枚举多种可用的 Secure Elements (如 eSE, UICC 等)。

    GlobalPlatform Open Mobile API
    https://www.globalplatform.org/

    OMAPI API
    https://developer.android.google.cn/reference/android/se/omapi/package-summary.html

    更强劲的性能表现

    ART 性能提升

    Android 9 借助 ART 运行时显著提高了应用的性能表现与运行效率。我们扩展了 ART 对执行特征的使用,以优化应用并减少已编译应用代码的内存占用量。ART 现可使用特征文件信息在设备上重写 DEX 文件,帮助多个常见应用的内存占用减少高达 11%。我们期望借此减少系统 DEX 内存使用量并加快应用启动时间。

    Kotlin 优化

    Kotlin 是 Android 开发的一等编程语言,如果您还未尝试,还在等什么呢?我们在 Kotlin 性能方面进行了长期资源投入,同时持续加大对 Kotlin 的支持,如优化 Kotlin 代码性能。在 Android 9 中,您会看到这项工作已初见成效 —— 我们已经改进了一些编译器优化,尤其是那些针对循环的编译器优化,以实现更好的性能。我们还将继续与 JetBrains 合作,优化 Kotlin 生成的代码。只需保持更新 Android Studio 上的 Kotlin 插件,您就能获得所有最新的 Kotlin 性能更新。

    Kotlin
    https://developer.android.google.cn/kotlin/index.html

    今天,我们还在 Android 9 中发布了更新后的 API —— API 28 SDK (rev. 6),在部分最常用的 API 内加入可空值注解 (nullability annotation)。我们会在近期发布相关文章,提供更多细节信息,敬请期待。

    现代化的 Android

    在 Android 9 中,我们继续投入大量资源,进一步打造更为现代的 Android 平台与运行应用,进而推动我们在安全性、性能和稳定性这三方面长远目标的实现。

    我们在去年就已经宣布过 Google Play 将要求所有应用在 2018 年 11 月之前针对 Android Oreo (targetSdkVersion 26 或更高) 进行更新。因此,若您的应用目标平台版本早于 Android 4.2 (API等级17),用户在安装您的应用时,系统会弹出警告对话框。请阅读迁移指南相关文档。我们期待着您的应用能够充分利用现代 Android 为用户带来更好的体验。

    targetSdkVersion
    https://developer.android.googl.cn/guide/topics/manifest/uses-sdk-element.html#target

    迁移指南
    https://developer.android.google.cn/distribute/best-practices/develop/target-sdk.html

    简单几步,即可上手

    由于 Pixel 用户从今天起就可以开始使用 Android 9,而其他设备也会在接下来的几个月陆续收到更新推送,因此尽快适配您的应用至 Android 9。您只需在 Android 9 Beta 设备或者模拟器上使用 Google Play 安装您目前的应用并进行测试,请确保您的应用在测试过程中运行流畅,界面美观,并能够妥善处理 Android 9 的各项行为变更。

    Android 9 Beta 设备
    https://developer.android.google.cn/preview/devices

    模拟器
    https://developer.android.google.cn/studio/run/managing-avds.html

    Android 9 行为变更
    https://developer.android.google.cn/preview/behavior-changes

    image

    同时,请您留心应用调用非 SDK 接口的情况。Android 9 限制了一些特定非 SDK 接口的访问权限,因此您需要减少应用对这些接口的依赖。请阅读《后续更新 | 减少使用非 SDK 接口以提升稳定性》,了解详细信息。

    在完成必要更新之后,我们建议您立即将应用发布至 Google Play,暂时无需更改应用的目标平台版本。这能帮助您在保障用户体验的同时,继续利用 Android 9 API 优化应用性能并将其逐步迁移至目标平台。

    利用 Android 9 特性和 API,进一步优化您的应用

    当您准备就绪后,请尽情探索 Android 9,并利用新特性与 API 让您的应用臻于完美。

    新特性与 API https://developer.android.google.cn/preview/api-overview.html

    首先,请将官方版 API 28 SDK 、最新的开发工具与映像文件下载至 Android Studio 3.1,或者使用 Android Studio 3.2 最新版本,然后将项目的 compileSdkVersion 和 targetSdkVersion 更新至 API 28。在更改完目标平台版本之后,请确保您的应用支持所有的行为变更。

    Android Studio 3.2 最新版本 https://developer.android.google.cn/preview/setup-sdk.html#get-studio

    在您准备好后,请将 APK 更新发布至 Google Play。我们建议您使用 Google Play 中的 beta 测试功能,先获取一小部分用户的早期反馈,然后再逐渐进行全量发布。

    Google Play 中的 beta 测试功能 https://developer.android.google.cn/distribute/engage/beta.html?utm_campaign=android_launch_npreview_061516&utm_source=anddev&utm_medium=blog

    访问 Android 9 官方网站,阅读文档并获取更多相关信息。点击收看视频或者前往Google I/O Android 播放列表,了解 Android 9 为开发者准备的精彩新亮点。

    Android 9 官方网站 https://developer.android.google.cn/preview/index.html

    Google I/O Android 播放列表 https://www.youtube.com/watch?v=Hzv5-R9XLTc&list=PLWz5rJ2EKKc9Gq6FEnSXClhYkWAStbwlC

    即刻升级设备,体验 Android 9

    从今天开始,Pixel 设备将陆续获取 Android 9 的更新推送。

    其它加入 Beta 项目的设备,如 Sony、小米、HMD、Oppo、Vivo、一加和 Essential 以及所有符合要求的 Android One 设备预计会在今年秋末收到更新推送。与此同时,我们也在和其他合作伙伴展开合作,希望在今年推出更多新 Android 9 设备或升级现有设备以支持新系统。

    此外,适用于 Pixel 设备的系统映像现可供下载 (https://developers.google.com/android/images),支持手动刷机。

    请前往 Android 开源项目资源库中的 Android 9 板块,获取更多 Android 9 的相关资源。

    Android 开源项目 https://source.android.com/

    下一步

    Android 9 发布之际,开发者预览版也就正式结束了。我们将在不久后关闭预览版报错渠道,但是请各位继续向我们提供反馈!如果您遇到任何有关 Android 9 的问题,请通过 AOSP 反馈功能提交新的错误报告。

    提交错误报告

    https://issuetracker.google.com/issues/new?component=190923&template=841312

    另外,我们计划放慢 Android Beta 项目的步调,并移除项目内所有机型。如果您想继续在 Pixel 设备上体验预览版 Android 系统,请点击此处注册,以便继续获取相关项目的信息。

    Android Beta
    https://www.google.com/android/beta

    再次感谢大家此前对预览版和公测版的大力支持。每一位开发者和早期用户都为 Android 9 的诞生提供了必不可少的力量,帮助我们将 Android 9 打造成为卓越平台,为开发者和用户带来精彩体验。谢谢!"

    至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

    如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。

    既然都看到这里,领两个红包在走吧!
    以下两个红包每天都可以领取

    1.支付宝搜索 522398497,或扫码支付宝红包海报。

    支付宝扫一扫,每天领取大红包

    2.微信红包,微信扫一扫即可领取红包

     

    微信扫一扫,每天领取微信红包

    小礼物走一走,来简书关注我

    展开全文
  • Android9.0(androidP)系统API和行为变化

    万次阅读 2018-11-24 22:53:01
    注意事项(AndroidP 特性):   (1),android.os.Build.VERSION.RELEASE ,需要当做字符串类型处理。 (2),依赖的第三方 SDK (特别是加固和热修复框架) 会和系统底层紧密集成 (如使用非公开的接口),而导致应用在 ...

    这篇文章,是Android官方文档的中文版本。


    注意事项(AndroidP 特性):
     

    (1),android.os.Build.VERSION.RELEASE ,需要当做字符串类型处理。

    (2),依赖的第三方 SDK (特别是加固和热修复框架) 会和系统底层紧密集成 (如使用非公开的接口),而导致应用在 Android 版本升级时无法正常运行。。。注意三方sdk版本更新。

    (3),直接使用底层的非 SDK 接口有可能会绕过一些 Android 对用户的安全性和隐私性方面的保护,不但影响用户体验、妨害用户隐私,也很可能会被 Google Play Protect 判定为恶意软件而提示用户卸载应用。

            在 Android N 当中,我们限制了 C/C++ 代码所能使用的符号,从而确保使用 C++ 代码的 app 能够始终对接稳定的 NDK 接口,而不会因使用不稳定的非 NDK 接口而频频奔溃。自 Android P 起,我们将进一步提升系统稳定性,扩展此类限制至 Java 语言 SDK 接口。

    (4),dex2oat 就被设计为系统内部使用的编译部署工具,Android 从来都未支持过开发者直接调用 dex2oat 的场景。

            从 Android O 开始,BaseDexClassLoader 和 DexClassLoader 构造函数中的 “optimizedDirectory” 参数已废弃,并在加载 dex 文件时不起作用。

    (5),篡改 so 文件并不会带来安全性的提升 (很多工具可以重新生成元数据),反而可能导致应用无法在未来的 Android 版本中启动 (由于动态链接器可能执行更严格的检查)。。不要修改 Android Studio 生成的 dex 和 so 文件。

    (6),“This app was built for an older version of Android and may not work properly
    升级您应用的 targetSdkVersion 至最新版本.

    (7),Android O 开始支持特长屏幕.
            如果自适应式 UI 不适合您的场景,可以考虑在 manifest 中的 <activity> 内设置 resizableActivity = false,并加上 android:MaxAspectRatio 来声明最大支持纵横比。这会在特长屏幕的设备上启用兼容模式,把应用边缘的显示空间以黑色填充。

     

    发生的变更:

    (1),加密变更1

            从 Android P 开始,对于 AndroidOpenSSL (也称为 Conscrypt) 提供程序所重复的、来自于 BC 提供程序的部分功能,我们计划将予以弃用。此举的目的不是因为对 BC 提供程序的实施安全存在疑虑,而是因为重复功能会造成额外的成本和风险,却无法带来太多益处。    如果您按名称或实例指定提供程序 - 例如,Cipher.getInstance("AES/CBC/PKCS7PADDING", "BC") 或Cipher.getInstance("AES/CBC/PKCS7PADDING", Security.getProvider("BC")) - 则 Android P 的行为将取决于您应用的目标 API 级别。对于目标级别为 Android P 或之后版本的应用,调用会抛出 NoSuchAlgorithmException。

    (2), 加密变更2
            Nougat 开始弃用 Crypto 提供程序。以 API 24 (Nougat) 或之后级别为目标的应用程序请求则会失败.

            在 Android P 中,我们计划完全移除 Crypto 提供程序。在移除后,所有对 SecureRandom.getInstance("SHA1PRNG", "Crypto") 的调用都会抛出 NoSuchProviderException。

    (3),加密变更3

            P中在Conscrypt中对算法加入了额外的实现,适合参数有AES,DESEDE,OPEP,和EC(仅支持命名的曲线)。此外Android P中已弃用以上参数以及许多算法的BouncyCastle版本。

    (4),其他加密变更
        * 在使用 PBE 密钥的情况下,若您的应用未能提供 Bouncy Castle 要求的初始化向量,那么您将收到警告信息;
        * ARC4的 Conscrypt 实现允许您指定 ARC4/ECB/NoPadding  或者 ARC4/NONE/NoPadding;
        *Android P 移除了 Crypto Java Cryptography Architecture  (以下简称 JCA) 加密服务提供商。因此,若您的应用调用 SecureRandom.getInstance("SHA1PRNG", "Crypto"),将会引发 NoSuchProviderException 异常;
        * 应用从大于密钥结构的缓冲区中解析 RSA 密钥时,不再会引发异常。

    (5),后台应用程序用户输入以及数据隐私

    Android P 设备上后台运行,将会受到来自系统的以下限制:
    1>您的应用无法访问麦克风和摄像头。
    2>处于 “连续模式 (continuous)” 的传感器 (如加速传感器或者陀螺仪) 将无法接收事件。
    3>处于 “变化模式 (on-change)” 或者 “单次模式 (one-shot)” 的传感器无法接受事件。
    **若您的应用须在 Android P 设备上检测传感器事件,请使用前台服务。

    (6),设备安全变更

        运行 Android P 的设备提供密钥轮替以及系统调用保护。不论您的应用针对哪个级别的 API,此类变更都能显著提升应用安全性。

    (7),应用兼容性变更

        平台将限制使用非 SDK 接口。不论开发者是直接还是间接 (如通过反射、JNI 等) 试图访问这些接口都会受到限制。在开发者预览版 1 (DP1) 中,您的应用可以继续访问此类限制接口,不过平台会通过显示 Toast  以及记录日志消息引起开发者注意。若您的应用显示此类 Toast,您必须弃用限制接口并改用另一种实现策略。若您认为没有可行的替代接口,请在留言给谷歌官方,要求重新考虑该限制是否合理。

    (8),更新 ICU 库

            平台使用的 ICU 库已更新至 ICU 58 版本;Android 8.0 (API 版本 26) 和8.1 (API 等级 27) 使用的 ICU 库则更新至 ICU 60 版本。

            ICU 可将公开 API 迁移至 android.icu 软件包,同时 ICU 也供 Android 平台内部使用,用于支持国际化开源项目,譬如说,开发者可以利用 ICU 在 java.util、 java.text 和 android.text.format 中实现 Android 类。此版本 ICU 包括一系列小而实用的更改项,如 Emoji 5.0 数据支持、日期 / 时间格式优化 (详情可阅读 ICU 59 和 ICU 60 发布说明)。开发者们须要尤其注意以下几点:
            * 平台时区处理方式更变平台更好地处理 GTM (格林威治标准时间) 以及 UTC  (协调世界时)
            * java.text.SimpleDateFormat 现使用 ICU 为 UTC 和 GMT 提供显示名称
            * 解析 zzzz 能识别诸如 "Universal Coordinated Time" 和 "Greenwich Mean Time" 的字符串
    Asia/Hanoi 不再属于被认可的时区

      * 即使在解析合法 CURRENCY 文本时,android.icu.text.NumberFormat.getInstance(ULocale, PLURALCURRENCYSTYLE).parse(String) 方法可能抛出 ParseException 异常。开发者可以调用NumberFormat.parseCurrency 规避该问题。Android 7.0  (API 等级 24) 版本开始引入NumberFormat.parseCurrency 函数,用于处理类似 PLURALCURRENCYSTYLE 的 CURRENCY 文本。

    (9),不再支持 Android 安全加密文件

        * Android 加密文件 (ASEC) 最早在 Android 2.2 (API 等级 8) 引入,用于支持 apps-on-SD-card 功能。Android 6.0 (API 等级 23) 已替换并弃用了安全加密文件,同时引入了 “可采用的 SK 卡 (adoptable SD card)” 功能;

        * Android 8.0  (API 等级 26) 阻止往安全加密文件中安装新应用。Android P 的开发者预览版则彻底移除了安全加密文件功能。

    (10),测试套件构建行为变更

        Android P 移除了 TestSuiteBuilder  类中的 addRequirements() 方法,并且将 TestSuiteBuilder 类标记为弃用。此 addRequirements() 方法要求开发者提供隐藏 API 类型的参数,使得 API 无效。

    (11),测试从平台中移除的库

            在 Android 8.1 (API 等级 27) 或更低版本系统中,Android 平台提供一系列类,如 ActivityInstrumentationTestCase2,供开发者在应用内创建测试。进行编译时,开发者可以在构建android.jar 文件时可以获取这些类。内置测试架构尽管十分简便,但它要求开发者针对 android.jar 提供的 JUnit 版本进行测试,因此会对依赖其它版本 JUnit 进行的构建和测试造成一定困难。
            为了让开发者能够灵活地构建以及测试定制化或三方逻辑,Android P 从平台中移除了测试类。不过,将测试库仍然作为可选依赖项提供。
    // Required if using classes in android.test.runner
        useLibrary 'android.test.runner'
    // Required if using classes in android.test.base
        useLibrary 'android.test.base'
    // Required if using classes in android.test.mock
        useLibrary 'android.test.mock'
    <!-- You don't need to include android:required="false" if your app's
         minSdkVersion is 'P'. -->

    <uses-library android:name="android.test.runner"  android:required="false" />

    (12),Java UTF 解码器

            UTF-8 是 Android 的默认字符集。开发者可利用类似 String(byte[] bytes) 的字符串构造函数解码 UTF-8字节串。Android P 中 UTF-8 解码器更为严格,同时遵循 Unicode 标准,即:
        * 非最短形式编码的 UTF-8, 如 <C0, AF>,现在属于不规范编码;
        * 代理形式编码的 UTF-8,如 U+D800..U+DFFF,现在属于不规范编码;
        * 最大字节部分由 U+FFFD 代替,拿字节串 “41 C0 AF 41 F4 80 80 41” 为例,该字节串最大字节为 “C0”,“AF”  和 “F4 80 80” 。字节串 “F4 80 80 80” 的起始部分可以是 “F4 80 80”,但是任何规范字节串都不能以 “C0” 开头。因此,输出应为 “A\ufffd\ufffdA\ufffdA”;

        * 若要在 Android P 上解码修正 UTF-8 / CESU-8 代码,请调用 DataInputStream.readUTF() 方法或者 NewStringUTF() JNI 方法。

    (13),使用证书验证主机名称

            RFC 2818 描述了两种方法匹配主机名与证书:使用 subjectAltName (SAN) 扩展中的已有名称;若无 SAN 扩展,则使用 commonName (CN)。

            不过,RFC2818已弃用 CN;因此 Android 也不再支持使用 CN。要验证一个主机名,服务器必须提供含有匹配 SAN 的证书;若证书中的 SAN 和主机名不匹配,该证书不再被信任。

    (14),网络地址查找可能导致网络违规

            涉及域名解析的网络地址查找可能须要使用网络 I / O,因而属于阻塞操作 (blocking operation);而阻塞造作是导致中断和卡顿 (jank) 的主要元凶。
            StrictMode 类是一款帮助开发者检测代码问题的开发工具,它能够检测到由涉及域名解析的网络地址查找导致的网络违规。
            开发者不可以在 StrictMode  激活状态下待机应用,否则,应用可能产生新的异常,比如:使用 detectNetwork() 或 detectAll() 方法获取策略来侦测网络违规时,会产生 NetworkOnMainThreadException 异常。

            解析数字 IP 地址不属于阻塞操作,且 Android P 和更低版本 Android  系统采用同样的解析方法。

    (15),Socket 标记

            在版本低于 Android P 的平台中,如果用 setThreadStatsTag() 方法标记某个 socket,那么通过 ParcelFileDescriptor 容器使用 binder IPC 将该 socket 传送到其它线程时,该 socket 会被取消标记。

            从 Android P 开始,即使使用 binder IPC 将标记的 socket 传送到其它线程中,此标记也不会被取消。该变更会影响网络流量统计数据,比如,在调用 queryDetailsForUidTag() 方法时。您可以在传送 socket 标记到其它线程之前,调用 untagSocket() 来保留以前的行为。

    (16),报告 socket 中可用字节数量

            触发shutdownInput() 方法后,调用 available() 方法会返回 0 值。

    (17),更详细的 VPN 网络能力报告

            在低于 Android P 版本的平台中, NetworkCapabilities 类仅报告部分 VPN 信息,如包含 TRANSPORT_VPN 但不含 NET_CAPABILITY_NOT_VPN。这让应用开发者难以确定 VPN 的使用是否对用户产生费用。比如说,检测 NET_CAPABILITY_NOT_METERED 并不能确定应用使用的网络是否按流量计费。
            从 Android P 起,当 VPN 调用 setUnderlyingNetworks() 方法时,系统会合并所有底层网络的传输以及能力,并将合并后的结果作为 “VPN 网络的有效能力” 返回。

            已经设定过 NET_CAPABILITY_NOT_METERED 的开发者们从 Android P 开始就可以接收到 VPN 以及底层网络的能力

    (18),应用不再能访问 xt_qtaguid 文件夹中的文件

            应用不再能直接读取 /proc/net/xt_qtaguid 文件夹中的文件,这一举措是为了与部分发售时就运行 Android P 的设备保持一致,而这些设备根本没有此类文件。

            诸如 TrafficStats  和 NetworkStatsManager 此类依赖这些文件的公开 API 不会受到影响。但是,不受支持的 cutils 功能,如 qtaguid_tagSocket(),可能无法在不同的设备上按预期工作 (或者完全不能工作)。

    (19),强制性 FLAG_ACTIVITY_NEW_TASK 要求

    在 Android P 中,除非使用了 FLAG_ACTIVITY_NEW_TASK  intent flag,您不能在非 Activity 场景下启动 Activity。若您未使用这个 intent flag 就尝试启动 Activity,系统无法正常开启活 Activity,并会在日志中留下相应信息。

        * 注意:FLAG_ACTIVITY_NEW_TASK 标签的要求属为预期行为,并且从 Android N 就对此作了强制要求。但是 Android N 系统中的错误暂时导致此要求没有被强制执行。

    (20),屏幕旋转变更

            Android O 用户可在快速设定或屏幕设定界面进行操作,在自动旋转和固定竖屏模式之间进行选择。Android P 对竖屏旋转模式引入几大重要变更。竖屏模式更名为 “旋转锁定”,并且只有当自动旋转模式关闭情况下,该模式才能被激活。自动旋转模式暂无变更。
            当设备处于旋转锁定模式时,用户可以将屏幕锁定在顶层可见 Activity 支持的任何方向。Activity 不能假定屏幕永远处于竖屏状态。如果顶层 Activity 在自动旋转模式下支持多个方向,旋转锁定模式也应给予相同选项,但可根据 Activity 的 screenOrientation 设置规定列外情况 (详情见下表)。
            请求特定方向 (如,screenOrientation=landscape) 的 Activity 会忽略用户锁定偏好,并与 Android O 行为一致。
            可在 Android Manifest 中的 Activity 级别的选项中设置屏幕方向偏好,或者调用 setRequestedOrientation() 来设定。
            WindowManger 在处理 Activity 旋转时会使用用户屏幕旋转偏好设置,而 “旋转锁定模式” 也是通过设置该偏好来工作的。在下列情况中,用户屏幕旋转偏好可能会发生更改。请注意,Activity 倾向于回到竖屏状态:
            当用户接受旋屏建议时,屏幕旋转偏好会更改至建议状态;
            当用户跳转到只支持竖屏的应用时 (包括锁屏或者桌面启动器),屏幕旋转偏好会更改至竖屏状态。


    Android P 以及之后的变更

    (21),前台服务

        针对 Android P 或更高平台开发的应用必须请求 FOREGROUND_SERVICE 权限才能使用前台服务。 FOREGROUND_SERVICE 属于普通级别请求,因此提出请求后,系统会自动授予。

             若应用未提出 FOREGROUND_SERVICE 请求就试图创建前台服务,系统会抛出 SecurityException 异常。

    (22),设备序列号访问限制

            Android 8.0  (API等级26) 已弃用 Build.SERIAL 字段;从 Android P 开始,Build.SERIAL 始终设定为 "UNKNOWN"。此项变更能够保护用户隐私。
            若您的应用须要访问设备硬件序列号,您应该请求 READ_PHONE_STATE 权限,然后调用 getSerial()。

    (23),视图焦距

            零区域视图 (即长或宽的值为 0) 不再能够设定焦点。
            另外,在 touch-mode 下 Activity 不再隐式分配初始焦点,而是要求开发者在需要的情况下对初始焦点提出显式要求。
             Android P 应用允许 CSS Color Module Level 4 行为,用于操作 4 位和 8 位十六进制 CSS 颜色。
            Chrome 从 52 版本开始支持 CSS Color Module Level 4,但是 WebView 目前暂时禁用该功能,因为存在现有 Android 应用在 Android ordering (ARGB) 中包含 32 位十六进制颜色,这可能会导致渲染错误。

    (24),文档滚动元素

            在 Android P 之前,滚动位置被设置在 body 元素上,而根元素的滚动值为 0。Android P 支持符合标准的行为,即滚动元素为根元素。
        此外,根据目标 SDK 不同,直接访问 document.body.scrollTop, document.body.scrollLeft, document.documentElement.scrollTop 或 document.documentElement.scrollLeft 会产生不同行为。要访问视口滚动值,请使用 document.scrollingElement (如果可用)。


    (25),关于一个class.(这个是2018/11/20经过一个紧急上线,发现的P版本的问题)java.lang.NoClassDefFoundError,Lorg/apache/http/ProtocolVersion;

    Fatal Exception: java.lang.NoClassDefFoundError

    Failed resolution of: Lorg/apache/http/ProtocolVersion;

    Caused by java.lang.ClassNotFoundException

    Didn't find class "org.apache.http.ProtocolVersion" on path: DexPathList[[zip file "/data/app/com.chope.gui-kMIcnlrITdDG4e-XmYiKMw==/base.apk"],nativeLibraryDirectories=[/data/app/com.chope.gui-kMIcnlrITdDG4e-XmYiKMw==/lib/arm, /data/app/com.chope.gui-kMIcnlrITdDG4e-XmYiKMw==/base.apk!/lib/armeabi-v7a, /system/lib, /product/lib]]
    通过异常堆栈可以看出来,这是一个类没有加载到。原因就是如果你 target 28(P)build 28,新版本不在包含 httpClient的所有,关于httpClient不在多说,googleAndroidSdk在经历很多版本,从不支持到移除部分Api,到现在全部移除,可以说经历了很多,这下子终于拿掉了,但是很多三方SDK底层还在封装使用相关Class。
    两种解决办法:
    1,target < 28P,编译时,带入相关jar包class.
    2,在manifest 中,配置 <uses-library android:name="org.apache.http.legacy" android:required="false"/>如果不好使就改成true.
    还有一个类似这个,就是在gradle中配置 useLibrary 'org.apache.http.legacy.'

    CLEARTEST communication to life.115.com not permitted by network security policy

            Android P 限制了明文流量的网络请求,非加密流量请求都会被系统禁止掉。
    解决方案:
           在资源文件中新建xml:

    resource:
    <?xml version="1.0" encoding="utf-8"?>
        <network-security-config>
            <base-config cleartextTrafficPermitted="true"/>
        </network-security-config>
    
    
    manifest:
    <application
        android:networkSecurityConfig="@xml/network_security_config">
    <uses-library
        android:name="org.apache.http.legacy"
        android:required="false"/>
    
    </application>

     

    java.lang.illegalArgumentException: Invalid Region.Oponly INTERSECT and DIFFERENCE are allowed

    if(Build.VERSION.SDK_INT >= 26){
        canvas.clipPath(mPath);
    }else{
        canvas.clipPath(mPath,Region.Op.REPLACE);
    }


    ******************************************************************************

    Android P Beta 版本:

    • Get Android P Beta on a Pixel 2, Pixel 2 XL, Pixel, or Pixel XL device
    • Get Android P Beta on selected partner devices
    • Set up an Android Emulator to run Android P Beta

    Android 2018 I/O 大会第一批正式分发手机品牌:

    Pixel、Pixel XL、Pixel 2、Pixel 2 X,Nokia 7 Plus 6GB+64GB版本,OPPO R15,索尼Xperia XZ2,vivo X21,小米MIX 2S,

    展开全文
  • AndroidO(8.0) 和 Android P(9.0)

    万次阅读 2018-05-30 09:47:14
    大早上躺床上就索性百度了下p和o 发现百度百科的说明还是很简洁易懂的2017年8月22日,谷歌正式发布了Android8.0的正式版,其正式名称为:Android Oreo(奥利奥) 。奥利奥版安卓的聚焦重点是电池续航能力、速度和...

    大早上躺床上就索性百度了下p和o 发现百度百科的说明还是很简洁易懂的

    2017年8月22日,谷歌正式发布了Android8.0的正式版,其正式名称为:Android Oreo(奥利奥)  。


    奥利奥版安卓的聚焦重点是电池续航能力、速度和安全,让用户更好地控制各种应用程序,加大了对App在后台操作的限制。这种限制在一定程度上延长了安卓机在“睡眠”(Doze)模式下的电池的续航能力,它让不在使用的App进入睡眠状态,使用时再唤醒。它要达到的目标是在不卸载程序、不改变用户使用习惯的情况下,减少后台应用的用电。同时,这种对后台应用的限制也会加快运行的速度。

    1.通知中心
    用户在通知界面可以发现顶部的快捷键有了更充裕的空间,并且根据网络大数据的用户使用频繁度调整了这几个快捷键的顺序;并且长按推送消息可以看到一个开关,操作它可以开启和关闭这个该应用的未来所有通知。
    2.设置菜单
    在新的AndroidO系统中,设置的界面有了大幅变化,主菜单的覆盖性变得更广,更多的功能将在子菜单中体现,并且在菜单界面中重新设计了很多图标。
    3.PinnedShortcuts
    安卓创造出了PinnedShortcuts功能,类似苹果的3DTouch,长按一个软件后可以弹出子菜单,然后就可以通过这个方式快捷的使用该应用的部分功能。
    4.图标形状

    新的系统中开发者可以使用不同的应用图标,比如圆角矩形或者圆形图标,不过所有的图标需要保证是同一个形状,不能有一个方一个圆这样“个性”的样式出现。

    5.后台限制

    AndroidO将进一步优化后台程序,减少应用在没完全退出后占用系统的资源,并且减少电量的消耗。

    6.安装限制
    新系统中用户可以在权限设置中添加安装限制功能,这样可以有效的避免带有中国特色的“全家桶”行为。
    7.TensorFlowLite
    这个新功能并不会直接体现在手机和系统中,它是谷歌的一项新技术,用来把人工智能在更多的软件上继续拓展,并提高工作处理的效率,让你的手机更“聪明”。
    8.分屏

    在AndroidO中,分屏画中画功能得到了强化,变得更加流畅,而且悬浮窗可以随意拖动位置,然后在主屏幕中继续工作

    9.NotificationDots

    在谷歌的Pixel手机上,安卓8还新加了通知功能Notification Dots,会标出用户的行程、信息等,有些通知还可以被设定为稍后提醒。此外长按某个应用图标现在可以显示一些信息,与iOS上的3D Touch类似,这项功能在安卓7.0上已经有所体现

    10.SmartTextSelection
    系统将会预测用户将使用某些电话或者其他选项出现在将会用到的应用中,举个例子就是如果邀请朋友来吃饭,系统会根据发送的地址来开启地图并且导航   。
    11.自动保存密码
    这个功能将会保存用户的部分帐号和密码,用于在网站或者应用中的快速登录,效率提升了不少 。
    12.GooglePlayProtect
    这个功能主要用于GooglePlay中,下载的应用和游戏将会经过它的排查,来看看是否是有害甚至携带病毒的应用,不过国内用户可能不能访问GooglePlay 。
    13.应用加速
    在AndroidO中,大部分应用的启动速度将会快上一倍,这个要归功于新系统的优化,使后台占用资源减少,并且对并发进程等问题的处理更加出色,也是个相当有用的功能  。
    14.字体优化
    AndroidO中谷歌还增加了对系统字体的更多支持,开发者可以自行更改字体样式,让用户有了更多字体的选择 。
    15.表情符号

    安卓8还带来了符合Unicode 10标准的表情符号,比原来新加超过60个表情符,这也是比较明显的改变之一


    Android P  Pistachio Ice Cream,开心果冰淇淋 是谷歌首个开发者预览版,对“刘海屏”设备进行了适配,使用WiFi RTT实现室内精确定位,消息通知栏的改进,多摄像头API以及神经网络API 1.1版本等升级。

    首个Android P预览版亮点很多,第一个改变就 很“接地气”,那就是适配类似iPhone X的顶部凹槽屏幕设计,为“刘海屏”设备进行了适配。在开发者模式中,原生系统已经可以模拟“刘海屏”的凹口并对拥有通知栏进行了适配和优化(时间移动到了左边),系统中的名称翻译过来可以把“刘海屏”称之为“凹口屏”。
    此外,新的Android系统还改进了通知栏的功能性和可见性,简单来说,就是让通知栏的实用性更高,比如直接在这个地方进行回复信息,而也能查看更多的图片、消息等,同时新系统还允许同时接收多个摄像头的数据流,这样可以用来进行焦外成像、建立立体视觉等功能
    谷歌还在Android P中加入了WiFi Round-Trip-Time技术,这样可以即便设备进入了室内,也能通过多个WiFi连接点间的距离来实现定位,同时还进一步优化了交易、NFC支付的API接口等。
    新系统可以在支持HDR VP9的设备上播放来自于YouTube和Play Movies的HDR视频。HEIF允许更高质量的图片压缩,同时,Android P的多媒体APIs也重新编写了,增加了可用性。

    Android P还进一步优化了系统的效率,比如安装应用时间更快,系统整体运行更流畅,设备续航性上进一步提升,同时限制空闲应用程序使用手机麦克风、摄像头、和其他传感器,并且谷歌还大大加强了系统的安全性,比如添加指纹授权模块,来在本地设备中更好的管理指纹。 

    功能特点
    新功能
    Android 9.0的新功能包括:谷歌统一推送升级、深度集成Project Treble模式、更加封闭、原生支持通话录音等。
    1.全面屏的全面支持
    2.通知栏的多种通知
    3.多摄像头的更多画面
    4.GPS定位之外的WiFi定位
    5.网络还有神经网络
    6.Material Design迎来2.0时代
    新设计
    Android 9.0将会新增支持类似于iPhone X的刘海屏设计,具体体现为优化屏幕内容显示,能够让系统或者应用充分利用整块屏幕,尤其是两只“猫耳朵”位置。在Android 9.0系统当中,谷歌还会进一步将谷歌助手集成到应用中、进一步优化电池续航、支持多屏和可折叠屏等。
    新特性
    全局黑夜模式
    为具备Always-on display(屏幕常显)功能手机加入原生的天气支持。

    展开全文
  • Android O 与 Android P

    千次阅读 2019-06-15 23:26:12
    Android P相对Android O 的优化 1、系统 UI 更新 2、异形屏和双摄像头官方API 3、ART性能提升 4、省电优化,限制传感器的使用 5、一些小操作的优化 6、使用 WiFi RTT 进行室内定位;全新的 MessagingStyle 消息通知...
  • Android O/Android P行为变更及适配

    千次阅读 2018-08-08 09:36:34
    Android O行为变更: 后台服务运行的限制: 当应用进入后台状态几分钟后,android系统就会将app视为空闲状态并停止该app的后台服务。所以不能依赖后台service做定时性的任务。 前台服务启动的限制: 在 Android...
  • Android P新特性

    千次阅读 2018-05-22 16:25:27
    转:http://gityuan.com/2018/04/08/android_p/引言2018年3月8日,谷歌发布了Android P的预览版,预计今年的Q3季度发布final release版本,有不少文章从开发者角度介绍了Android P的新特征,初步来看给感觉这次大...
  • Android P 在Google IO2018正式发版,全新的手势操作选项。底部虚拟键将由小白点和一颗返回键取代。通过轻触回到主页、长按呼出语音助手。新的特性主要有: 利用 Wi-Fi RTT 进行室内定位 刘海平API支持 ...
  • 安卓系统升级到Android P后打开应用出现Detected problems with API compatibility问题,如下图 通过查询发现是 Android P 后谷歌限制了开发者调用非官方公开API 方法或接口,也就是说,你用反射直接调用源码就会有...
  • Android 的一些比较好的开源代码项目

    万次阅读 2011-11-28 14:18:21
    Android PDF 阅读器 http://sourceforge.net/projects/andpdf/files/ 个人记账工具 OnMyMeans http://sourceforge.net/projects/onmymeans/develop Android电池监控 Android Battery Dog ...
  • Android 一个简易的自定义软键盘

    万次阅读 热门讨论 2015-12-17 17:35:02
    Android一个简易的自定义车牌输入软键盘,通俗易懂、短小精悍。
  • android Studio打开 报错 https://code.google.com/p/android/issues Internal error please report to https://code.google.com/p/android/issues
  • 配置 ANDROID_HOME 环境变量

    万次阅读 2018-08-09 10:51:27
    配置 ANDROID_HOME 环境变量 React Native 需要通过环境变量来了解你的 Android SDK 装在什么路径,从而正常进行编译。 具体的做法是把下面的命令加入到~/.bash_profile文件中: 如果你不是通过Android Studio...
  • Android 9.0 (P)

    千次阅读 2018-12-20 09:02:04
    标题重点内容 2018年3月8日,开发者预览版发布。 2018年3月14日,首发预览版。标题参考资料 减少使用非 SDK 接口,提升系统稳定性 Android P 开发者预览版 · 操作指南 ...突破Android P(Preview 1)对调用
  • android: 大量开源项目源代码分享

    千次阅读 2011-11-21 14:20:35
    Android PDF 阅读器 http://sourceforge.net/projects/andpdf/files/ 个人记账工具 OnMyMeans http://sourceforge.net/projects/onmymeans/develop Android电池监控 Android Battery Dog http://sour
  • android TextView加载html内容并加载图片

    万次阅读 2013-01-28 13:04:35
    package com.example.textviewfromhtml; import java.net.URL; import android.app.Activity; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.StrictMode; import andr
  • Android优秀开源项目大全

    万次阅读 多人点赞 2013-04-27 14:30:51
    本文章由Jack_Jia编写,转载请注明出处。  文章链接:... ...以下是本人日常工作中收集的比较不错的Android开源项目,欢迎博友提供未收录的网址。 roottools:
  • Android自定义键盘的简单实现

    万次阅读 2017-03-20 20:13:22
    自定义键盘的简单实现概述突然发现好多软件都使用了自己定义的软键盘。自己就想着先把这块坑先踩踩把,以后掉坑的时候不至于帅的太惨。言归正传,对于自定义软键盘。需要用到系统提供的两个类:Keyboard和...
  • Android 自定义车牌键盘

    千次阅读 热门讨论 2018-05-18 14:15:44
    最近在做物流的项目,需要输入车牌号,传统的输入体验并不好,来回切换还要手打,便有了自定义键盘的想法。 其实这个车牌需求并不多见,物流、租车、停车相关的会常见一些,好在有前辈已经铺好路了 ...
  • Android 动画 - ScaleAnimation 缩放动画使用(附图)

    万次阅读 多人点赞 2016-06-07 15:14:48
    ScaleAnimation:缩放动画同样,创建ScaleAnimation也有两种方式 XML文件+Java代码 Java代码方式 XML文件+Java代码效果图: 文件目录:res/anim/scale.xml <scale xmlns:android="http://schemas.android.com/apk/r
1 2 3 4 5 ... 20
收藏数 484,711
精华内容 193,884
关键字:

android p