android第三方图片
‘壹’ 安卓手机SD卡图片无法从图库里打开怎么办
‘贰’ android studio第三方框架导入为空怎么办
原因祥念分析:
正常都是出现错误,无法编译通过,检查出错的信息;
不排除第三方jar包下载有问题,重新下载再尝试;
Android Studio导入第三方库的方法:
Gradle抓取:
只需在Project文件夹下的build.gradle文件中添加依赖,制定位置添加如下代码:
‘叁’ android如何让第三方apk查看不了图片
在文件管理里面,把需要隐藏的图片所在文件码渣告夹迟明前面加上.例如photo里面有图片,这时你找到photo文件夹,把它重命梁绝名.photo自带文件管理如果更改不了,请下载Root Explorer(RE管理器)
‘肆’ Android历史版本的版本列表
Android 3.0(蜂巢 Honeycomb)软件开发包正式发布,该版本基于基于Linux 2.6.36内核,是第一个Android平板操作系统。全球第一个使用该版本操作系统的设备是摩托罗拉公司于2011年2月24日发布的Motorola Xoom平板电脑。主要更新如下:主要更新如下: 仅供平板电脑使用 Google eBooks上提供数百万本书 支持平板电脑大萤幕、高分辨率 新版Gmail Google Talk视讯功能 3D加速处理 网页版Market(Web store)详细分类显示,依个人Android分别设定安装应用程序。 新的短消息通知功能 专为平板电脑设计的用户界面(重新设计的通知列与系统列) 加强多任务处理的界面 重新设计适用大屏幕的键盘及复制粘贴功能 多个标签的浏览器以及私密浏览模式 快速切换各种功能的相机 增强的图库与快速滚动的联系人界面 更有效率的Email界面 支持多核心处理器 3.2版优化了7吋平板显示 Android 3.1 Android 3.1软件开发包于2011年5月10日正式发布。主要更新如下: 用户界面的改进 连接USB配件 扩大最近的应用程序列表 可调整大小的主屏幕小部件 支持外部键盘和鼠标等设备 支持操纵杆和游戏控制器 FLAC音频播放支持 高性能的WiFi锁,维护高性能WiFi连接设备屏幕关闭时。 支持HTTP代理为每个连接的WiFi接入点 Android 3.2 Android 3.2软件开发包于2011年7月15日正式发布。全球第一台使用该版本操作系统的设备是中国 华为公司制造生产的MediaPad平板电脑。主要更新如下: 改进的硬件支持,包括为更广泛的芯片,并且进行优化。 增强应用程序访问SD卡上文件的能力,提供同步功能。 增加应用程序兼容性功能,用户可以通过使用兼容性功能适配更多应用程序。 新的显示支持功能,为开发人员提供更多的显示外观在不同的Android设备的控制。 Android 3.2.1 Android 3.2.1更新包于2011年9月20日正式发布,包含以下更新: 修复存在的Bug和安全性问题,增强系统稳定性和WiFi的性能 升级自带的Android Market 升级自带的Google Books 提升浏览器对Adobe Flash的支持 增强对简体中文、繁体中文的手写功能 Android 3.2.2 Android 3.2.2更新包于2011年8月30日正式发布,该版本修复了在摩托罗拉Xoom 4G上存在的Bug和性能方面的提升。
Android 4.0 Ice Cream Sandwich Android 4.0(Ice Cream Sandwich 雪糕三明治)于2011年4月在 Google I/O大会上首次被宣布,并且于2011年10月19日正式发布Android 4.0“雪糕三明治”操作系统和搭载Android 4.0的 Galaxy Nexus智能手机。 Android 4.0.1的软件开发包于2011年10月19日正式发布。Google公司的发言人加布·科恩(Gabe Cohen)指出,Android 4.0“理论上”与任何一个当前市面上搭载了Android 2.3.x 版本的设备兼容。关于Android 4.0的 源代码已于2011年11月14日正式公布。 该版本的主要更新内容如下: 统一了手机和平板电脑使用的系统,应用会自动根据设备选择最佳显示方式。 提升硬件的性能以及系统的优化,提升系统流畅度。 支持在系统中使用虚拟按键,该功能可以取代物理按键。 界面以新的标签页形式展示,并且将应用程序和其他内容的图标分类。 更方便地在主界面创建文件夹,并且使用“一拖”、“一放”的操作方式。 一个定制的启动器 改进的可视化语音邮件的能力,加快或减慢语音邮件。 在日历中也可以使用多点触控,进行缩放和拖拽操作。 Gmail离线搜索,两行预览,和新的任务栏。 与其他第三方微博、博客类应用程序的无缝连接,实时更新的内容会被展示在主界面上。 Gmail支持缩放操作,支持左拉、右拉进行查看。 增加截图功能(可以同时按住电源键和音量向下键进行截图操作)。 改进虚拟键盘可以产生的误操作 在锁屏状态下也可以对用户设置的某些应用程序进行操作 改进的复制、粘贴功能 更好的语音集成,实时录音,文本听写等语音功能。 脸部识别进行锁屏,可以通过脸部识别进行锁屏。 新标签页模式的网页浏览器,支持最大同时打开16个标签页。 自动同步用户手机中的网页书签,可以在桌面版Chrome和其他Android设备中进行同步。 全新的现代化Roboto字体 内置流量监控功能,用户可以对流量进行设置,超出设置流量时,手机会自动关闭上网功能,并且可以随时查看已使用和未使用的流量,并且以报表的形式展现出来以帮助用户了解使用情况。 能够随时关闭正在使用的应用程序 提升自带的相机功能 内置图片处理软件 新的图库软件 与其他第三方应用程序进行无缝衔接,用户可以在任何界面看到自己需要的消息和图像。 新的启动画面,主画面右下角类似Tray的图标,内有多个程序可运行。 Google Search Bar会设置在最上方 Apps/Widgets会类似Honeycomb模样 增加支持硬件加速的功能 Wi-Fi直连功能 支持1080p视频播放和录制 Android 4.0.1 修复Android 4.0中的Bug。 Android 4.0.2 Android 4.0.2更新包于2011年11月28日正式发布,该更新包修复了存在于Verizon版本Galaxy Nexus中的Bug。 Android 4.0.3 Android 4.0.3更新包于2011年12月16日发布,包括修复Bug和系统的优化,并且针对图形、数据库、拼写检查、蓝牙功能和其他功能的改进。公布了新的API,包括联系人API,日历增强,新的摄像头应用程序,提高视频稳定和QVGA分辨率和辅助功能的改进,如屏幕的改进等。 Android 4.0.4 Android 4.0.4更新包于2012年2月6日发布,主要更新如下: 更快的运行性能 Android操作系统的漏洞(电池问题)修复 3G/4G切换改进 信号强度增强 新的Power菜单(与之前的4.0.2不同,接近4.0.3) 更快速启动 自动亮度调节功能改动,有了平滑的过渡。 重新调整了相机的Holding down按钮 多点触控的问题解决 自动旋转更迅速 浏览器的性能显着提高 最近应用程序列表打开更快速 相机UI的变化 音量增大 键盘问题修复 更新新闻及天气应用程序的UI 浏览器中的快速控制改进 Android 4.1(Jelly Bean“果冻豆”)更新包于2012年6月28日在Google I/O大会上随搭载Android 4.1的Nexus 7平板电脑一起发布,可能的更新如下: 基于Android 4.0改善 “黄油”性能(Project Butter),意思是可以让Jelly Bean的体验像“黄油般顺滑”(锁定提升用户页面的速度与流畅性)。 “Google Now”可在Google日历内加入活动举办时间、地点,系统就会在判断当地路况后,提前在“适当的出门时间给予通知”,协助用户在准时时间抵达。 新增脱机语音输入 通知中心显示更多消息 更多的平板优化(主要针对小尺寸平板) 强化Voice Search语音搜索,与S Voice类近,相当于Apple Siri。 Google Play 增加电视视频与电影的购买 提升反应速度 强化默认键盘 大幅改变用户界面设计 更多的Google云集成 恶意软件的保护措施,强化ASLR Google Play 采用智能升级,更新应用只会下载有改变的部分以节约时间、流量、电量,平均只需下载原APK文件的三分之一。 不会内置Flash Player,并且Adobe声明停止开发,但可自行安装APK。 Android 4.1.1 Android 4.1.1更新包于2012年7月23日发布,主要是修复Nexus 7的Bug。 Android 4.1.2 Android 4.1.2更新包于2012年10月9日发布,主要更新如下: 加入主画面的旋转功能 一些错误修正 提升性能及稳定性 单手指开合通知中心消息 Android 4.2 Google原本预计于2012年10月29日于纽约发布Android 4.2,但因为飓风桑迪吹袭被取消,而改以新闻稿发布,以“一种新口味的果冻豆”(A new flavor of Jelly Bean)作口号。首款搭载Android 4.2的手机LG Nexus 4及平板电脑Nexus 10于2012年11月23日上市。
主要更新如下: PhotoSphere 360°全景拍摄 手势输入键盘 改进锁屏:支持Widget,可于屏幕锁定界面直接打开相机功能。 Daydream屏幕保护程序功能 可直接进行操作的状态通知列功能 支持多重账户(仅适用于平板电脑) Miracast无线显示分享功能 连点三次可放大整个显示页及两指旋转和缩放 增加为盲人用户设计的语音输出及手势模式导航功能 内置时钟新增世界时钟,秒表和定时器 Google Now新增以Gmail登录信息作为数据源 Google Now新增航班追踪功能、酒店、餐厅预订,与音乐和电影推荐功能。 Gmail邮件可缩放显示 Android 4.2.1 修复Android 4.2中的Bug。 Android 4.2.2 Android 4.2.2更新包于2013年2月11日发布,主要更新如下: 性能及稳定性的提升 一些错误修正 改善蓝牙A2DP流问题 Google Play在下载内容时会显示剩余的时间 在快速设置中长按WiFi和蓝牙图标可切换开关 当设备电量低于95%并开始无线充电时会发出提示音 在USB Debug加入白名单功能 优化电池耗电量,增加续航时间。 Android 4.3 2013年7月24日与Nexus 7平板二代同步发表,主要更新如下: 支持多用户登录,支持一台终端设备上有多个登录帐号。 “蓝牙低功耗”功能,开启蓝牙后,耗电量相比之前大幅降低。 支持更多缓冲器对象 新版OpenGL ES 3.0着色语言,支持32 位整数和浮点数据类型以及操作。 增加多个纹理的支持,包括浮点纹理、深度纹理、顶点纹理等等。 多重渲染目标(Multiple Render Targets),让GPU一次性渲染多个纹理。 多重采样抗锯齿(MSAA Render To Texture),让3D物体的边缘不出现毛刺,可提升图像效果。 使用统一的纹理压缩格式ETC 增加TRIM指令,使得内置存储(Internal Storage)不会越用越慢。 新增App Opt功能(默认隐藏),允许用户强行解除已安装应用的特定权限。 Android 4.3.1 2013年10月5日发布,改进系统性能和稳定性。 开发代号:Android L
2014年6月25日于Google I/O 2014大会上发布Developer版(Android L),之后在2014年10月15日正式发布且名称定为Lollipop“棒棒糖”。 采用全新Material Design界面 支持64位处理器 全面由Dalvik转用ART(Android Runtime)编译,性能可提升四倍 改良的通知界面及新增优先模式 预载省电及充电预测功能 新增自动内容加密功能 新增多人设备分享功能,可在其他设备登录自己账号,并获取用户的联系人、日历等Google云数据 强化网络及传输连接性,包括Wi-Fi、蓝牙及NFC 强化多媒体功能,例如支持RAW格式拍摄 强化“OK Google”功能 改善Android TV的支持 提供低视力的设置,以协助色弱人士 改善Google Now功能 Android的下一个版本,即盛传已久的Android M很可能会在Google I/O大会上被正式发布。一个在业内已经被热议的议题是:Android M“为工作升级而生”(Android for Work Update)。有业内人士解释道:“Android M将把Android的强大功能拓展至任何你所能看到的工作领域。 ”“
根据Android系统以往的惯例,每一代新系统往往会根据其字母代号,对应一个关于零食的全名。如去年在Google I/O大会上发布的Android L,其代号“L”一开始还只是Google为开发者称呼方便而准备的一个代号,但后来逐步演变成了“Lollipop”(棒棒糖Android 5.0)。所以,按照这种命名的传统,Android [字母]这种新模式也将意味着,一款新口味Android“零食”即将出现。
主要新功能如下:
● 应用权限管理
● SD卡可能和内置存储“合并”
● Android Pay
● 原生指纹识别认证
● 自动应用数据备份
● App Links(尽量减少诸如“你想要使用什么来打开这个?”的提醒)
● 打盹和应用待机功能
● 多窗口(隐藏技能,未来不确定)
●主题支持(隐藏技能,未来不确定)
● Dark主题(已经被移除,未来不确定)
● 可定制的Quick Toggles和其他UI调整
● 可视化的语音邮件支持
● 重新设计的时钟插件和音乐识别插件
● 在设置中新出现的全新“Memory”选项条目(早期版本出现,不过后来被隐藏)
● 在完成截图之后可以通过通知中心直接删除截图
● Google Now Launcher支持横屏模式
● 带滚动条和垂直滚动条支持的全新应用和窗口小部件抽屉
● 内置的文件管理器能够获得功能方面的明显升级
● 支持原生点击唤醒功能
● 可以选择“heads up”或者“peeking” 通知
● 原生4K输出支持
● 严格的APK安装文件验证
● 支持MIDI
● USB Type-C端口支持
● 全新的启动动画
● 引入“语音交互”API在应用中提供更好的语音支持
● 可通过语音命令切换到省电模式
● 可以通过蓝牙键盘快捷方式来撤销和重做文本
● 在联系人应用中能够对已经添加的联系人进行合并、删除或者分享功能。
● 会有针对文本选择的浮动工具栏出现,以便于更快的选择文本
● 默认应用的UI
● 允许通过分享菜单直接分享给联系人好友
● 更细化的应用程序信息
● 原生蓝牙手写笔支持
● 分屏键盘
● 移动的收音机
● Mobile Radio Active服务电池续航BUG将会被修复
● 除重复来电之外优化勿扰模式
● 蓝牙扫描来改善定位精准度
● 原生Flashlight API
● 更容易访问控制多个声音空控制( 铃声、多媒体和闹钟)
● 更平滑的声音滑块‘伍’ 安装了android studio后怎样重新配置参数
现在我们用一个新建的项目来说明。
项目结构如下
‘陆’ 安卓手机怎么看新浪微博live图
安卓手机无法查看新浪微博live图。Live photo是苹果手机独有的功能,第三方格式的动态短片是不能转换成动态照片的,而且就算你的手机拍摄开启了live photo功能当你发送给各大社交软件时也不会显示动态图,只有静态显示。
参考资料来源:
网络-Live Photo
‘柒’ 什么是CM系统呀
CM系统释义:一个基于Android系统深度优化、定制、开发的第三方手机操作系统。CM提供了一些原生Android系统或某些手机厂商定制系统中没有的功能,也是第一个使用BFS作任务管理器的手机操作系统。
CyanogenMod 是一个免费、基于社区构建的Android OS的修改和改进版本。
Cyanogen OS 13年9月18日对外宣布,已获得700万美元A轮投资,希望超越黑莓和Windows Phone成为世界第三大手机操作系统。
Cyanogen OS 在B轮融资中获2300万美元投资,由安德森-霍洛维茨基金领投。腾讯、Benchmark Capital及Redpoint Ventures也参与了本轮投资。
(7)android第三方图片扩展阅读
CyanogenMod支持Free Lossless Audio Codec-FLAC(无损音频压缩编码)音频格式的音乐,多点触控,从SD外置存储器运行程序,压缩缓存,大量APN的名单,重新启动功能,Wi-Fi无线网络支持,蓝牙,USB网络分享等。CyanogenMod也是第一个使用BFS作任务管理器的操作系统。CyanogenMod声称提供比官方固件版本更高性能和更可靠。
2008年9月HTC Dream手机发布后,Android社区发现其中一个可以在Android的Linux的子系统得到特权控制 "rooting"(也称为 "root access")的方法。
这个发现, 结合了Android开源的性质,让手机的固件可以随意进行修改和重新安装到手机。某些手机并不需要进行修改,如Android开发手机和Nexus One,这些用作开发用途的手机上。
现时,CyanogenMod固件是基于Android 5.0,也有大量由CyanogenMod的代码被加入了。CyanogenMod的自定部分本来是由Cyanogen(Steve Kondik)编写,不过加入了由xda-developers社区编写的代码(如已强化的主画面, 已强化的调用程序和已强化的网页浏览器)和其他的程序(如busybox)。
‘捌’ 国外Android有哪些第三方推送平台如何选择
国外Android第三方推送平台有很多,在选择的时候不要盲目选择,一定选择适合自己的。但是相比较来说,深圳极光的推送平台会好一些,能满足客户的全面的业务场景和数据需求。优势也是比较明显的,具体如下:
1、海量行业数据源,在线用户4亿+,活跃用户2亿+。
2、完善的开发者工具包,七年的开发者服务技术积累,数据安全,服务稳定。
3、成熟的产品化能力,为app统计、广告监测、金融风控等提供专业解决方案。
4、精准的大数据算法体系,拥有用户标签数量500+、精准的用户画像、多维自助分析工具。
极光是国内领先的移动开发者服务提供商,近十年里,极光紧密围绕移动开发者的需求,打造了一系列针对开发者运营、增长及变现的产品,截至2020年12月,已有超169万款APP在使用极光提供的服务。‘玖’ Android 开发,有没有拍照滤镜的第三方SDK
宝宝特效SDK
提供特效相机,拍摄辅助,自动美颜相机,抖音滤镜、直播礼物、直播贴纸等,超低占用空间,十秒大型场景仅100KB+, 精准人脸识别、人脸跟踪,支持3D特效,3D动画特效,2D特效、动画渲染、特效渲染等。
‘拾’ 问答:Android P都更新了哪些功能
Android P的新功能特性集中在了UI、通知体验、室内定位、图像存储几个方面,解决了之前一直存在的痛点。例如WiFi RTT一定程度上弥补了蜂窝网络在室内环境下的定位问题,HEIC图像格式则重点解决了存储容量问题。同时,Android P也在通知丰富度及操作便捷性等功能方面有所增强和提升。
一、WiFi RTT功能——复杂地形精确导航
WiFi RTT功能是Android P新引入的一个功能,从原理上来说与蜂窝网络的定位原理一致,但这个功能极大的弥补了蜂窝网络在室内定位的短板,WiFi RTT将能够在室内提供高精度的定位,这是蜂窝网络很难做到的。
WiFi RTT是全新的功能,在android.net.wifi包下增加了rtt包,用于存放WiFi RTT相关类和接口。
WiFi RTT的API以WifiRttManager为核心,借助AP热点或WiFi,利用RTT原理完成测距,通过三个以上的测距点就能够准确地定位到设备所在位置。
WiFiRTTManager提供了测距接口,是一个异步测距操作,根据官方文档(https://developer.android.com/reference/android/net/wifi/rtt/WifiRttManager.html)说明,其测距接口如下:
void startRanging(RangingRequest request, RangingResultCallback callback, Handler handler);
注:SDK Platforms Android P Preview Revision 1的相关接口定义与此不同,但实际的官方镜像中接口与此一致,开发者需要更新最新的Android P Preview Revision 2,此版本中Google已经修正该接口。
接口中,RangingRequest通过RangingRequest.Builder构建,RangingRequest.Builder构建出RangingRequest所需要的参数可以通过WiFiManager等系统服务获取到相关的内容,如List<ScanResult> scanResults = wifiManager.getScanResults();
以下提供一个简单的测试Demo,以供参考:
private WifiRttManager wifiRttManager;
private WifiManager wifiManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
// ... ...
if(getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_RTT)) {
Object service = this.getApplicationContext().getSystemService(Context.WIFI_RTT_RANGING_SERVICE);
if(service instanceof WifiRttManager) {
wifiRttManager= (WifiRttManager) service;
Log.i(TAG, "Get WifiRttManager Succ.");
}
wifiManager = (WifiManager) this.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
IntentFilter wifiFileter = new IntentFilter();
wifiFileter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
wifiFileter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
wifiFileter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
registerReceiver(new WifiChangeReceiver(), wifiFileter);
}
// ... ...
}
private void startScanAPs() {
wifiManager.setWifiEnabled(true);
wifiManager.startScan();
}
class WifiChangeReceiver extends BroadcastReceiver {
@RequiresApi(api = 28)
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
List<ScanResult> scanResults = wifiManager.getScanResults();
Log.i(TAG, "Wifi Scan size:" + scanResults.size());
for(ScanResult scanResult: scanResults) {
Log.i(TAG, scanResult.toString());
RangingRequest.Builder builder = new RangingRequest.Builder();
builder.addAccessPoint(scanResult);
wifiRttManager.startRanging(builder.build(), new RangingResultCallback() {
@SuppressLint("Override")
@Override
public void onRangingFailure(int i) {
// TODO
}
@SuppressLint("Override")
@Override
public void onRangingResults(List<RangingResult> list) {
// TODO get result from list
for(RangingResult result : list) {
Log.i(TAG, result.toString());
}
}
}, new Handler());
}
}
}
}使用WiFi RTT时,需要在AndroidManifest.xml中增加如下声明:
<uses-feature android:name="android.hardware.wifi.rtt" />
通过上面的简单代码,就能够实现WiFi RTT的功能。
WiFi RTT功能适用于复杂地形的大型室内外场所,如商场、娱乐场所、大型休闲、游乐场等等,提供场所内的局部区域精确化导航等功能。相信在很快的时间内,就能够在各大地图应用内体验到这项便利功能,对于路痴、地图盲的伙伴们将是极大的福音。
二、显示剪切——支持刘海屏
随着iPhone X的推出,“刘海屏”达到了空前的高潮。Android P里提供了对异形屏幕的UI适配兼容方案,通过DisplayCutout类提供的相关接口,能够获取到屏幕中Cutout区域的信息。
借助DisplayCutout,可以获取到如下信息:
DisplayCutout displayCutout = view.getRootWindowInsets().getDisplayCutout();
if(displayCutout != null) {
Region bounds = displayCutout.getBounds();
Log.d(TAG, String.format("Bounds:%s", bounds.toString()));
int top = displayCutout.getSafeInsetTop();
int bottom = displayCutout.getSafeInsetBottom();
int left = displayCutout.getSafeInsetLeft();
int right = displayCutout.getSafeInsetRight();
Log.d(TAG, String.format("Cutout edge:[left:%d, top:%d,right:%d, bottom:%d]", left, top, right, bottom));
}public Region getBounds()能够获取到Cutout区域的所有信息,Region就是Cutout区域。
public int getSafeInsetTop()
public int getSafeInsetBottom()
public int getSafeInsetLeft()
public int getSafeInsetRight()以上四个接口,可以获取到去除Cutout区域后的安全区域边界值。
通过上述数据,开发者能够精准的控制UI的绘制,避免将UI内容绘制到Cutout区域造成UI显示异常。
Android机器里,刘海屏目前还是极为罕见的Google为了方便开发者调试,在Android P Preview镜像中,特别提供了Cutout的支持,具体打开方式可以参考Google提供的特性说明文档cutout小节内容。
cutout小节:https://developer.android.com/preview/features.html#cutout
如图所示,笔者使用手头的Pixel 2 XL体验了Android P的Cutout设置。
三、通知优化——操作更多样,内容更丰富
Android P在通知内容的丰富度和操作上做了优化。
最近的版本中,Android系统的通知管理方面一直优化升级,Android O提供了更细粒度的Channel功能,通知栏推送时需要指定NotificationChannel,用户可以对通知的Channel选择,只允许感兴趣的Channel推送的通知显示。通过通道设置、免打扰优化等方式,极大增强了消息体验。
增强消息体验
Android P继续改进和增强消息通知[v1]。早在Android 7.0时,就提供了在通知中直接应答和输入,Android P对这一功能做了更多的增强。
Android P的通知中支持图像内容,可以通过setData()方法,给出消息的图像内容,在通知上展示给用户。
Android P同样简化了通知的配置形式。Android P中增加了Notification.Person类,用于区分同一个对话的参与者信息,如参与者的头像、URI等。根据官方说明,Android P中,通知消息的其他一些API,也使用Person替代之前的CharSequence。
简单的体验下新的API的开发:
NotificationChannel channel = new NotificationChannel("WtTestChannel",
"WtTestChannel", NotificationManager.IMPORTANCE_DEFAULT);
channel.enableLights(true); // luncher icon right corner's point
channel.setLightColor(Color.RED); // read point
channel.setShowBadge(true); // whether show this channel notification on long press icon
Notification.Builder builder =
new Notification.Builder(MainActivity.this,
"WtTestChannel");
Notification.Person p = new Notification.Person();
p.setName("WeTest");
p.setUri("http://cdn.wetest.qq.com/" +
"ui/1.2.0/pc/static/image/newLogo-16042.png");
Notification.MessagingStyle messageStyle = new Notification.MessagingStyle(p);
Notification.MessagingStyle.Message message =
new Notification.MessagingStyle.Message("WeTestMessage", 2000, p);
//show image
Uri image = Uri.parse(
"http://cdn.wetest.qq.com/ui/1.2.0/pc/static/image/newLogo-16042.png");
message.setData("image/png", image);
messageStyle.addMessage(message);
builder.setStyle(messageStyle);
builder.setSmallIcon(R.mipmap.ic_launcher);
Notification notification = builder.build();
NotificationManager notifyManager =
(NotificationManager) getSystemService(
MainActivity.this.getApplicationContext().NOTIFICATION_SERVICE);
notifyManager.createNotificationChannel(channel);
notifyManager.notify("WeTest", 1, notification);通道设置、广播和免打扰优化
Android P中,重点做了内容丰富上的工作,同时也对Channel的设置方面做了一些简化处理。
Android O版本里,首次推出了NotificationChannel,开发者需要配置相应的Channel,才能够推送通知给用户。用户能够更加细粒度[v1]的针对App的Channel选择,而不是禁止App的所有通知内容。
而在Android P中,对通知的管理做了进一步的优化,包括可以屏蔽通道组、提供新的广播类型和新的免打扰优先级。
屏蔽通道组:用户可以在通知设置中屏蔽App的整个通道组。开发者可以通过isBlocked()来判断某个通道组是否被屏蔽了,并根据结果,不向已经被屏蔽的通道组发送任何通知。另外,开发者可以在App中使用新接口getNotificationChannelGroup()来查询当前的通道组设置。
新的广播类型:新广播类型是针对通道和通道组的功能增加的“通道(组)屏蔽状态变化”广播。开发者App中可以对所拥有的通道(组)接收广播,并根据具体广播内容作出动作。开发者可以通过NotificationManager,查看广播相关的具体信息。针对广播的动作可以通过Broadcasts查看具体的方法和信息。
免打扰优先级:NotificationManager.Policy增加了两个新的优先级常量,PRIORITY_CATEGORY_ALARMS(警告优先),PRIORITY_CATEGORY_MEDIA_SYSTEM_OTHER(媒体、系统和游戏声音优先)。
四、支持多摄像机和相机共享
近一段时间,双摄、多摄等机型纷纷面世。双摄及多摄提供了单摄像头所无法完成的能力,如无缝缩放、散景和立体视觉。Android P在这方面也提供了系统级的API支持。
Android P提供了系统API,支持从两个或者多个物理摄像头同步获取数据流。此前OEM厂商提供的双摄设备多是厂商自行定制系统实现,此时Android P推出了API,从系统层面上制定了API规范。
新的API提供了在不同相机之间切换逻辑数据流或混合数据流的调用能力。在捕捉延迟方面,提供新的会话参数,降低初始捕捉延迟。同时,提供相机共享能力,以解决在多种使用相机的场景下重复停止、开启相机流。闪光灯方面,Android P增加基于显示的闪光灯支持。光学防抖方面,Android P向开发者提供OIS时间戳,用于图像稳定性优化以及其他特效使用。
此外,Android P还支持外部USB/UVC相机,可以使用更强大的外置摄像头模组。
五、支持图像媒体后期处理
Android P引入了新的ImageDecoder,该类除了支持对各种图片格式的解码、缩放、裁剪之外,其强大之处在于支持对解码后的图像做后期处理(post-process),使用该功能可以添加复杂的自定义特效,比如圆角,或是将图片放在圆形像框中。编写后期处理回调函数,你可以添加任何绘图指令实现需要的效果。
此外,Android P原生支持GIF和WebP格式的动图,新增了AnimatedImageDrawable类,并被新增的解码器类ImageDecoder直接支持,用法跟矢量动画类AnimatedVectorDrawable类似,实现方式也类似,通过新增渲染线程和工作线程,不需要在UI线程处理动图更新,可以说是无痛使用,非常省心。
下面通过编写代码,显示一张gif图,并利用后期处理机制,在图像中间绘制一个绿色的实心圆。
final ImageView image = (ImageView) findViewById(R.id.image);
File gifFile = new File("/data/local/tmp/test.gif");
if (!gifFile.exists()) {
Log.d(TAG, "gifFile is not exsited!");
return;
}
ImageDecoder.Source source = ImageDecoder.createSource(gifFile);
try {
d = ImageDecoder.decodeDrawable(source, new ImageDecoder.OnHeaderDecodedListener() {
@Override
public void onHeaderDecoded(ImageDecoder imageDecoder, final ImageDecoder.ImageInfo imageInfo, ImageDecoder.Source source) {
imageDecoder.setPostProcessor(new PostProcessor() {
@Override
public int onPostProcess(Canvas canvas) {
int w = imageInfo.getSize().getWidth();
int h = imageInfo.getSize().getHeight();
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.GREEN);
canvas.drawCircle(w/2, h/2, h/4, new Paint(paint));
return 0;
}
});
}
});
image.setVisibility(View.VISIBLE);
image.setImageDrawable(d);
} catch (IOException e){
Log.d(TAG, e.toString());
}
Button button = (Button) findViewById(R.id.buttonText);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (d != null && d instanceof AnimatedImageDrawable) {
AnimatedImageDrawable ad = (AnimatedImageDrawable) d;
if (ad.isRunning()) {
Log.d(TAG, "stop running");
ad.stop();
} else {
Log.d(TAG, "start running");
ad.start();
}
}
}
});六、支持HDR VP9和HEIF
Android P内置了对HDR VP9和HEIF(heic)图像编码的支持。HEIF是苹果在iOS11推出的一种高效压缩格式,目前在IphoneX、Iphone 8、IPhone 8P上已经支持。该格式的压缩率更高,但是编码该格式需要硬件的支持,解码并不需要。最新的支持库中的HeifWriter支持从YUV字节缓冲区、Surface或是Bitmap类转换为HEIF格式的静态图像。
Android P新引入了MediaPlayer2,支持DataSourceDesc创建的播放列表。
功能优化提升一览
一、神经网络API 1.1
在前不久发布的Android 8.1 (API level 27)上,Google首次在Android平台上推出了神经网络API,这意味着我们的Android机器智能化水平又提高了一大步。而本次Android P,进一步丰富了神经网络的支持,不仅对之前的相关API进行了优化,并且提供了9个新的操作,为具体的数据操作方面提供了更深入的支持。
二、改进表单自动填充
Android 8.0(API等级26)中引入了自动填充框架,这使得在应用中填写表单变得更加容易。 Android P引入了自动填充服务并实现了多项改进,得以在填写表单时进一步增强用户体验。
三、安全增强
Android P引入了许多新的安全功能,包括统一的指纹验证对话框和敏感交易的高确信度的用户确认。应用程序内的指纹认证UI也将会更加一致。
统一的指纹验证对话框
如果第三方APP想要使用指纹,Android系统框架为应用提供了指纹认证对话框,该功能可以提供统一的外观和使用体验,用户使用起来更放心。如果您的程序还在使用FingerprintManager,现在改用FingerprintDialog替代吧,系统来提供对话框显示。对了,在使用FingerprintDialog之前,别忘了调用hasSystemFeature()方法检查手机设备是否支持指纹。
敏感交易的高确信度的用户确认
Android P系统提供了受保护的确认API,借助这组全新的API,应用可以使用ConfirmationDialog对话框向用户提示,请求用户批准一条简短的声明, 该声明允许应用提醒用户,即将完成一笔敏感交易,例如支付。
如果用户接受声明,应用将会收到一条key-hash的消息认证码(HMAC),该签名由TEE产生,以保护用于输入和认证对话框的显示。该签名表示用于已经看到了声明并同意了。
硬件安全模块
Android P还提供了StrongBox Keymaster(强力沙盒秘钥大师),一个存储在硬件安全模块的具体实现。在这个硬件安全模块中有自己的CPU、安全存储空间,真随机数生成器,以及额外的机制抵御应用被篡改或是未授权应用的恶意加载。当检查存储在StrongBox Keymaster中的密钥时,系统通过可信执行环境(TEE)确认密钥的完整性。为了降低能耗,StrongBox支持了一组算法和不同长度的秘钥:
●RSA 2048
●AES 128 and 256
●ECDSA P-256
●HMAC-SHA256 (支持8字节到64字节任意秘钥长度)
●Triple DES 168
需要说明的是,这个机制需要硬件支持。
安全秘钥导入KeyStore
使用新的ASN.1编码的秘钥格式添加导入秘钥到Keystore,Android P提供了额外的密码解密安全能力。之后KeyMaster就可以解密KeyStore存储的秘钥,这种工作方式使得秘钥明文永远不会出现在设备内存中。这项特性要求设备支持Keymaster 4。
四、支持客户端侧Android备份加密
Android P支持使用客户端密钥对Android备份进行加密。 这项隐私措施,需要设备的PIN、图案密码或标准密码才能从用户设备备份的数据中恢复数据。
五、Accessibility优化
为了使App使用更便捷,Android在多个方面为开发者提供了易用性的优化。
1、Navigation semantics
Android P在App的场景切换和操作上为开发者提供了很多的优化点。
2、Accessibility pane titles
Android P中对Section提供了新的机制,被称为accessibility pane titles, Accessibility services能够接收这些标题的变化,使得能够对一些变化提供更加细粒度的信息。
指定Section的标题,可以通过android:accessibilityPaneTitle新属性来设置,同样运行时可以通过setAccessibilityPaneTitle()来设置标题。
3、顶部栏导航
Android P提供了新的顶部栏导航机制,通过设置View实例的android:accessibilityHeading属性为true,来显示逻辑标题。通过这些标题,用户就可以从一个标题导航到下一个标题,
4、群组导航和输出
针对屏幕阅读器,Android P对View提供了新的属性android:screenReaderFocusable代替原有的android:focusable来做标记,来解决在一些场景下为了使屏幕阅读器工作而设置View为可获取焦点的操作。这时,屏幕阅读器需要同时关注android:screenReaderFocusable和android:focusable设置为ture的View。
5、便捷操作
tooltips交互
Android P中,可以使用getTooltipText()去读取tooltips的文本内容。使用新的ACTION_SHOW_TOOLTIP和ACTION_HIDE_TOOLTIP控制View显示或者隐藏tooltips。
新全局交互
Android P在AccessibilityService类中提供了两个全新的操作。开发者的Service可以通过GLOBAL_ACTION_LOCK_SCREEN帮助用户锁屏,通过GLOBAL_ACTION_TAKE_SCREENSHOT帮助用户完成屏幕截图。
窗体改变的一些细节
Android P优化了在App多窗体同步发生变化时的更新内容获取。当出现TYPE_WINDOWS_CHANGED时,开发者可以通过getWindowChanges()API获取窗体变化情况。
当多窗体发生改变时,每个窗体都会发出自己的事件,开发者可以通过getSource()获取到事件窗体的根View。
如果你的App为View定义了accessibility pane titles,UI更新时你的Service就能够识别到相应的改动。当出现TYPE_WINDOW_STATE_CHANGED事件时,使用新方法 getContentChangeTypes()返回的类型,就能够获取到当前窗体的变化情况。例如,现在就能够通过上述的机制,检测到一个[v1]窗格是否有了新标题,或者一个窗格的消失。
六、新的Rotation方案
旋转屏幕,是一些游戏、视频等场景必要的操作,但有一些场景,用户旋转屏幕并不是为了让应用显示从竖屏变成横屏或反过来。为了避免这种误操作,Android P提供了新的机制,开发者可以指定屏幕不随重力感应旋转,而是用户通过一个单独的按钮自行控制屏幕显示转向。