Android L API Overview
L 开发者预览版主要针对早期开发者和测试人员。如果你对Android Framework的方向感兴趣,欢迎尝试L开发者版本,并且给予我们宝贵的意见。
- 提前编译
- 垃圾回收的改进
- 调试支持的改进
- 你的App使用Java Native Interface(JNI)运行C/C++代码
- 你使用开发工具生成非常规代码(例如一些混淆器)
- 你使用一些技术与压缩垃圾回收不一致。(ART不实现压缩垃圾回收,但是压缩垃圾回收将在Android Open-Source Project里进行开发)
- 更新或者移除不合适的资源
- 在Notification里系统自动倒置操作图标,使用android.app.Notification.Builder.setColor()在你图标后的圆圈里设置一个颜色。
- 在操作图标和主要的Notification图标里,系统忽略所有无透明度的面板,你应该假设所有的图标都是有透明度的
- 材料主题
- 视图阴影
- RecyclerView Widget
- 可拉动画和视觉效果
- 材料设计动画和Activity切换效果
- 基于视图状态的视图参数动画
- 可定制的UI Widget和带有你控制的颜色调色板的App栏
android.app.Notification.Builder.setVisibility()
来控制可见权限,其中设置值包括:
- VISIBILITY_PRIVATE,显示基本信息,例如Notification图标,隐藏Notification全部内容
- VISIBILITY_PUBLIC,显示Notification全部内容
- VISIBILITY_SECRET,不显示任何内容,包括Notification图标
- setCategory():根据消息分类,当设备处于非打扰模式时,告诉系统如何处理你的App Notification。
- setPriority():如果Notification有声音或者振动,设置优先级为PRIORITY_MAX或者PRIORITY_HIGH的Notification将会出现在小的浮动窗口上。
- addPerson():允许你添加人列表到Notification,你的app可以使用这些来暗示系统将这些人集中在一起通知,或者通知这些人是很重要的。
android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT
插入一个逻辑跳出以便系统可以把你的activity作为一个新的任务,你也可以通过在清单文件中定义<activity>属性documentLaunchMode="intoExisting"
或者"always"来获取这种效果。
你也可以标记,当所有的activity关闭时,从历史记录中删除该任务。当开启任务的顶部activity,使用
android.content.Intent.FLAG_ACTIVITY_AUTO_REMOVE_FROM_RECENTS,你也可以通过在清单文件里设置<activity>属性autoRemoveFromRecents=“true”来实现该效果。
android:maxRecent来设置,可以设置的最大任务数量是每个用户100个。
- 计算做色器
- 分离做色器对象
- 间接绘画指令
- 多重采样和纹理模板
- 做色语言改进
- 先进的混合模式和调试的扩展
- 对OpenGL ES2.0和3.0的向后支持
<uses-feature android:glEsVersion="0x00030001" /> ...</manifest>
- 保证片段着色器支持着色器存储缓冲区,图像,和原子(片段着色器支持在OpenGL ES3.1是可选的)
- 棋盘花纹和几何着色器
- ASTC(LDR)纹理压缩格式
- 插值和阴影的预先样式
- 不同的混合模式为每个颜色附件在一个帧缓冲中
- 你的App提供浮点格式的音频数据(android.media.AudioFormat.ENCODING_PCM_FLOAT),这允许更大的动态范围,更加一致的精度和更大的回旋空间。在中间计算浮点算术尤其有用。回放终点使用整数格式音频数据
- 你的App提供ByteBuffer音频数据,由MediaCodec提供相同的格式。
- 在某些App里,WRITE_NON_BLOCKING选项可以简化缓冲和多线程
android.intent.action.OPEN_DOCUMENT_TREE
Intent 系统展现所有的支持子树选择的
DocumentsProvider实例,使用户浏览并且选择目录。返回的URI表示访问选定的子树,你可以使用DocumentsContract.buildChildDocumentsUriUsingTree()
和DocumentsContract.buildDocumentUriUsingTree()
,ContentResolver.query()来探索子树
DocumentsContract.createDocument()
方法允许您创建新文件或目录下的子树。管理已经存在的文档,使用 DocumentsContract.renameDocument()
和DocumentsContract.deleteDocument()
,在发行之前检查
DocumentsContract.Document.COLUMN_FLAGS来
验证提供者对这些调用的支持。
DocumentsProvider,希望支持子树选择,实现
DocumentsProvider.isChildDocument()和在你的
Root.COLUMN_FLAGS里
包括 Documents.Contract.FLAG_SUPPORTS_IS_CHILD
.
- 创建
ConnectivityManager
- 创建android.net.NetworkRequest对指定的网络和传输你的app需要的类型
- 搜索合适的网络,调用 ConnectivityManager.requestNetwork()或者ConnectivityManager.registerNetworkCallback(),传入NetworkRequest 和实现ConnectivityManager.NetworkCallbackListener接口
L开发者预览版介绍 android.bluetooth.le.ScanFilter 类以便你的app可以搜索感兴趣的特定类型设备。开启搜索蓝牙LE设备,调用android.bluetooth.le.BluetoothLeScanner.startScan(),传入过滤器列表,在这个方法的调用,如果蓝牙LE广告没有被发现,你必须实现android.bluetooth.le.ScanCallback来获取结果
- Android Beam现在在分享按钮中是可用的
- 通过调用android.nfc.NfcAdapter.invokeBeam(),你的app可以在用户的设备里调用Android Beam来分享数据。这就避免了用户需要手动点击设备来完成与另一台NFC设备完成数据传输
- 你可以使用新的
android.nfc.NdefRecord.createTextRecord()
方法来创建包含UTF-8数据的NDEF - 如果你正在开发一款付款app,你现在通过调用 android.nfc.cardemulation.CardEmulation.registerAidsForService(),有能力动态注册一个NFC 应用ID(AID)来设置首选卡模拟服务,当一个特定的activity在后台运行时,它将被使用。
android.app.job.JobScheduler
API,在之后或者特殊条件下,通过定义系统工作来异步运行,以此让你优化电源生命周期。在这些情况下非常有用:
- 该app有可以延后执行的无用户界面的工作
- 该app有你希望单位时间插入的工作
- 该app有需要网络访问(或者需要WIFI连接)的任务
- 该app有大量的你希望定期运行的任务
android.app.job.JobInfo对象,
这个对象提供了一个精确的描述标准用于调度。
- 该设备正在充电
- 该设备连接无计量网络
- 该系统认为该设备空闲
- 延迟或在一个特定的期限完成
<span style="font-family:Microsoft YaHei;font-size:14px;">JobInfo uploadTask = new JobInfo.Builder(mJobId, mServiceComponent).setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED).build();JobScheduler jobScheduler =(JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE)
jobScheduler.schedule(uploadTask);
</span>
- 电源相关的历史活动
- 设备统计数据
- 使用每一个UID和系统组件的近似电源量
- 手机每一个app每一毫秒的数据包
- 系统UID合计统计数据
- AppUID合计总计数据
<span style="font-family:Microsoft YaHei;font-size:14px;">$ adb shell dumpsys batterystats --charged <package-name>
</span>
<sdk>/tools找到
Battery Historian
<span style="font-family:Microsoft YaHei;font-size:14px;">$ adb shell dumpsys batterystats --enable full-wake-history
</span>
<span style="font-family:Microsoft YaHei;font-size:14px;">$ adb shell dumpsys batterystats --reset
</span>
<span style="font-family:Microsoft YaHei;font-size:14px;">$ historian.par [-p powerfile] bugreport.txt > out.html
</span>
L开发者预览版为企业级环境运行的app提供新的功能。一个设备管理者可以在设备里初始化一个管理线程来添加共在并且独立管理概要,如果用户已经拥有一个存在的私人账户,与托管配置文件相关联的应用程序将会出现在非托管应用程序在用户的Launcher、 最近的应用程序屏幕和通知上。通过在Intent上发送ACTION_PROVISION_MANAGED_PROFILE 来开启管理线程,如果返回时成功的,系统会调用android.app.admin.DeviceAdminReceiver. onProfileProvisioningComplete() 回调,你可以调用app.admin.DevicePolicyManager. setProfileEnabled()开启管理
如果你开发一款Launcher App,你可以使用最新的android.content.pm.LauncherApps类来获取Launcher Activitys列表,你的Launcher可以使托管应用程序视觉上突出通过附加一个使用android.os.UserManager. getBadgeDrawableForUser().绘制的"工作"的徽章。
android.app.admin.DevicePolicyManager.setLockTaskComponents()
方法。
- 附加一个设备到你的开发机器运行 Android userdebug。
- 安装你的设备拥有的app
- 创建device_owner.xml文件并且保存到你设备里的/data/system目录下
<span style="font-family:Microsoft YaHei;font-size:14px;">$ adb root
$ adb shell stop
$ rm /tmp/device_owner.xml
$ echo "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>"
>> /tmp/device_owner.xml
$ echo "&device-owner package=\"<your_device_owner_package>\"
name=\"*<your_organization_name>\" />" >> /tmp/device_owner.xml
$ adb push /tmp/device_owner.xml /data/system/device_owner.xml
$ adb reboot
</span>
DevicePolicyManager.isLockTaskPermitted()
.来检测你的activity是否被授权
- 状态栏是空白的,用户的Notification和状态栏信息时被隐藏的
- Home和最近的Apps按钮是被隐藏的
- 其他apps不会被加载新的activity
- 当前应用程序可能会启动新的活动,只要这样做不会创建新的任务。
- 用户仍然被锁定在你的app,直到一个被授权的activity调用
Activity.stopLockTask()
.
ParcelFileDescriptor,你的app可以通过openPage()获取一页,然后调用render()来将打开的PdfRenderer.Page变为一个位图,如果你想将文档的一部分转换为位图,也可以设置额外的参数。
- 你可以使用新的android.app.UiAutomation.getWindowAnimationFrameStats()和
android.app.UiAutomation.getWindowContentFrameStats()
方法捕获帧统计信息的窗口动画和内容,这允许您编写仪器仪表测试来评估
测试应用程序是否渲染帧在足够的刷新频率,提供流畅的用户体验。 - 你可以在测试框架里使用新的android.app.UiAutomation.executeShellCommand()执行命令,该命令的执行与连接设备运行adb shell非常类似,允许你使用基于工具的shell,例如
dumpsys
,am
,content
, 和pm
.
- 辅助功能服务和使用的辅助功能 Api(如 uiautomator) 可以检索有关的详细信息的 windows 属性在正常用户的屏幕上的测试工具可以交互。调用android.accessibilityservice.AccessibilityService.getWindows()方法来检索android.view.accessibility.AccessibilityWindowInfo 对象列表呈现 windows 信息
AccessibilityNodeInfo
执行的标准或者自定义操作。新的AccessibilityAction类替换之前的AccessibilityNodeInfo
.相关接口
InputMethodManager.shouldOfferSwitchingToNextInputMethod()
.
InputMethodManager.switchToNextInputMethod
.
<uses-feature android:name="android.software.leanback"android:required="true" />
FEATURE_WEBVIEW
,声明你的设备只能被实现所有
android.webkit.*APIs的设备所安装,例如
<span style="font-family:Microsoft YaHei;font-size:14px;"><uses-feature android:name="android.software.webview"android:required="true" />
</span>
Android L API Overview相关推荐
- Android L 新特性
转自:http://blog.jobbole.com/73577/ 每次Android新版的发布,Google都会发布一个API变更报告,概括出对比前一个版本增加.改变.移除的API等信息. 无论如何 ...
- Android 设备管理API概览(Device Administration API)
原文:http://android.eoe.cn/topic/android_sdk Android 2.2通过提供Android设备管理API的支持来引入企业应用支持.在系统级的设备管理API提供了 ...
- 基于MT6752/32平台 Android L版本驱动移植步骤
基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...
- Android L 使用ART能提高多少性能?
点击打开链接 刚刚结束的 Google I/O 大会上,Android 下一代操作系统「L」带来不少惊喜.新系统运行更快.更省电. 然而开发者对这个新系统也有颇多疑问,比如新的运行模式 ART 对开发 ...
- ANDROID L日志系统——JAVAAPI与LIBLOG
在 Android L(包含Android L)之后,Andoird使用了全新的日志系统,也非之前结合Kernel Ring Buffer的方式来存储,读写Log.替而代之是使用新的日志机制Logd. ...
- Android中文API(99)—— RelativeLayout
一.结构 public class RelativeLayout extends ViewGroup java.lang.Object android.view.View android.view.V ...
- android ripple 大小,Android L限制Ripple水波纹范围大小
Android L限制Ripple水波纹范围大小 Ripple 简介 Android 5.0 之后 google 推出了 Material Design,Botton 默认的触摸反馈会有水波纹涟漪效果 ...
- android 功能清单文件夹,全新Android L大小全部功能清单整理
今天凌晨,谷歌在美国旧金山发布全新安卓系统 Android L,该系统预计今年秋季发布,在此之前先向开发者提供. 在凌晨的主题演讲中,谷歌表示全新安卓系统将为用户提供全新的使用体验,比如 Projec ...
- 开发者须知:关于 Android L 的一切
Google在I/O 2014大会上发布了全新移动操作系统Android L的开发者预览版本,相对于上一版本来说,Android L在UI风格.界面切换.和原生应用等各方面都发生了比较大的变化,目前该 ...
最新文章
- 2018焦作网络赛-E- Jiu Yuan Wants to Eat
- 【学习笔记】观察者模式
- MySQL 命令大全 - 命令详解
- xampp php连接mysql数据库_关于PHP xampp连接数据库之后查询失败,数据库连接成功,表中也有数据...
- shp与json互转(转载)
- P3338 [ZJOI2014]力 FFT + 推式子
- 神经网络基本原理简明教程-0-Python-Numpy库的点滴
- 【MATLAB、深度学习】AlexNet及VGG神经网络在MATLAB上的应用
- Shader 学习笔记:水面
- 关于开发工程师的绩效考核
- 用 Python 计算综合测评中的专业成绩加权平均分
- 夏时制英国和中国的时差是多少?伦敦与北京时差是多少?
- 深度学习环境配置:ubuntu 16.04 安装2080ti驱动 cuda9.0和cudnn7.3 anaconda3.7 tensorflow12.0
- 毕业设计:基于java的小区物业信息管理系统的设计与实现(1)
- Python通过m3u8文件下载合并ts视频
- dialog.js弹窗插件
- C#合并单元格,AddMergedRegion
- 学习计划【硬件课程设计】【课设】
- ubantu16.04下安装omnet5.4.1,inet3.6.4,veins4.7.1 和 sumo0.32.0
- 【HTML期末学生大作业】 制作一个简单HTML宠物网页(HTML+CSS)