‘壹’ 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手机系统软件apk开发制作
随着Android安卓系统的日益广泛使用,越来越多人发现手机潜在的力量,当然手机应用软件app的朝阳也随之并进,手机app软件潜在着无线巨大的发展空间和利益金钱空间!例如说:微信!UC浏览器!手机游戏!等等各种。。。
1、环境搭建
1.1、JDK安装
如果你还没有JDK的话,可以去这里下载,接下来的工作就是安装提示一步一步走。设置环境变量步骤如下:
我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量: java_HOME值为: D:Program FilesJavajdk1.6.0_18(你安装JDK的目录) CLASSPATH值为:.;%JAVA_HOME%lib ools.jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%in; Path: 在开始追加 %JAVA_HOME%in; NOTE:前面四步设置环境变量对搭建Android开发环境不是必须的,可以跳过。
安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version 查看JDK的版本信息。出现类似下面的画面表示安装成功了:
1.2、Eclipse安装
如果你还么有Eclipse的话,可以去这里下载,下载如下图所示的Eclipse IDE for Java Developers(92M)的win 32bit版:
解压之后即可使用。
1.3、Android SDK安装
在Android Developers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。
运行SDK Setup.exe,点击Available Packages。如果没有出现可安装的包,请点击Settings,选中Misc中的"Force https://..."这项,再点击Available Packages 。 选择希望安装的SDK及其文档或者其它包,点击Installation Selected、Accept All、Install Accepted,开始下载安装所选包 在用户变量中新建PATH值为:Android SDK中的tools绝对路径(本机为D:AndroidDevelopandroid-sdk-windows ools)。
“确定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口,检查SDK是不是安装成功。 运行 android –h 如果有类似以下的输出,表明安装成功:
1.4、ADT安装
打开 Eclipse IDE,进入菜单中的 "Help" -> "Install New Software" 点击Add...按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入http://dl-ssl.google.com/android/eclipse。如下图所示:
确定返回后,在work with后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有Developer Tools,展开它会有Android DDMS和Android Development Tool,勾选他们。 如下图所示:
然后就是按提示一步一步next。
完成之后:
选择Window > Preferences... 在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为: D:AndroidDevelopandroid-sdk-windows 点击Apply、OK。配置完成。
1.5、创建AVD
为使Android应用程序可以在模拟器上运行,必须创建AVD。
1、在Eclipse中。选择Windows > Android SDK and AVD Manager 2、点击左侧面板的Virtual Devices,再右侧点击New 3、填入Name,选择Target的API,SD Card大小任意,Skin随便选,Hardware目前保持默认值 4、点击Create AVD即可完成创建AVD
注意:如果你点击左侧面板的Virtual Devices,再右侧点击New ,而target下拉列表没有可选项时,这时候你:
点击左侧面板的Available Packages,在右侧勾选https://dl-ssl.google.com/android/repository/repository.xml,如下图所示:
然后点击Install Selected按钮,接下来就是按提示做就行了
要做这两步,原因是在1.3、Android SDK安装中没有安装一些必要的可用包(Available Packages)。
2、HelloWorld
通过File -> New -> Project 菜单,建立新项目"Android Project" 然后填写必要的参数,如下图所示:(注意这里我勾选的是Google APIs,你可以选你喜欢的,但你要创建相应的AVD)
相关参数的说明:
Project Name: 包含这个项目的文件夹的'名称。 Package Name: 包名,遵循JAVA规范,用包名来区分不同的类是很重要的,我用的是helloworld.test。 Activity Name: 这是项目的主类名,这个类将会是Android的Activity类的子类。一个Activity类是一个简单的启动程序和控制程序的类。它可以根据需要创建界面,但不是必须的。 Application Name: 一个易读的标题在你的应用程序上。 在"选择栏"的 "Use default location" 选项,允许你选择一个已存在的项目。
点击Finish后,点击Eclipse的Run菜单选择Run Configurations… 选择“Android Application”,点击在左上角(按钮像一张纸上有个“+”号)或者双击“Android Application”, 有个新的选项“New_configuration”(可以改为我们喜欢的名字)。 在右侧Android面板中点击Browse…,选择HelloWorld 在Target面板的Automatic中勾选相应的AVD,如果没有可用的AVD的话,你需要点击右下角的Manager…,然后新建相应的AVD。如下图所示:
然后点Run按钮即可,运行成功的话会有Android的模拟器界面,如下图所示:
‘叁’ 怎么获取android系统服务,如Uri,intent参数等,或者说去哪里查看
android系统服务,如Uri,intent参数
可以在Intent中指定程序要执行的动作(比如:view,edit,dial),以及程序执行到该动作时所需要的资料。都指定好后,只要调用startActivity(),Android系统会自动寻找最符合你指定要求的应用程序,并执行该程序。
★intent大全:
1.从google搜索内容
Intent intent = new Intent();
intent.setAction(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY,"searchString")
startActivity(intent);
2.浏览网页
Uri uri =Uri.parse("htt。。。。。。。。om");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
3.显示地图
Uri uri = Uri.parse("geo:38.899533,-77.036476");
Intent it = newIntent(Intent.Action_VIEW,uri);
startActivity(it);
4.路径规划
Uri uri =Uri.parse("http。。。。。。。。。。/maps?
f=dsaddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
Intent it = newIntent(Intent.ACTION_VIEW,URI);
startActivity(it);
5.拨打电话
Uri uri =Uri.parse("tel:xxxxxx");
Intent it = new Intent(Intent.ACTION_DIAL,uri);
startActivity(it);
6.调用发短信的程序
Intent it = newIntent(Intent.ACTION_VIEW);
it.putExtra("sms_body", "TheSMS text");
it.setType("vnd.android-dir/mms-sms");
startActivity(it);
7.发送短信
Uri uri =Uri.parse("smsto:0800000123");
Intent it = newIntent(Intent.ACTION_SENDTO, uri);
it.putExtra("sms_body", "TheSMS text");
startActivity(it);
String body="this is sms demo";
Intent mmsintent = newIntent(Intent.ACTION_SENDTO, Uri.fromParts("smsto",
number, null));
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY,body);
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE,true);
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT,true);
startActivity(mmsintent);
8.发送彩信
Uri uri =Uri.parse("content://media/external/images/media/23");
Intent it = newIntent(Intent.ACTION_SEND);
it.putExtra("sms_body","some text");
it.putExtra(Intent.EXTRA_STREAM, uri);
it.setType("image/png");
startActivity(it);
StringBuilder sb = new StringBuilder();
sb.append("file://");
sb.append(fd.getAbsoluteFile());
Intent intent = newIntent(Intent.ACTION_SENDTO, Uri.fromParts("mmsto",
number, null));
// Below extra datas are all optional.
intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT,subject);
intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY,body);
intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI,sb.toString());
intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE,composeMode);
intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT,exitOnSent);
startActivity(intent);
9.发送Email
Uri uri =Uri.parse("mailto:[email protected]");
Intent it = newIntent(Intent.ACTION_SENDTO, uri);
startActivity(it);
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_EMAIL,"[email protected]");
it.putExtra(Intent.EXTRA_TEXT, "Theemail body text");
it.setType("text/plain");
startActivity(Intent.createChooser(it,"Choose Email Client"));
Intent it=new Intent(Intent.ACTION_SEND);
String[] tos={"[email protected]"};
String[]ccs={"[email protected]"};
it.putExtra(Intent.EXTRA_EMAIL, tos);
it.putExtra(Intent.EXTRA_CC, ccs);
it.putExtra(Intent.EXTRA_TEXT, "Theemail body text");
it.putExtra(Intent.EXTRA_SUBJECT, "Theemail subject text");
it.setType("message/rfc822");
startActivity(Intent.createChooser(it,"Choose Email Client"));
Intent it = newIntent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_SUBJECT, "Theemail subject text");
it.putExtra(Intent.EXTRA_STREAM,"file:///sdcard/mysong.mp3");
sendIntent.setType("audio/mp3");
startActivity(Intent.createChooser(it,"Choose Email Client"));
10.播放多媒体
Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri =Uri.parse("file:///sdcard/song.mp3");
it.setDataAndType(uri,"audio/mp3");
startActivity(it);
Uri uri
=Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,"1");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
11.uninstall apk
Uri uri =Uri.fromParts("package", strPackageName, null);
Intent it = newIntent(Intent.ACTION_DELETE, uri);
startActivity(it);
12.install apk
Uri installUri = Uri.fromParts("package","xxx", null);
returnIt = newIntent(Intent.ACTION_PACKAGE_ADDED, installUri);
打开照相机
<1>Intent i = new Intent(Intent.ACTION_CAMERA_BUTTON, null);
this.sendBroadcast(i);
<2>long dateTaken = System.currentTimeMillis();
String name = createName(dateTaken) + ".jpg";
fileName = folder + name;
ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, fileName);
values.put("_data", fileName);
values.put(Images.Media.PICASA_ID, fileName);
values.put(Images.Media.DISPLAY_NAME, fileName);
values.put(Images.Media.DESCRIPTION, fileName);
values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, fileName);
Uri photoUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values);
Intent inttPhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
inttPhoto.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(inttPhoto, 10);
14.从gallery选取图片
Intent i = new Intent();
i.setType("image/*");
i.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(i, 11);
打开录音机
Intent mi = new Intent(Media.RECORD_SOUND_ACTION);
startActivity(mi);
16.显示应用详细列表
Uri uri =Uri.parse("market://details?id=app_id");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
//where app_id is the application ID, findthe ID
//by clicking on your application on Markethome
//page, and notice the ID from the addressbar
刚才找app id未果,结果发现用package name也可以
Uri uri =Uri.parse("market://details?id=");
这个简单多了
17寻找应用
Uri uri =Uri.parse("market://search?q=pname:pkg_name");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
//where pkg_name is the full package pathfor an application
18打开联系人列表
<1>
Intent i = new Intent();
i.setAction(Intent.ACTION_GET_CONTENT);
i.setType("vnd.android.cursor.item/phone");
startActivityForResult(i, REQUEST_TEXT);
<2>
Uri uri = Uri.parse("content://contacts/people");
Intent it = new Intent(Intent.ACTION_PICK, uri);
startActivityForResult(it, REQUEST_TEXT);
19 打开另一程序
Intent i = new Intent();
ComponentName cn = newComponentName("com.yellowbook.android2",
"com.yellowbook.android2.AndroidSearch");
i.setComponent(cn);
i.setAction("android.intent.action.MAIN");
startActivityForResult(i, RESULT_OK);
20.调用系统编辑添加联系人(高版本SDK有效):
Intent it = newIntent(Intent.ACTION_INSERT_OR_EDIT);
it.setType("vnd.android.cursor.item/contact");
//it.setType(Contacts.CONTENT_ITEM_TYPE);
it.putExtra("name","myName");
it.putExtra(android.provider.Contacts.Intents.Insert.COMPANY,
"organization");
it.putExtra(android.provider.Contacts.Intents.Insert.EMAIL,"email");
it.putExtra(android.provider.Contacts.Intents.Insert.PHONE,"homePhone");
it.putExtra(android.provider.Contacts.Intents.Insert.SECONDARY_PHONE,
"mobilePhone");
it.putExtra( android.provider.Contacts.Intents.Insert.TERTIARY_PHONE,
"workPhone");
it.putExtra(android.provider.Contacts.Intents.Insert.JOB_TITLE,"title");
startActivity(it);
21.调用系统编辑添加联系人(全有效):
Intent intent = newIntent(Intent.ACTION_INSERT_OR_EDIT);
intent.setType(People.CONTENT_ITEM_TYPE);
intent.putExtra(Contacts.Intents.Insert.NAME, "My Name");
intent.putExtra(Contacts.Intents.Insert.PHONE, "+1234567890");
intent.putExtra(Contacts.Intents.Insert.PHONE_TYPE,Contacts.PhonesColumns.TYPE_MOBILE);
intent.putExtra(Contacts.Intents.Insert.EMAIL, "[email protected]");
intent.putExtra(Contacts.Intents.Insert.EMAIL_TYPE,
Contacts.ContactMethodsColumns.TYPE_WORK);
startActivity(intent);
★intent action大全:
android.intent.action.ALL_APPS
android.intent.action.ANSWER
android.intent.action.ATTACH_DATA
android.intent.action.BUG_REPORT
android.intent.action.CALL
android.intent.action.CALL_BUTTON
android.intent.action.CHOOSER
android.intent.action.CREATE_LIVE_FOLDER
android.intent.action.CREATE_SHORTCUT
android.intent.action.DELETE
android.intent.action.DIAL
android.intent.action.EDIT
android.intent.action.GET_CONTENT
android.intent.action.INSERT
android.intent.action.INSERT_OR_EDIT
android.intent.action.MAIN
android.intent.action.MEDIA_SEARCH
android.intent.action.PICK
android.intent.action.PICK_ACTIVITY
android.intent.action.RINGTONE_PICKER
android.intent.action.RUN
android.intent.action.SEARCH
android.intent.action.SEARCH_LONG_PRESS
android.intent.action.SEND
android.intent.action.SENDTO
android.intent.action.SET_WALLPAPER
android.intent.action.SYNC
android.intent.action.SYSTEM_TUTORIAL
android.intent.action.VIEW
android.intent.action.VOICE_COMMAND
android.intent.action.WEB_SEARCH
android.net.wifi.PICK_WIFI_NETWORK
android.settings.AIRPLANE_MODE_SETTINGS
android.settings.APN_SETTINGS
android.settings.APPLICATION_DEVELOPMENT_SETTINGS
android.settings.APPLICATION_SETTINGS
android.settings.BLUETOOTH_SETTINGS
android.settings.DATA_ROAMING_SETTINGS
android.settings.DATE_SETTINGS
android.settings.DISPLAY_SETTINGS
android.settings.INPUT_METHOD_SETTINGS
android.settings.INTERNAL_STORAGE_SETTINGS
android.settings.LOCALE_SETTINGS
android.settings.LOCATION_SOURCE_SETTINGS
android.settings.MANAGE_APPLICATIONS_SETTINGS
android.settings.MEMORY_CARD_SETTINGS
android.settings.NETWORK_OPERATOR_SETTINGS
android.settings.QUICK_LAUNCH_SETTINGS
android.settings.SECURITY_SETTINGS
android.settings.SETTINGS
android.settings.SOUND_SETTINGS
android.settings.SYNC_SETTINGS
android.settings.USER_DICTIONARY_SETTINGS
android.settings.WIFI_IP_SETTINGS
android.settings.WIFI_SETTINGS
android.settings.WIRELESS_SETTINGS
‘肆’ android中常用的资源有哪些
Android 资源类型
1.字符串资源
>>1.普通字符串
>>2.字符串数组
复制代码
<resources>
<string-array name="planets_array">
<item>aaa</item>
<item>bbb</item>
</string-array>
</resources>
复制代码
获取方式:getResources().getStringArray(R.array.planets_array)
>>3.复数字符串资源
某些自然语言中,不同的数字在使用方法上会有所不同,比如one book,two books。当数量大于1时,会使用不同的名词或其它复数形式;
复制代码
<resources>
<plurals name="numberOfp">
<item quantity="one">one person</item>
<item quantity="other">more persons</item>
</plurals>
</resources>
复制代码
quantity属性的值除了one和other外,还可以是zero,two,few,many;
引用复数字符串:
// 引用数字为1的复数字符串
getResources().getQuantityString(R.pluarlas.numberOfp,1);
// 引用数字为其它值的复数字符串
getResources().getQuantityString(R.pluarlas.numberOfp,10,10);
>>4.占位符格式化字符串
常用的格式化字符串三种方法:
>>1.在字符串中使用引号
字符串中的值虽然可以随意指定,但是当遇到特殊符号时(双引号,单引号)就需要采取特殊的方法来处理这些符号。
如果是单引号(')可以使用转义符(\)或用双引号(")将整个字符串括起来,如果是双引号,可以在双引号前使用转义符(\)。
<resources>
<string name="str1">"This'll work"</string> This'll work
<string name="str2">This\'ll work</string> This'll work
<string name="str3">\"apple\"</string> "apple"
</resources>
>>2.用占位符格式化字符串
使用String.format(String,Object...)方法可以格式化带占位符的字符串,只需要在字符串中插入占位符,就可以使用String.format方法格式化字符串资源,format方法要求的占位符用%1,%,...,%n,其实第n个占位符与format方法的n+1个参数值对应;
<resources>
<!-- $s表示该占位符被字符串替换,$d表示该占位符被整数替换 -->
<string name="str1">hello,%1$s!You have %2$d new message</string>
</resources>
String str1 =String.format(getResources().getString(R.string.str1), "ly", 17);
>>3.使用HTML标签格式化字符串资源
字符串资源支持一些HTML标签,因此可以直接在字符串资源中使用这些HTML标签格式化字符串
字符串资源支持如下的HTML标签
<b>粗体字
<i>斜体定
<u>带下划线的字
有时需要同时使用HTML标签和占位符格式化字符串,如果使用String.format方法格式化字符串,会忽略字符串中的所有HTML标签。为了使format方法可以格式化带
HTML标签的确字符,需要使用Html.formHTML方法处理字符串;
<resources>
<string name="hello_world">Welcome to <b>android</b></string>
<string name="str2">Hello,%1$s! You have <b> %2d new messages </b></string> <!--同时包含占位符和html标签的字符串-->
</resources>
由于需要使用Html.formHTML方法处理字符串,因此HTML标签中的 "<" 需要使用 "<" 表示 ">" 并不需要处理
获取字符串:
String text = String.format(getResources().getString(R.string.str2), "ly", 10);
CharSequence styledText = Html.fromHtml(text);
// 如果format的某个参数包含HTML的特殊字符,如"<","&",可以使用如下方式读取字符串的值;
String escapedUsername = TextUtils.htmlEncode("");
String text1 = String.format(getResources().getString(R.string.str2), "ly", 20);
2.Layout资源
1、如果根节点是View,除了<requestFocus>标签外,不能添加任何子标签,<requestFocus>可能被添加到布局文件的任何View中,表示该标签对应的控件在显示时处于焦点状态,整个布局文件只能有一个<requestFocus>标签
2、根节点是ViewGroup,常用的布局都是ViewGroup的子类
3、重用布局文件
如果想重用某个布局文件,可以使用<include>标签
<include layout="@layout/xx_layout" />
如果想让一个布局文件被另一个布局文件引用(使用<include>标签),可以使用<merge>作为被引用布局文件的根节点,由于<merge>并不会生成任何标签(在大量引用布局文件时不至于生成大量无用的标签),但是xml文件必须要有一个根节点,因此<merge>所起的作用就是作为xml文件的根节点,以使xml文件在编译时不至于出错,可以把<merge>当成<FrameLayout>使用;
3.图像资源
在图像资源中可以存储图像文件,还可以使用xml格式的图像资源来控件图像的状态和行为;
>>1.普通图像资源
Drawable da = getResources().getDrawable(R.drawable.xxx);
>>2.xml图像资源
xml图像资源其实就是在drawable目录中指定的xml文件,此种方式可以额外指定图像的某些属性,如图像拉动、排列方式;
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_launcher"
android:tileMode="repeat" >
</bitmap>
>>3.Nine-Patch图像资源
Nine-Patch图像资源文件必须以9.png作为文件扩展名,如abc.9.png
该图像资源的主要作用是:防止图像的某一部分被拉伸;确定将图像作为背景图的控件中内容显示的位置;
Android SDK本身提供了一个Draw 9-patch的工具,启动<sdk目录>\tools\draw9patch.bat命令启动该工具;
可以通过此工具在png图的四周绘制1个像素粗的直线,上边缘和左边缘的直线分别表示图像在水平和垂直方向可位值的范围。如果水平或垂直方向的某个区域不需要拉伸,则可不绘制相应的直线;右边缘和下边缘的直线分别表示图像所在控件中内容的显示范围,内容只在右边缘和下边缘绘制直线的区域显示,表示内容显示范围和拉伸范围的两给直线有一个重要区别就是表示内容显示范围的直线中间不能断开,而表示拉伸范围的直线中间可以断开;
Nine-Patch图像资源与普通图像资源引用方法相同,在引用时只写文件名,活力.9.png;
>>4.XML Nine-Patch图像资源
Nine-Patch图像资源也有与其对应的xml图像资源,使用<nine-patch>标签来引用Nine-Patch格式的图像,有一个设置抖动的android:dither属性;
>>5.图层资源
图层资源类似于<FrameLayout>不同的是<FrameLayout>标签中可以包含任意的控件,而图层资源每一层都只有是图像,定义图层资源必须使用<layer-list>作为资源文件的根节点,<layer-list>标签中包含多个<item>标签,每一个标签表示一个图像,最后一个<item>标签显示在最顶层;
默认情况下,图像会尽量充满显示图像的范围,图像可能会有拉伸,为了避免图像拉伸,可以在<item>标签中使用<bitmap>标签引用图像;
复制代码
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:bottom="10dip" 底端偏移的像素
android:left="10dip" 左侧偏移的像素
android:right="10dip" ...
android:top="10dip"> ...
<bitmap
android:gravity="center"
android:src="@drawable/hell" />
</item>
</layer-list>
复制代码
某些情况下,可以使用图层来代替<FrameLayout>
>>6.图像状态资源,处理控件不同状态下的显示状态
复制代码
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bm" android:state_focused="true"></item>
<item android:drawable="@drawable/bm" android:state_pressed="true"></item>
<item android:drawable="@drawable/bm"></item>
</selector>
// android:state_focused/pressed设置为true表示当前item的drawable属性为获取焦点和按下时的drawable样式
复制代码
>>7.图像级别(Level)资源
图像资源状态只能指定几种有限的状态,可以通过图像级别指定更多的状态;图像级别是一个整数的区间,可以通过ImageView.setImageLevel或Drawable.setLevel方法切换不同状态的图像;图像级别资源是xml文件,必须以<level-list>为根节点,每一个item表示一个级别区间,下面是一个xml文件;通过ImageView.setImageLevel(level),根据level所在的区间设定显示的图像资源,如果level不在任一区间内则清空ImageView当前图像;
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:maxLevel="2" android:minLevel="0" android:drawable="@drawable/hell" />
<item android:maxLevel="4" android:minLevel="3" android:drawable="@drawable/hell" />
</level-list>
>>8.淡入淡出(Cross-fade)资源
也是切换两个图像(不支持多于两个图像的切换),并且使这两个图像以淡入淡出效果进行切换,如电灯在开关时逐渐变亮或逐渐变暗;
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/hell"/>
<item android:drawable="@drawable/hell"/>
</transition>
TransitionDrawable da = ...;
// 从第一张图片切换到第二张图片,时间效果为1秒
da.startTransition(1000);
// 从第二张图片切换到第一张图片,时间效果为1秒
da.reverseTransition(1000);
>>9.嵌入(insert)图像资源
使用场景:要显示的图像要求要小于装载图像的View(图小于View区域),也是通过xml资源定义,只有一个节点inset。
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/hell"
android:insetLeft="10dip" > <!--图像距离左边的距离,延伸-->上/下/右的距离-->
</inset>
>>10.剪切(Clip)图像资源,使用剪切图像资源可以只显示图像的一部分,如可以通过此来制作进度条;
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:clipOrientation="horizontal" // 指定截取的方向
android:drawable="@drawable/hell" // 指定要截取的图像
android:gravity="left" > // 指定截取的方式,在此为从左侧开始截取
</clip>
ClipDrawable cd = ...;
cd.setLevel(1000);
上面ClipDrawable.setLevel(level)设置截取的图像宽度,ClipDrawable预设了最大值10000(表示不进行截取),最小值为0(表示不显示);
>>11. 比例(Scale)图像资源
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/hell"
android:scaleGravity="center" // 设置图像显示的位置
android:scaleHeight="70%" // 设置图像显示的高度
android:scaleWidth="80%" > // 设置图像显示的宽度
</scale>
>>12.形状资源
复制代码
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" > shape可以指定就矩形,oval(椭圆),line(直线),ring(圆)
<corners> 定义圆角
</corners>
<gradient
android:angle="45"
android:startColor="#000000"
android:endColor="#FFFFFF" > 定义颜色渐变,从左下角到或上角
</gradient>
<padding> 定义控件内容到边框的距离
</padding>
<stroke> 定义边线
</stroke>
<solid> 定义填充
</solid>
<size> 定义大小
</size>
</shape>
复制代码
13.菜单资源
菜单不仅可以在onCreateContextMenu或onCreateOptionsMenu方法中通过代码创建,还可以在res/menu目录中建立相应的菜单资源文件,并在上面两个方法中加载菜单资源;
菜单资源文件必须以<menu>标签作为根节点,每一个菜单项用一个<item>表示,如果要定义子菜单,可以在<item>标签中包含<menu>标签;如果想将多个菜单项划为一组,可以使用<group>包含多个<item>标签;
复制代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
复制代码
查看MenuInflater.inflate(int,Menu)
复制代码
/**
* Inflate a menu hierarchy from the specified XML resource.
*
* @param menuRes Resource ID for an XML layout resource to load (e.g., <code>R.menu.main_activity</code>)
* @param menu The Menu to inflate into. The items and submenus will be added to this Menu.
*/
public void inflate(int menuRes, Menu menu) {
XmlResourceParser parser = null;
try {
parser = mContext.getResources().getLayout(menuRes);
AttributeSet attrs = Xml.asAttributeSet(parser);
parseMenu(parser, attrs, menu);
} catch ...finally {
if (parser != null) parser.close();
}
}
复制代码
14.样式与主题(style/theme)
>>1.样式style
android中样式和css中样式作用是一样的,都是用于为界面元素定义显示风格,它是一个包含一个或者多个控件属性的集合。
定义样式需要在res/values/styles.xml中进行定义,如下是一个样式的定义:
<style name="textViewStyle">
<item name="android:textSize">22sp</item>
<item name="android:textColor">#FF0000</item>
</style>
<style name="textViewStyle1" parent="textViewStyle"></style><!-- 此样式继承自textViewStyle -->
<style name="textViewStyle.Livingstone"><!-- 样式继承的另一种写法,但不可用此写法继承Android自带的定义样式? -->
<item name="android:textColor">#00FF00</item>
</style>
所有定义的样式都会在R文件中自动生成一个资源ID,加一个点表示样式继承会生成上图所示的资源id;
样式的引用:
<TextView
style="@style/textViewStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="hello" />
>>2.主题Theme
主题应用于整个应用或者activity,样式应用于具体的控件上。主题的应用与样式定义一样,不同的是主题还可以设置窗口的显示风格;主题的引用需要在清单文件中进行引用,如引用到整个应用之上就需要在Application节点中进行配置引用,而引用到单个Activity只需要在此Activity中进行配置引用;
复制代码
<style name="Livingstonetheme"><!--此定义是一个无Title的主题-->
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">?android:windowNoTitle</item>
<!-- 问号表示引用此主题中android:windowNoTitle属性的值 -->
<item name="android:textSize">18sp</item>
</style>
复制代码
android系统定义了一些属性,如android:theme="@android:style/Theme.Dialog",该主题可以让Activity看起来像一个对话框,更多主题可以在文档reference->android->R.style中查看。当主题里面的样式属性值与样式里面的属性值发生冲突的时候会显示样式里面的值;
15.其它资源
在资源文件中还可以包括尺寸(dimen)、整数(integer)、布尔(bool) 、整形数组资源(integer-array)、资源数组(array)、颜色(color)
TypedArray ta = getResources().obtainTypedArray(int id); // 获取数组资源,包括integer-array、array
Final总结:
除了res/values目录中的资源名,其它目录的资源都会以文件名在R类的相应子类中生成变量;而res/values中的资源会以name属性值为变量名在R类的相应子类中生成变量;
‘伍’ Google I/O 2016 上发布的 Android N 有哪些新特性
1.多窗口支持
在 Android N 中,我们为该平台引入了一个新的而且非常需要的多任务处理功能 — 多窗口支持。
现在,用户可以一次在屏幕上打开两个APP。
在运行 Android N 的手机和平板电脑上,用户可以并排运行两个APP,或者处于分屏模式时一个APP位于另一个APP之上。用户可以通过拖动两个APP之间的分隔线来调整APP。
在 Android TV 设备上,APP可以将自身置于画中画面模式,从而让它们可以在用户浏览或与其他APP交互时继续显示内容。如需了解详细信息,请参阅下文。
多窗口支持为您提供新的吸引用户方式,特别是在平板电脑和其他更大屏幕的设备上。您甚至可以在您的APP中启用拖放,从而使用户可以方便地将内容拖放到您的应用或从其中拖出内容—这是一个非常好的增强用户体验的方式。
向您的APP添加多窗口支持并配置多窗口显示的处理方式非常简单。例如,您可以指定您的 Activity 允许的最小尺寸,从而防止用户将 Activity 调整到该尺寸以下。您还可以为APP禁用多窗口显示,这可确保系统将仅以全屏模式显示APP。
如需了解详细信息,请参阅多窗口支持开发者文档。
2.Notification 增强功能
在 Android N 中,我们重新设计了Notification,使其更易于使用并且速度更快。部分变更包括:
- 模板更新:我们正在更新Notification模板,新强调了图片跟头像。开发者将能够充分利用新模板,只需进行少量的代码调整。
- 绑定的Notification:系统可以将消息组合在一起(例如,按消息主题)并显示组。用户可以适当地进行 Dismiss 或 Archive 等操作。如果您已实现 Android Wear 的通知,那么您已经很熟悉此模型。
- 直接回复:对于实时通信应用,Android 系统支持内联回复,以便用户可以直接在通知界面中快速回复短信。
- 自定义视图:两个新的 API 让您在通知中使用自定义视图时可以充分利用系统的风格,如Notification标题和操作。
如需了解如何实现新功能的信息,请参阅通知指南。
2.配置文件指导的 JIT/AOT 编译
在 Android N 中,我们添加了 Just in Time (JIT) 编译器,对 ART 进行代码分析,让它可以在应用运行时持续提升 Android 应用的性能。JIT 编译器对 Android 运行组件当前的 Ahead of Time (AOT) 编译器进行了补充,有助于提升运行时性能,节省存储空间,加快应用更新和系统更新速度。
配置文件指导的编译让 Android 运行组件能够根据应用的实际使用以及设备上的情况管理每个应用的 AOT/JIT 编译。例如,Android 运行组件维护每个应用的热方法的配置文件,并且可以预编译和缓存这些方法以实现最佳性能。对于应用的其他部分,在实际使用之前不会进行编译。
除提升应用的关键部分的性能外,配置文件指导的编译还有助于减少整个 RAM 占用,包括关联的二进制文件。此功能对于低内存设备非常尤其重要。
Android 运行组件在管理配置文件指导的编译时,可最大程度降低对设备电池的影响。仅当设备处于空闲状态和充电时才进行编译,从而可以通过提前执行该工作节约时间和省电。
3.快速的应用安装路径
Android 运行组件的 JIT 编译器最实际的好处之一是应用安装和系统更新的速度。即使在 Android 6.0 中需要几分钟进行优化和安装的大型应用,现在只需几秒钟就可以完成安装。系统更新也变得更快,因为省去了优化步骤。
4.瞌睡模式
Android 6.0 推出了瞌睡模式,即设备处于空闲状态时,通过推迟应用的 CPU 和网络活动以实现省电目的的系统模式,例如,设备放在桌上或抽屉里时。
现在,在 Android N 中,瞌睡模式又前进了一步,在外出时也可以省电。只要屏幕关闭了一段时间,且设备未插入电源,瞌睡模式就会对应用使用熟悉的 CPU 和网络限制。这意味着用户即使将设备放入口袋里也可以省电。
屏幕关闭片刻后,设备在使用电池时,瞌睡模式将限制网络访问,同时延迟作业和同步。在短暂的维护时间范围后,其允许应用访问网络,并执行延迟的作业/同步。打开屏幕或将设备插入电源会使设备退出瞌睡模式。
当设备再次处于静止状态时,屏幕关闭且使用电池一段时间,瞌睡模式针对 PowerManager.WakeLock,AlarmManager 警报和 GPS/Wi-Fi 扫描应用完整 CPU 和网络限制。
无论设备是否处于运动状态,将应用调整到瞌睡模式的最佳做法均相同,因此,如果您已更新应用以妥善处理瞌睡模式,则一切就绪。如果不是,请立即开始将应用调整到瞌睡模式。
5.Project Svelte:后台优化
Project Svelte 在持续改善,以最大程度减少生态系统中一系列 Android 设备中系统和应用使用的 RAM。在 Android N 中,Project Svelte 注重优化在后台中运行应用的方式。
后台处理是大多数应用的一个重要部分。处理得当,可让您实现非常棒的用户体验 — 即时、快速和情境感知。如果处理不得当,后台处理会毫无必要地消耗 RAM(和电池),同时影响其他应用的系统性能。
自 Android 5.0 发布以来,JobScheler 已成为执行后台工作的首选方式,其工作方式有利于用户。应用可以在安排作业的同时允许系统基于内存、电源和连接情况进行优化。JobScheler 可实现控制和简洁性,我们想要所有应用都使用它。
另一个非常好的选择是 GCMNetworkManager(Google Play 服务的一部分),其在旧版 Android 中提供类似的作业安排和兼容性。
我们在继续扩展 JobScheler 和 GCMNetworkManager,以符合多个用例 — 例如,在 Android N 中,现在,您可以基于内容提供程序中的更改安排后台工作。同时,我们开始弃用一些较旧的模式,这些模式会降低系统性能,特别是低内存设备的系统性能。
在 Android N 中,我们删除了三个常用隐式广播 — CONNECTIVITY_ACTION、ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO — 因为这些广播可能会一次唤醒多个应用的后台进程,同时会耗尽内存和电池。如果您的应用收到这些广播,请充分利用 N Developer Preview 以迁移到 JobScheler 和相关的 API。
如需了解详情,请查看后台优化文档。
6.Data Saver
在移动设备的整个生命周期,蜂窝数据计划的成本通常会超出设备本身的成本。对于许多用户而言,蜂窝数据是他们想要节省的昂贵资源。
Android N 推出了 Data Saver 模式,这是一项新的系统服务,有助于减少应用使用的蜂窝数据,无论是在漫游,账单周期即将结束,还是使用少量的预付费数据包。Data Saver 让用户可以控制应用使用蜂窝数据的方式,同时让开发者打开 Data Saver 时可以提供更多有效的服务。
用户在 Settings 中启用 Data Saver 且设备位于按流量计费的网络上时,系统屏蔽后台数据使用,同时指示应用在前台尽可能使用较少的数据 — 例如,通过限制用于流媒体服务的比特率、降低图片质量、延迟最佳的预缓冲等方法来实现。用户可以将特定应用加入白名单以允许后台按流量的数据使用,即使在打开 Data Saver 时也是如此。
Android N 继承了 ConnectivityManager,以便为应用检索用户的 Data Saver 首选项并监控首选项变更提供一种方式。所有应用均应检查用户是否已启用 Data Saver 并努力限制前台和后台数据的使用。
7.快速设置Tile API
“快速设置”通常用于直接从通知栏显示关键设置和操作,非常简单。在 Android N 中,我们已扩展“快速设置”的范围,使其更加有用更方便。
我们为额外的“快速设置”Tile添加了更多空间,用户可以通过向左或向右滑动跨分页的显示区域访问它们。我们还让用户可以控制显示哪些“快速设置”Tile以及显示的位置 — 用户可以通过拖放Tile来添加或移动Tile。
对于开发者,Android N 还添加了一个新的 API,从而让您可以定义自己的“快速设置”Tile,使用户可以轻松访问您应用中的关键控件和操作。
对于急需或频繁使用的控件和操作,保留“快速设置”Tile,且不应将其用作启动应用的快捷方式。
定义Tile后,您可以将它们显示给用户,用户可通过拖放将Tile添加到“快速设置”。
如需创建应用Tile的更多信息,请参阅可下载的 API 参考中的 android.service.quicksettings.Tile。
8.号码屏蔽
Android N 现在支持在平台中进行号码屏蔽,提供框架 API,让服务提供商可以维护屏蔽的号码列表。默认短信应用、默认手机应用和提供商应用可以对屏蔽的号码列表进行读取和写入操作。其他应用则无法访问此列表。
通过使号码屏蔽成为平台的标准功能,Android 为应用提供一致的方式来支持广泛的设备上的号码屏蔽。应用可以利用的其他优势包括:
- 还会屏蔽已屏蔽的来电号码发出的短信
- 通过 Backup & Restore(备份和还原)功能可以跨重置和设备保留屏蔽的号码
- 多个应用可以使用相同的屏蔽号码列表
此外,通过 Android 的运营商应用集成表示运营商可以读取设备上屏蔽的号码列表,并为用户执行服务端屏蔽,以阻止不需要的来电和短信通过任何介质(如 VOIP 端点或转接电话)到达用户。
如需了解详细信息,请参阅可下载的 API 参考中的 android.provider.BlockedNumberContract。
9.来电过滤
Android N 允许默认的手机应用过滤来电。手机应用执行此操作的方式是实现新的 CallScreeningService,该方法允许手机应用基于来电的 Call.Details 执行大量操作,例如:
- 拒绝来电
- 不允许来电到达呼叫日志
- 不向用户显示来电通知
如需了解详细信息,请参阅可下载的 API 参考中的 android.telecom.CallScreeningService。
10.多区域设置支持、多语言
Android N 现在允许用户在设置中选择多个区域设置,以更好地支持双语用例。应用可以使用新的 API 获取用户选择的区域设置,然后为多区域设置用户提供更成熟的用户体验 — 如以多个语言显示搜索结果,并且不会以用户了解的语言翻译网页。
除多区域设置支持外,Android N 还扩展了用户可用的语言范围。它针对常用语言提供超过 25 种的变体,如英语、西班牙语、法语和阿拉伯语。它还针对 100 多种新语言添加了部分支持。
应用可以通过调用 LocaleList.GetDefault() 获取用户设置的区域设置列表。为支持扩展的区域设置数量,Android N 正在改变其解析资源的方式。请务必使用新的资源解析逻辑测试和验证您的应用是否能如期运行。
如需有关新资源解析行为和应遵循的最佳做法的更多信息,请参阅多语言支持。
11.Android 中的 ICU4J API
Android N 目前在 Android 框架(位于 android.icu 软件包下)中提供 ICU4J API 的子集。迁移很简单,主要是需要从 com.java.icu 命名空间更改为 android.icu。如果您已在您的应用中使用 ICU4J 捆绑包,切换到 Android 框架中提供的 android.icu API 可以大量节省 APK 大小。
如果要了解有关 Android ICU4J API 的更多信息,请参阅 ICU4J 支持。
12.OpenGL™ ES 3.2 API
Android N 添加了框架接口和对 OpenGL ES 3.2 的平台支持,包括:
- 来自 Android 扩展包 (AEP) 的所有扩展(EXT_texture_sRGB_decode 除外)。
- 针对 HDR 的浮点帧缓冲和延迟着色。
- BaseVertex 绘图调用可实现更好的批处理和流媒体服务。
- 强大的缓冲区访问控制可减少 WebGL 开销。
Android N 上适用于 OpenGL ES 3.2 的框架 API 与 GLES32 类一起提供。使用 OpenGL ES 3.2 时,请务必通过 标记和 android:glEsVersion 属性在您的清单文件中声明要求。
如需了解有关使用 OpenGL ES 的信息,包括如何在运行时检查设备支持的 OpenGL ES 版本,请参阅 OpenGL ES API 指南。
13.Android TV 录制
Android N 通过新的录制 API 添加了从 Android TV 输入服务录制和播放内容的功能。构建在现有时移 API 之上,TV 输入服务可以控制能够录制的渠道数据、保存录制的会话的方式,同时可通过录制的内容管理用户交互。
如需了解详细信息,请参阅 Android TV 录制 API。
14.Android for Work
Android for Work 针对运行 Android N 的设备添加了许多新功能和 API。部分重要内容如下— 有关与 Android N 相关的 Android for Work 更新的完整列表,请参阅 Android for Work 变更。
15.关闭工作
在具有托管配置文件的设备上,用户可以切换工作模式。工作模式关闭时,管理的用户临时关闭,其禁用托管配置文件应用、后台同步和通知。这包括配置文件所有者应用。关闭工作模式时,系统显示永久状态图标,以提醒用户他们无法启动工作应用。启动器指示该工作应用和小组件无法访问。
16.Always on VPN
设备所有者和配置文件所有者可以确保工作应用始终通过指定的 VPN 连接。系统在设备启动后自动启动该 VPN。
新的 DevicePolicyManager 方法为 setAlwaysOnVpnPackage() 和 getAlwaysOnVpnPackage()。
由于 VPN 服务无需应用交互即可由系统直接绑定,因此,VPN 客户端必须针对 Always on VPN 处理新的入口点。和以前一样,由与操作匹配的 Intent 过滤器将服务指示给系统。android.net.VpnService。
用户还可以使用 Settings>More>Vpn 在主要用户中手动设置实现 VPNService 方法的 Always on VPN 客户端。
17.辅助工具增强功能
Android N 现在针对新的设备设置直接在欢迎屏幕上提供“Vision Settings”。这使用户可以更容易发现和配置他们设备上的辅助工具功能,包括放大手势、字体大小、显示屏尺寸和 TalkBack。
随着这些辅助工具功能更为突出,在启用这些功能后,您的用户更可能试用您的应用。请务必提前启用这些设置测试您的应用。您可以通过 Settings > Accessibility 启用它们。
还是在 Android N 中,辅助工具服务现在可以帮助具有动作障碍的用户触摸屏幕。全新的 API 允许使用人脸追踪、眼球追踪、点扫描等功能构建服务,以满足这些用户的需求。
如需了解详细信息,请参阅可下载的 API 参考 中的 android.accessibilityservice.GestureDescription
18.直接启动
直接启动可以缩短设备启动时间,让注册的应用具有有限的功能,即使在意外重启后。例如,如果当用户睡觉时加密的设备重启,那么注册的警报、消息和来电现在可以和往常一样继续通知用户。这也意味着重启后辅助工具服务会立即可用。
在 Android N 中,直接启动充分利用基于文件的加密,以针对系统和应用数据启用细化的加密策略。为系统和应用数据。系统针对选定的系统数据和显式注册的应用数据使用设备加密的存储。默认情况下,凭据加密的存储可用于所有其他系统数据、用户数据、应用及应用数据。
启动时,系统在受限的模式中启动,仅访问设备加密的数据,不会对应用或数据进行常规访问。如果您有想要在此模式下运行的组件,您可以通过在清单文件中设置标记注册它们。重启后,系统通过广播 LOCKED_BOOT_COMPLETED Intent 激活注册的组件。系统确保注册的设备加密的应用数据在解锁前可用。所有其他数据在用户确认锁定屏幕凭据进行解密前均不可用。
如需了解详细信息,请参阅直接启动。
19.密钥认证
使用硬件支持的密钥库,可更安全地在 Android 设备上创建、存储和使用加密密钥。它们可保护密钥免受 Linux 内核、潜在的 Android 漏洞的攻击,也可防止从已取得 root 权限的设备提取密钥。
为了让硬件支持的密钥库使用起来更简单和更安全,Android N 引入了密钥认证。应用和关闭的设备可使用密钥认证以坚决地确定 RSA 或 EC 密钥对是否受硬件支持、密钥对的属性如何,以及其使用和有效性有何限制。
应用和关闭的设备服务可以通过 X.509 认证证书(必须由有效的认证密钥签署)请求有关密钥对的信息。认证密钥是一个 ECDSA 签署密钥,其在出厂时被注入设备的硬件支持的密钥库。因此,有效的认证密钥签署的认证证书可确认硬件支持的密钥库是否存在,以及该密钥库中密钥对的详细信息。
为确保设备使用安全的官方 Android 出厂映像,密钥认证要求设备 bootloader 向可信执行环境 (TEE) 提供以下信息:
设备上安装的操作系统版本和补丁级别
验证的启动公钥和锁定状态。
如需了解有关硬件支持的密钥库功能的详细信息,请参阅硬件支持的密钥库指南。
除密钥认证外,Android N 还推出了指纹绑定密钥,在指纹注册时不会撤销。
20.网络安全性配置
在 Android N 中,通过使用说明性网络安全性配置(而不是使用传统的易出错的编程 API(例如,X509TrustManager)),应用可以安全地自定义其安全(HTTPS、TLS)连接的行为,无需任何代码修改。
支持的功能:
自定义信任锚。让应用可以针对其安全连接自定义哪些证书颁发机构 (CA) 受信任。例如,信任特定的自签署证书或受限的公共 CA 集。
仅调试重写。让应用开发者可以安全调试其应用的安全连接,而不会增加安装基础的风险。
明文流量退出。让应用可以防止自身意外使用明文流量。
固定证书。这是一项高级功能,让应用可以针对安全连接限制哪些服务器密钥受信任。
如需了解详细信息,请参阅网络安全性配置。
‘陆’ myeclipse怎么搭建android开发环境
myeclipse搭建android开发环境安装adt就可以。
工具/原料
eclipse
jdk
方法/步骤
从eclipse中选择help下面的install new software