导语 Android开发有你更精彩
手持智能终端的快速普及为移动互联网奠定了庞大的用户基础, 各种精彩纷呈的应用为移动互联网发展提供了动力源泉, 发一条微博或者微信就可以做成一门生意; 一个应用可以集合一个群体, 用户的忠诚度、活跃度都得到了很大程度的提升,“找一找、摇一摇、扫一扫”, 信息流通的渠道日益丰富……这样的场景, 十年前甚至五年前能想象吗?
0.1 Android来袭
当前, 智能手机应用对各个领域进行着“大渗透”。例如, 过去那种依赖于美食杂志的专业推荐已经不复存在, 来自人们分享的真实感受成为更实用的评价。智能手机、手机应用、社交媒体让人们对就餐的真实分享变得不受阻碍, 人们摇一摇手机就可以找到餐馆, 扫一扫微信二维码就可以打折, 传统的会员卡变成了存在手机上的虚拟卡片, 移动互联网让人们的饮食消费决策变得立体而更精准。随着无线带宽越来越高, 使得更多内容丰富的应用程序植入手机成为可能, 如视频通话、视频点播、移动互联网冲浪、在线看书/听歌、内容分享等。为了实现这些需求, 必须有一个好的开发平台来支持, 由Google公司发起的OHA联盟走在了业界的前列——2007年11月推出了开放的Android平台, 任何公司及个人都可以免费获取到源代码及开发SDK。
小贴士
Android目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”。Android一词最早出现于法国作家利尔亚当在1886 年发表的科幻小说《未来夏娃》 (L'ève future)中,他将外表像人的机器起名为Android。
Android在正式发行之前,以著名的机器人名称来对其进行命名,后来由于涉及版权问题,谷歌将其命名规则变更为用甜点作为系统版本的代号。甜点命名法开始于Android 1.5发布的时候。比如:纸杯蛋糕(Android 1.5),甜甜圈(Android 1.6),松饼(Android 2.0/2.1),冻酸奶(Android 2.2),姜饼(Android 2.3),蜂巢(Android 3.0),冰激凌三明治(Android 4.0),果冻豆(Jelly Bean,Android4.1和Android 4.2),如图0-1所示。
图0-1 Android用甜点作为系统版本的代号
由于其开放性, Android平台得到了业界广泛的支持, 其中包括各大手机厂商和著名的移动运营商等。继2008 年9 月第一款基于 Android 平台的手机 G1 发布之后, 三星、Motorola、华为、中兴、宇龙、阿里等公司都陆续推出各自Android平台的手机。2013年6月数据调研机构Kantar公布了各国最新移动智能操作系统的市场份额, 其中Android继续保持领先位置, 在欧洲五国和中国的市场份额均超过了70 %。对于以创新的搜索引擎技术而一跃成为互联网巨头的Google, Android操作系统是Google最具杀伤力的武器之一。苹果以其天才的创新, 使得iPhone在全球迅速拥有了数千万的忠实“粉丝”, 而Android作为第一个完整、开放、免费的手机平台, 使开发者在为其开发程序时拥有更大的自由。与Windows Mobile、Symbian等厂商不同的是, Android操作系统免费向开发人员提供, 这样可节省30 %的成本, 获得众多厂商与开发者的拥护。Android系统进化非常迅速, 从最初的触屏到现在的多点触摸, 从普通的联系人到现在的数据同步, 从简单的GoogleMap到现在的导航系统, 从基本的网页浏览到现在的 HTML5, 地图/导航、邮件、搜索、应用商店、即时消息、浏览甚至支付等重要应用被作为操作系统提供的必备功能而广泛内置, Android技术已经逐渐稳定, 而且功能越来越强大。此外, Android平台不仅支持 Java、C、C++等主流的编程语言, 还支持Ruby、Python等脚本语言, 这使得Android有着非常广泛的开发群体。
0.2 移动互联应用势不可挡
移动互联网作为一个新技术产业已经表现出巨大的影响力: 发展速度远超摩尔定律的产业周期, 纵向一体化的产业发展平台和生态体系, 全产业链条——服务、终端、流量的爆炸性增长, 不断向ICT (信息、通信和科技) 其他领域延伸的技术和模式创新等, 移动互联网几乎在所有行业均获得了应用, 并且延伸的边界、发展的速度仍然保持加速态势。在短短的2~3年中, 所有没有主动适应移动互联网发展趋势的企业均被迅速淘汰或边缘化, 新的市场格局和主导力量飞速形成并不断更替。移动互联网的发展已经深刻影响了整个信息产业的发展趋势与国际竞争。
移动互联网整合了互联网与移动通信技术, 将各类网站及企业的大量信息及各种各样的应用业务引入到移动互联网之中, 为企业搭建了一个适合业务和管理需要的移动信息化应用平台, 提供全方位、标准化、一站式的企业移动商务服务和电子商务解决方案。移动互联网是一个全国性的、以宽带IP为技术核心的, 可同时提供话音、传真、数据、图像、多媒体等高品质交互应用服务的新一代开放的电信基础网络, 是国家信息化建设的重要组成部分。移动互联技术的推进, 是人们对信息即时采集、共享与互动需求发展的必然。
中国移动互联网的分化和差异越来越体现在用户的使用方式、应用体验、审美取向和价值理念上, 这不仅有利于移动互联网本身的可持续发展, 更有利于细化和明确中国移动互联网的传播价值, 从而吸引更多行业的关注, 加速移动互联网产业商业价值的变现, 如图0-2所示。
图0-2 2012年中国移动互联网主要细分模式
与手机电子商务相关的电子市场、即时通讯、社会化媒体等在各细分行业中增幅最大, 这主要受益于两方面原因: 一是手机支付开始落地并获得大力推广; 二是淘宝等电子商务平台积极投入手机版网页及客户端产品的布局, 极大提升用户移动交易量及活跃度。
移动互联应用作为满足移动环境中用户体验的最佳载体, 其规模持续扩张, 截止2012年底, Apple AppStore下载次数累计超过400 亿次, Google Play 下载量也超过250 亿次。移动互联应用的蓬勃发展促进了移动互联网业务的爆炸性增长, 全球移动互联网用户已超过固定互联网用户达到15亿, 在起步的5年内用户扩散速度是桌面互联网同阶段的2倍;AppStore在6个月内新增1亿活跃用户。2012年我国移动智能终端出货量超过2012年之前历史上出货量总和, 达2.58亿部, 增速达到167 %。移动互联应用发展的根本驱动力是用户需求: 差异巨大的用户个性化需求, 可自定义的智能化移动互联网应用需求使得智能操作系统成为手机标配, 进而对硬件能力提出了更高要求, 在可预见的3~5年内, 随着智能手机普及率的继续提升, 除保持操作界面流畅度, 用户对3D游戏、高清视频等互动应用服务需求的释放, 仍将继续推动智能终端软硬件的持续发展。
0.3 用Applnventor开发Android应用
App开发是指专注于手机应用软件开发与服务, App是application (应用程序) 的缩写。不同于互联网, 搜索不再是离智能手机用户最近的入口。互联网本质上可以看作是机器的互联, 所以使用时需要了解各种协议、平台, 需要记住各种网址, 最终搜索简化了信息查询的过程。而移动互联则是“以人为本”的体系模式, 机器的“人性化”是移动互联网的本质特征。App作为移动互联网的入口, 专注于人的需求并且满足人的需要。随着人机交互、终端、网络及传感器等技术进一步升级, 移动应用将进一步融入到人们生活、学习、娱乐、健康等各个领域, 开发提升用户在移动环境下体验的应用将成为移动互联企业常态化的竞争形式, 快速迭代的在线产品研发与敏捷生命周期管理已经成为移动互联产业的开发模式, 而掌握在核心移动应用平台开发各种增值服务技术的人才是促进移动互联网蓬勃发展的保证。
通常Android平台App开发一般采用Java+SDK+Eclipse的模式, 需要具备Java语言的知识, 能够Debug调试程序, 这阻碍了很多具有创意却苦于没有经过编程训练的人开发App。如果你刚开始学习编程, 但又想进行App开发, 怎么办呢?好消息, AppInventor提供了一个简单易学的强大工具, 可以迅速将想法变为现实! 通过拖放图形化的组件和代码块, 将这些代码放在一起, 就得到了一个App。你不必是一个专业的程序开发员, 使用AppInventor就像搭积木玩游戏一样简单, 谁都可以轻松创建一个Android App。
AppInventor是 Google 实验室的创新项目, 在2012年1月AppInventor的服务转到了MIT (麻省理工学院), 现在项目主要由MIT移动学习中心负责维护, 官方网站: http://appinventor.mit.edu/, 其Logo见图0-3。
图0-3 MIT AppInventor logo
谷歌曾在 Android 官网上表示: “使用AppInventor的人不一定非要是专业的研发人员, 甚至根本不需要掌握任何的程序编制知识。”
采用AppInventor开发智能手机应用的优点包括:
● 无Java基础知识要求;
● 无需编写代码;
● 全云端, 所有作业都在浏览器完成;
● 支持乐高机器人;
● 更新快速;
● 调试容易, 出现的语法错误一般不超过两个。
其缺点主要有:
● Google AppInventor程序发布到Android Market较繁琐;
● 相同功能下, AppInventor程序体积比Java开发的Android程序大。
用AppInventor开发智能手机应用的感觉是: 零基础, 无门槛, 积木式, 易上手, 咔嗒一响就成功; 组件多, 功能强, 出错少。现在, 让我们一起来熟悉AppInventor的开发环境吧。
0.4 Applnventor三大作业模块
1.AppInventor Designer(设计师)
Designer主要完成界面设计, 所有开发中需要的组件 (可以相互调用的功能独立的基本功能模块), 如图0-4所示, 都可以通过将①Palette中的组件拖入②Viewer中, 具有设置布局和③组件属性的功能。
图0-4 设计模式
2.AppInventor Blocks Editor(块编辑器)
通过单击按钮进入, 主要功能是通过拼图的方式定义程序的执行动作, 将程序的逻辑连接, 通过不同属性方法定义组件与控制组件、逻辑组件等执行过程,进行逻辑设计。
如图0-5所示, 其中①块编辑栏中具有所有能控制组件的代码块拼图, 可以将其中的图块拼图拖到②之中, 如果不想要放在②中的图块, 可以拖入③回收站中删除。
图0-5 块编辑区
块编辑栏①中具有3 个标签, 分别为 Built in, My Blocks 和 Advanced, 其属性见表0-1。
表0-1 块编辑栏属性
3.Emulator Android Phone(模拟器)
在连接并将应用下载到Android设备前, 可先用模拟器 (见图0-6) 来进行测试。可以在块编辑器中单击New emulator按钮创建一个模拟器, 并通过单击Connect to Device按钮, 选择emulator-5554选项打开的模拟器 (如打开多个模拟器则会有5554、5556等编号)测试你的程序, 但模拟器在部分功能 (如照相机、传感器、USB 连接) 方面无法提供测试。
图0-6 Android模拟器
AppInventor这三大组件——Designer, Block Editor 和Simulator 可以看作使用了MVC框架 (见图0-7)。MVC全名是Model View Controller, 是模型 (model) —视图 (view) —控制器 (controller) 的缩写, 它很好地实现了数据与表示的分离。方法的优点是独立的业务逻辑尽量被聚集到一个部件里面 (高内聚), 因此界面、用户和数据的交互、新增改变和个性化定制都不需要重新编写业务逻辑, 而传统的输入、处理和输出功能与表示的功能呈现低耦合的特性。Designer 可以看作 Model 为多个视图提供数据。Blocks Editor则是Controller接收用户的输入并调用模型和视图去完成用户的需求, 当用户单击屏幕时, 控制器本身不输出任何东西和做任何处理, 它只是接收请求并决定调用哪个模型构件去处理请求, 然后再确定用哪个视图来显示返回的数据。Simulator作为用户刷新并与之交互的界面是Viewer。
图0-7 MVC视图
MVC的出现也是信息技术发展中一直追求的复杂性分离的具体体现。最早期的计算机编程就是硬件的编程, 接着出现了软件与硬件分离, 再后来实现了数据与控制逻辑的分离。而在当前智能手机平台上, 是显示与计算的分离, 由于很好地利用了云的特性, 而成为一种新的模式并被广泛接受, 如苹果公司的iCloud。
0.5 Applnventor环境搭建
AppInventor的开发环境搭建是一个较简单的过程, 可以在 Windows XP 版本以上、Mac Os X 10.5 以上及 GU/Linux 等操作系统中搭建 AppInventor 开发环境, 本书以Windows 7 (X86) 系统为例对AppInventor的环境搭建步骤进行解释。AppInventor 开发套件安装的步骤如图0-8所示。
图0-8 AppInventor安装步骤
1. 计算机和操作系统要求
● 苹果操作系统 (英特尔处理器): Mac OS X 10.5或更高版本;
● Windows系统: Windows XP, Windows Vista, Windows 7, Windows 8;
● GNU / Linux操作系统: Ubuntu8或更高版本, Debian5或更高版本。
2. 浏览器要求
● Mozilla FireFox 3.6或更高版本;
● 苹果Safari 5.0或更高版本;
● 谷歌Chrome 4.0或更高版本;
● 微软Internet Explorer 7或更高版本。
3. 安装Java套件(JDK)
首先, 确定操作系统之前是否已安装JDK。AppInventor需要在Java 6以上的版本才能正常运行。单击Windows 7的“开始”按钮, 选择“控制面板”, 然后在控制面板中单击“程序”选项下的“卸载程序”按钮, 步骤如图0-9所示。
图0-9 查看已安装程序
在“卸载程序”的窗口中查看是否存在Java 6 以上的版本, 如图0-10所示。假如如图0-10所示已存在Java 6以上的版本, 则跳过本节内容; 如不存在, 则打开JDK的下载网址进行下载, 网址如下:
图0-10 检测是否存在JDK以及下载JDK
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
在JDK的下载页面中, 选择“Windows X86”的JDK进行下载。
当下载完成后, 运行并安装JDK, 如图0-11所示。
图0-11 安装JDK
4. 检测Java环境
完成JDK的安装后, 我们还不知道JDK是否正确安装, AppInventor能否正常运行。AppInventor开发团队为了让初学者验证电脑系统的环境是否可以执行AppInventor, 特别建立了一个专门验证AppInventor Java环境的网页。
在浏览器的地址栏上输入以下地址:
http: //appinventor.mit.edu/explore/sites/all/files/JWSTest/notepad.jnlp
浏览器将弹出一个下载窗口, 单击“打开”按钮, 如图0-12所示。
图0-12 打开Javanotpad记事本
如果出现一个写字板应用的窗口, 如图0-13所示, 则说明JDK环境搭建成功。
图0-13 打开notpad写字板
假如没有成功打开写字板, 有以下几个可能的原因导致这种情况发生:
● 被系统的防火墙拦截了, 请尝试关闭防火墙及相关的杀毒软件;
● 浏览器未配置使用Java Web Start打开jnlp文件, 为修复此项, 可能需要为.jnlp文件创建一个Java Web Start的关联或重新安装JDK;
● 电脑可能没有足够的内存来运行AppInventor, 因为至少要有1 GB的内存;
● 网络设置可能出现了问题。
5. 安装AppInventor
接下来, 我们还要安装AppInventor的开发套件, 下载地址如下:
http://dl.google.com/dl/appinventor/installers/windows/appinventor setup installerv12.exe
运行安装包进行安装, 一直单击Next按钮即可, 如图0-14所示。
图0-14 安装AppInventor开发套件
安装完毕后, 接着就可以登录AppInventor的开发网页http://beta.appinventor.mit.edu,开发Android应用程序了。不过用户需要有谷歌账号才能登录, 如图0-15所示。
图0-15 登录AppInventor
6. 谷歌账号申请流程
首先登录谷歌搜索网站首页Http: //www.google.com.hk, 单击右上角的“登录”按钮, 如图0-16所示。
图0-16 谷歌首页
再在打开的登录界面, 单击右上角的“注册”按钮, 如图0-17所示。
图0-17 登录页面
在注册页面依次输入姓名、用户名 (即要注册谷歌账号的邮箱地址)、密码、生日、性别等内容, 同时可以设置手机账号或者已经在使用的邮箱账号, 最后输入验证码即可,如图0-18所示。
图0-18 注册页面
随后, 勾选“我同意接受Google服务条款和隐私政策”复选框, 单击“下一步”按钮, 如图0-19所示, 就完成注册了。
图0-19 同意协议
成功完成注册时, 将显示一个欢迎您的提示, 如图0-20所示。
图0-20 注册成功
至此, 我们就可以使用这个谷歌账号登录进行AppInventor的开发工作了。