资源描述
一、 手机制式
Ø 什么是3G
英文全称3rd-generation,第三代移动通信技术。是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。 ]
\
3G的发展:
1G:只能进行语音通话、模拟信号也就是在20世纪八九十年代香港美国等影视作品中出现的大哥大。 但是基本上使用频分复用方式只能进行语音通信,收讯效果不稳定,且保密性不足,无线带宽利用不充分。此中手机类似于简单的无线电双工电台,通话是锁定在一定频率,所以使用可调频电台就可以窃听通话。
2G:包括(GSM\GPRS\EDGE)增加了接收数据的功能,如接收电子邮件或网页(wap)通常这些手机使用PHS,GSM或者CDMA这些十分成熟的标准,具有稳定的通话质量和合适的待机时间。在第二代中为了适应数据通讯的需求,一些中间标准也在手机上得到支持,例如支持彩信业务的GPRS和上网业务的WAP服务,以及各式各样的Java程序等。
Xxx.jar ----------> j2Me
3G:02年国外已经产生,03年开发出中国的3G,09才上市。第三代移动通信技术。相对第一代模拟制式手机(1G)和第二代GSM、TDMA等数字手机(2G),第三代手机一般地讲,是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。它能够处理图像、音乐、视频流等多种媒体形式,提供包括网页浏览、电话会议、电子商务,视频会议等多种信息服务。
4G.:是第四代移动通信及其技术的简称,是集高速无线网络与有线网络WLAN于一体的通讯网络能够传输高质量视频、图像和数据,传输速率可高达200MPS以上,目前主流技术有 FDD-LTE、TDD-LTE、WIMAX
* 移动通信上网速度变化
GSM(9K)-->GPRS(42K)-->EDGE(147K)-->WCDMA(2M)-->HSDPA(7.2M)-->FDD-LTE长期演进(200M)
Ø 移动互联网
IT界三大热点:云计算、物联网、移动互联网
& 云计算
云计算是一种通过Internet以服务的方式提供动态可伸缩的虚拟化的资源的计算模式 ,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
& 物联网
物联网就是物物相连的互联网。Internet of Things(IOT),也称为Web of Things
物联网的定义是通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物品与互联网相连接,进行信息交换和通信,以实现对物品的智能化识别、定位、跟踪、监控和管理的一种网络
& 移动互联网
移动互联网就是将移动通信和互联网二者结合起来,成为一体。也是发展最快、市场潜力最大、前景最诱人的业务,比如:移动社交、移动广告、手机游戏、手机电视、移动商务、移动支付、位置服务、移动电子阅读等
* 移动智能操作系统
目前的智能操作系统有Android 6.0、IOS7、Windows Phone 8、Symbian、RIM BlackBerry、J2ME等,市场占有率高的有Android平台、IOS平台和Windows Phone平台,形成三足鼎立的局面
二、 Android历史与发展
安迪·鲁宾
安迪-鲁宾(Andy Rubin),Andrew Rubin,Google移动平台副总裁、Android主管,Android平台创始人。Andy Rubin是Google的工程师副总裁,领导着这家搜索巨人最重要的成就──Android的开发,这是Google为智能手机和其它移动设备打造的开源平台。Android当然也是Google在智能手机市场对抗Apple的主要武器,它同时也是这家公司针对平板电脑和机顶盒设备的软件选择。
Ø Android发展历程
* Android发展大事件
2005年Google收购 Android ,
2007年 Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同 研发改良Android系统,SDK1.0预览版发布。
2008年底 第一款Android手机G1 HTC代工 诞生 ,Android 通过Apache License开源
* Android版本进化历程
1.X 版本:入门级别,只适用于手机
2.X 版本: 趋于成熟的版本,只适用于手机
3.X 版本:趋于成熟的版本,只适用于平板
4.X 版本:趋于成熟的版本,对平板和手机进行了整合
5.X 版本: 支持64位cpu、默认采用ART运行模式等
6.x 版本 支持64位cpu、趋于成熟的版本,对电源管理进行了优化,支持USB3.0接口。
Android 1.5 Cupcake(纸杯蛋糕、API Level 3)
Android 1.6 Donut(甜甜圈API Level 4)
Android 2.0/2.0.1/2.1 Eclair(松饼API Level 5、6、7)
Android 2.2/2.2.1 Froyo(冻酸奶API Level 8、9)
Android 2.3 Gingerbread(姜饼API Level 10)
Android 3.0/3.1/3.2 Honeycomb(蜂巢 API Level 11、12、13)
Android 4.0/4.0.3 Ice Cream Sandwich(冰激凌三明治API Level 14、15)
Android 4.1/4.2/4.3 Jelly Bean(果冻豆 API Level 16、17、18)
Android 4.4 KitKat (奇巧巧克力API Level 19)
Android 5.0 代号L(棒棒糖) (API Level 20)
Android6.0 代号M(棉花糖) (APILevel 23)
Ø Android应用场景
手机、平板、智能电视(机顶盒)、穿戴设备(眼镜、手表)、其它智能嵌入设备
三、 Android体系结构
Ø Android体系结构
1. Linux内核层
Android是基于Linux内核的操作系统,在Linux内核层,主要实现安全管理、进程管理、内存管理、电源管理、硬件驱动管理
2. 原生库与Android运行时
Android的原生库主要基于C\C++实现的一些原生组件,包括C库Bionic、浏览器引擎Webkit、多媒体引擎OpenCORE、SQL数据库SQLite、3D渲染引擎OpenGL ES、位图和字体矢量渲染引擎FreeType、2D图像渲染引擎SGL(Skia Graphics Library)、互联网安全协议SSL等。
Android运行时主要包括Java核心库、Dalvik虚拟机,两者一起构成了Android的应用环境基础
3. 应用框架层
应用框架层是Google发布的核心应用所使用的API框架,开发人员可以使用这些框架提供的API来快速开发自己的应用程序,它本身也是用Java语言实现和开发的。
Activity Manager(活动管理)、Window Manager(窗口管理)、View Manager(视图管理)、Notification Manager(通知管理)、Content Provider(内容提供者)、Package Manager(包管理)、Resource Manager(资源管理)、Location Manager(位置管理)
4. 应用层
应用层是基于Android平台开发的应用,采用Java作为开发语言,包括系统自带的应用(短信管理、联系人管理、图库浏览、网页浏览等)和第三方开发的应用
四、 JVM和DVM的区别
1. DVM是Dalvik Virtual Machine的缩写,是安卓虚拟机的缩写(为什么不叫AVM-Android Virtual Machine呢?原因是其作者以其祖上居住过的名为Dalvik的村子命名)。
2. DVM是针对JVM(Java Virtual Machine)而言的,因为JVM是Oracle公司(原SUN公司)的产品,担心版权的问题,既然Java是开源的,索性就研究了JVM,写出了DVM
3. JVM和DVM的主要区别如下:
a) 执行的直接码文件不一样
Java
.java文件 -> .class文件 -> .jar文件
Jar 文件里面有很多的class文件。
Android(Dalvik虚拟机解释)
.java文件 –> .class文件 -> .dex文件
如上图所示,.jar文件里面包含多个.class文件,每个.class文件里面包含了该类的头信息(如编译版本)、常量池、类信息、域、方法、属性等等,当JVM加载该.jar文件的时候,会加载里面的所有的.class文件,这样会很慢,而移动设备的内存本来就很小,不可能像JVM这样加载,所以它使用的不是.jar文件,而是.apk文件,该文件里面只包含了一个.dex文件,这个.dex文件里面将所有的.class里面所包含的信息全部整合在一起了,这样再加载就很快了。.class文件存在很多的冗余信息,dex工具会去除冗余信息,并把所有的.class文件整合到.dex文件中。减少了I/O操作.
b) 基于的架构不一样
Java基于栈的架构.栈是内存上面的一段连续的存储空间
Android基于寄存器的架构.寄存器是CPU上面的一块存储空间
所以,CPU直接访问自己上面的一块空间的数据的效率肯定要大于访问内存上面的数据
* ART(android 虚拟机后起之秀)运行模式
Dalvik运行的效率不高。 ART模式是Android runtime的简称,在Android4.4版本后出现,通过在安装应用程序时,自动对程序进行代码预读取编译,让程序直接编译成机器语言,并且把它保存起来,免去了Dalvik模式要时时转换代码,实现高效率、省电、手机运行流畅。ART是虚拟机,只是在安装app时,提前编译而已,从android5.0开始全部都是使用art虚拟机。
1.2 搭建开发环境
1.2.1 开发环境搭建
* 开发工具
JDK、Eclipse、ADT(Android developer tools)插件、Android SDK(android使用到API)
* 工具下载
ADT下载地址:
SDK下载地址:
合集版下载地址:
合集版工具包包含:
Eclipse + ADT plugin
Android SDK Tools
Android Platform-tools
The latest Android platform
The latest Android system image for the emulator
* Android-SDK更新
通过Android Manager.exe 工具更新
Android SDK目录介绍
Androi官方文档: http://www.android-
1.2.2 创建AVD模拟器
* 创建模拟器
* 小细节
& AVD配置文件位置(默认):
C:\Documents andSettings\Administrator\.android\avd\AVD2.3.3.avd\config.ini
& AVD 缩放 :启动模拟器—>在launch Option中选择 Scale display to real size
& 模拟器不能保存数据:在模拟器的配置文件中删除.lock文件
1.3 第一个Android应用程序
1.3.1 创建应用程序流程
* 创建新项目
* 配置项目
* 配置运行图标属性
1.3.2 Android应用介绍及项目目录结构分析
Android程序目录结构
src:存放Java源代码的地方,可以建立很多子包
gen:该目录是自动生成 当res目录中的资源文件修改时,R.java文件都会重新编译
android4.X:该目录是存放当前工程使用的Android SDK
assets:该目录中存放一些随程序打包的文件,通常放一些项目中用到的多媒体文件,当Android程序打包时,它会原封不动地一起打包,安装时会直接解压到对应的assets目录中。注意,在assets目录下的资源,不会在R.java文件中生成一个对应的Id,请切记
bin:这个目录不需要过多关心,存放一些在编译时自动产生的文件,会有一个
XX.apk文件,将XX.apk文件复制到手机上就可以直接安装了
libs:如果项目中用到了第三方的jar包,就需要将这些jar包放在libs目录下,该
目录下的jar包都会被添加到classpath中
res:该目录中存放Android要用到的各种程序资源,如图片,布局,字符串等,
图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下,其中drawable目录分为不同的文件夹:drawable-hdpi等,这些文件夹存放的图片分别对应不同的手机屏幕大小,分辨率,以便Android系统自动做出最适合的屏幕适配
AndroidManifest.xml:该文件是整个项目的配置文件,Android程序中的四大组件(界面,内容提供者,广播接收者,服务)都需要在这个文件中注册,另外还可以在这个文件中给应用程序添加权限声明,也可以重新指定创建项目时程序最低兼容和最高版本。该文件中的配置信息会存入到Android系统 中,当程序运行时,系统会先找到清单文件中的配置信息,然后根据配置信息打开相应的组件,该文件我们常称为Android项目清单文件
proguard-project.txt:该文件是Android提供的混淆代码工具,防止应用程序被反编译出源代码
project.properties:该文件记录了Android项目运行时的环境,并通过一行代码指定了编译程序所使用的SDK版本,这个版本可以手工修改,但必须是该版本已经下载到本地,否则会出错
1.3.6 案例: 应用体验之电话拨号器
实现一个打电话的小程序
* 界面设计
//对拨号按钮添加单击监听
callBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获得输入的电话号码
String number=phoneEdt.getText().toString().trim();
//创建意图对象
Intent intent=new Intent();
//设置意图的动作
intent.setAction(Intent.ACTION_CALL);
//设置要传过去的数据,Uri格式
intent.setData(Uri.parse("tel:"+number));
//执行意图
startActivity(intent);
}
});
* 代码实现
* 在AndroidManifest.xml中添加打电话权限
<uses-permission android:name="android.permission.CALL_PHONE"/>
1.3.7 案例: 短信发送器
public void send(View v){
//拿到用户输入的号码和内容
EditText et_phone = (EditText) findViewById(R.id.et_phone);
EditText et_content = (EditText) findViewById(R.id.et_content);
String phone = et_phone.getText().toString();
String content = et_content.getText().toString();
//1.获取短信管理器
SmsManager sm = SmsManager.getDefault();
//2.切割短信,把长短信分成若干个小短信
ArrayList<String> smss = sm.divideMessage(content);
//3.for循环把集合中所有短信全部发出去
for (String string : smss) {
sm.sendTextMessage(phone, null, string, null, null);
}
}
1.3.3 Android运行过程分析
Ø 项目打包
Ø 安装APK
运用adb工具把apk包上传到模拟器(真机)中,目录在data\app\
读取androidManifest.xml清单文件(包名、权限、图标等)
创建文件夹,在data\data\目录下创建以包名为文件夹的目录
写入注册表, 注册表文件data\system\packages.xml
Ø 启动APK
Android系统是一个多用户的Linux系统,应用一旦安装,系统为每个应用分配一个独立的Linux用户ID,当用户点击应用程序图标或者导航到该应用的组件时,Android框架会创建一个虚拟机实例,开启一个进程,创建一个主线程(UI线程),再实例化入口组件,进入组件的生命周期
1.3.4 常用的命令操作
我们了解几个常用的ADB命令即可,不用强行背,因为Eclipse有图形界面集合了
这些功能。
adb shell:进入linux客户端shell命令模式,进入linux环境,按ctrl+C退出linux环境
ls 列出当前的所有目录与文件
ps 列出当前模拟器里面所有运行的进程。
adb start -server 手动启动adb进程。
adb kill -server
adb [-s 设备名称] install apk文件:安装apk文件
adb [-s 设备名称] uninstall 包名:删除模拟器应用
adb devices:列出所有设备
1.3.5 DDMS透视图
DDMS(Dalvik Debug Monitor Service) DVM调试监视服务
& Devices : 查看模拟器设备的状态,模拟器运行的进程
& File Explorer: 文件浏览器(导入、导出文件、创建文件夹、删除文件等)
& LogCat: 日志查看工具,日志猫
& Emulator Control: 模拟器控制,模拟一些操作(打电话、发短信)
5.1 Logcat日志猫
* 级别 :v、d、i、w、e 级别由低往高
- verbose :混淆的 ,所有信息都可以输出,级别最低
- debug :调试级别
- info:信息级别
- warning:警告级别
- error :错误级别
* 添加过滤器 按照Tag进行过滤
* System.out.println()与Log输出之间的区别
- System.out.println()输出的信息 等级是info级别,标记tag:System.out
- System.out.print()输出信息 需要System.out.flush()刷缓存输出
展开阅读全文