G即Generation,时代的意思
1G:1G就是大哥大,手机类似于简单的无线电双工电台,通话锁定在一定频率,所以
使用可调频电台就可以窃听电话
2G:第二代GSM、CDMA等数字手机,手机使用PHS,GSM或者CDMA这些十分成熟的
标准,具有稳定的通话质量和合适的待机时间,支持彩信业务的GPRS和上网业务员的WAP服务,记忆各式各样的Java程序等
wap : wait and pay 等待并且要付费(手机访问wap.baidu.com而非www)
3G:3G即3rdGeneration,即第三代移动通信技术。他是将无线通信与国际互联网等
多媒体通信结合的新一代移动通信系统。它能处理图像、音乐、视频流等多种多媒体形式,提供包括网页浏览、电话会议、电子商务等多种通信服务
4G:第四代移动电话行动通信。该技术包括TD-LTE和FDD-LTE两种制式。4G是集
3G与WLAN于一体,并能够传输高质量视频图像。4G系统能够以100Mbps的速度下载,比目前的拨号上网快200倍,并能够满足几乎所有用户对于无线服务的要求。此外,4G可以再DSL和有线电视调制解调器没有覆盖的地方部署,然后再扩展到整个地区。
现阶段移动、联通等推出的4G其实都是3.9G
移动4G : TD-LTE
联通4G : FDD-LTE/TD-LTE
电信4G : FDD-LTE
移动3G : TD-SCDMA
联通3G : WCDMA
电信3G : CDMA2000
移动/联通2G : GSM
电信2G : CDMA
双模(电信+移动/联通2G)、3G全网通
LTE : Long term evolution 长期演进的
4G支持的型号,需要记住
移动/联通 和 电信 不能混用
2G : 拨号上网,带宽12.2K
3G : 宽带上网,带宽384K~2M
4G : 光纤到户,带宽100M
3.9G :10M
记住:2G到4G最大的区别是速度的区别
Android系统最初由安迪·鲁宾等人开发制作,最初开发。这个系统的目的是创建一个数码相机的先进操作系统,后来发现市场需求不够大,加上智能手机市场快速成长,于是Android被改造为一款面向智能手机的操作系统。
Android于2005年8月被美国科技企业Google收购。
1.5 Cupcake(纸杯蛋糕)
1.6 Donut(甜甜圈)---首次支持CDMA
2.0 Éclair(松饼)---多账户支持,第二个里程碑(第一个是1.5)
2.1 Eclair(闪电泡芙)
2.2 Froyo(冻酸奶)
2.3 Gingerbread(姜饼)---支持NFC
3.0 Honeycomb(蜂巢)
4.0 Ice cream SandWich(冰激凌三明治)---安卓历史上最重大的一次升级
4.1 Jelly Bean (果冻豆 )---继蜂巢后一次全新的平板策略尝试
4.2 Jelly Bean (果冻豆 )
5.0 Lime Pie (酸橙派)
Android是一个完整的操作系统,包含了中间件和包含了一些关键的应用程序。
Android有四层架构,自上向下依次为:
应用层
应用框架层
函数库
Linux内核
Google为了解决与Oracle之间关于Java相关专利和授权的纠纷,开发了DVM
JVM和DVM之间的区别:
1. 编译后的文件格式不同
JVM : .java->.class->.jar
DVM : .java->.class->.dex->.odex
2. 基于的架构不同
JVM : 基于栈的架构
DVM : 基于寄存器的架构
ART模式是Android Runtime的简称,Android 4.2开始出现。
在Android 4.2以前,安卓手机系统的应用程序均在Dalvik Java的虚拟机上运行,这种运行模式是还要依靠一个编译器来实现与应用程序的沟通。应程序每次运行时,都需要将程序内的代码即使转变为机器码才能运行,这无形中多附加了一道手续,这就造成了耗电相对较快、占用内存大、即使是旗舰机用久了也会卡顿严重的现象
ART模式通过在安装应用程序时,自动对程序进行代码预读取编译,让程序直接编译成机器语言,免去了Dalvik模式要时时转换代码,实现高效率、省电、占用更低的系统内存、手机运行流畅。但凡事总有正反两面,ART在解决了该问题的同时,同时也有如:会占用略高一些的存储空间、安装程序时要相比普通Dalvik模式要长一些时间来实现预编译
开发工具包括:
Eclipse
SDK
SDK Manager
SDK工具包包括:
Eclipse+ADT插件
Android SDK
Android Platform-tools
Android开发平台
模拟器镜像
ADT : Android development tools 安卓开发工具集
SDK : Standard Devlope kits 默认开发工具集
Platform-tools 平台工具
Extars 扩展
Android support 安卓的依赖包,去支持其他的版本号的API,实现向下兼容
AVD : Android Virural Device 安卓虚拟设备
点击Eclipse工具栏手机形状的图标去查看当前的Android模拟器
创建一个AVD的一些注意事项:
1. Device选项常用的3种屏幕适配
a) VGA : 640*480 标准的屏幕大小
b) HVGA :320*480 一般的VGA
c) QVGA :320*240 4分之一的VGA
2. 默认情况下,Android会给每个应用的内存堆分配16M
DDMS: Device Definition monitor Service 设备信息监听服务
常用的2个选项卡:File Explorer / Emulator Control
File Explorer : 文件管理器,即Android系统的文件目录管理
常用的文件夹:
data/app : 装三方应用程序用的
data/data : 应用程序包(包名是区分不同应用程序的唯一标志)
Emulator Control : 模拟器控制器
常用功能:
Speed : 支持的速度,可选3G,2G,全部等
Incoming number : 填写一个号码,可以对模拟器打电话、发短信
Location Controls : 可以填写经纬度,更改模拟器的位置信息
src/ java原代码存放目录
gen/ 自动生成目录
gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的资源,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。
bin 用于存放ADT编译时产生的临时文件, 最终会被打包成一个xxx.apk
res/ 资源(Resource)目录
在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。
res/drawable
专门存放png、jpg等图标文件。在代码中使用getResources().getDrawable(resourceId)获取该目录下的资源
res/layout
专门存放xml界面文件,xml界面文件和HTML文件一样,主要用于显示用户操作界面
res/values
专门存放应用使用到的各种类型数据。不同类型的数据存放在不同的文件中。
strings.xml 定义字符串和数值
arrays.xml 定义数组
colors.xml 定义颜色和颜色字串数值
dimens.xml 定义尺寸数据
styles.xml 定义样式。
res/anim/
存放定义动画的XML文件
res/xml/
在Activity中使用getResources().getXML()读取该目录下的XML资源文件
res/raw/
该目录用于存放应用使用到的原始文件,如音效文件等。编译软件时,这些数据不会被编译,它们被直接加入到程序安装包里
libs/ 支持库目录
程序开发时需要的一些三方的jar包可以放在这个目录,系统会自动把里面的jar包,添加到环境变量。
assets 资源目录
Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件,而且/assets目录下的资源文件不会在R.java自动生成ID,所以读取/assets目录下的文件必须指定文件的路径,如:file:///android_asset/xxx.3gp
AndroidManifest.xml 项目清单文件
这个文件列出了应用程序所提供的功能,以后你开发好的各种组件需要在该文件中进行配置,如果应用使用到了系统内置的应用(如电话服务、互联网服务、短信服务、GPS服务等等),你还需在该文件中声明使用权限。
project.properties 项目环境信息,一般是不需要修改此文件
1.生成apk文件
生成.dex文件: . java javac .class dx.bat .dex
生成resources.arsc 索引文件
未编译的资源
清单文件AndroidManifest.xml转换成二进制
默认签名文件debug.keystore 使用签名文件进行打包
2.加载apk文件
把apk文件加载到/data/local/temp/XXX.apk
3.安装apk文件
把/data/local/temp/XXX.apk剪切到/data/app/包名-1.apk
在/data/data/下创建一个文件夹,名为:程序的包名
签名 : 对你的文件打了一个唯一的标识码,任何人除了你自己,是无法更改这个程序的APK : Android package
adb : android debug bridge 安卓调试桥
Android虚拟机相对于操作系统来说实际上是一个独立运行的系统,adb内部采用
socket通信机制,用于系统之间进行通信
adb devices 列出所有的设备(可以实现开启设备的作用)
adb shell 挂载到linux的空间
adb install xxx.apk 安装apk
adb install –s emulator-5554 D:/xxx.apk 如果存在多个设备,安装apk
到指定设备
adb pull
adb push
adb connect
adb kill-server 杀死ADB
adb start-server 开启ADB
adb.exe位于adt-bundle-windows-x86_64\sdk\platform-tools目录下,在命令行使用adb指令时需指定文件路径,这样比较麻烦,不方便使用
将adb.exe的路径信息配置到环境变量的path下,方面我们在命令行使用adb
制作一个电话拨打器,输入要拨打的电话号码,点击拨打按钮,可以拨出电话,效果图如下:
步骤:
1. 创建一个Android Application Project(工程名可以中文,包名不行)
2. 在布局页面添加三个控件,代码如下:
3. 在java文件添加逻辑代码如下:
4. 在清单文件中添加权限信息
注:若不添加权限,点击拨打按钮时,程序会报错停止运行,错误信息如下:
打开清单文件,单机下方Permission选项卡,添加Uses Permission,为程序添加一个android.permission.CALL_PHONE权限
5. 此时再次运行程序,程序正常运行,能够拨打电话
创建一个内部类去实现监听器
为控件添加监听器实例
无需创建实现类,直接以匿名内部类的方式为控件添加监听器实例
由类文件实现监听接口
实现接口方法(可以采用switch-case结构)
直接使用this为控件注册事件
注册点击事件
逻辑代码中添加事件方法call(View )
制作一个短信发送器,添加发送人信息和发送信息主体内容后,点击发送按钮,可以发送短息,其效果图如下:
步骤:
1. 在布局文件添加控件
2. 添加逻辑代码如下
3. 在清单文件添加权限信息如下
4. 开启2个模拟器,测试效果
线性布局在xml文件中使用
线性布局可以分为水平和垂直方向的布局,可以通过android:orientation来定义方向
android:orientation=“horizontal”表示水平方向
android:orientation=“vertical”表示垂直方向
实现效果:
布局代码:
属性:
android:layout_weight="1" 权重,即所占百分比,使用前需先将宽度或者高度
大小设置为0
框架布局是将控件组织在Android程序的用户界面中最简单的布局类型之一。
框架布局在xml文件中使用<FrameLayout>来定义
框架布局中的子视图总是被绘制到相对于屏幕的左上角上
所有添加到这个布局中的视图都是以层叠的方式显示
第一个添加到框架布局中的视图显示在最底层,最后一个被放在最顶层,上一层的视图会覆盖下一层的视图,类似于javaweb的div
实现效果:
布局代码:
属性:
android:layout_gravity="center" 布局位置,可以是center/top等等
相对布局是实际布局中最常用的布局方式之一。
框架布局在xml文件中使用<RelativeLayout>来定义
相对可以设置某一个视图相对于其他视图的位置,这些位置可以包括上下左右等,因而相较于其他的布局方式而言具有很大的灵活性
实现效果:
布局代码:
属性:
以值为true/false的一种属性:
android:layout_centerInParent="true" 在父窗体的中间
android:layout_centerHorizontal="true" 在父窗体水平居中
android:layout_centerVertical="true" 在父窗体内垂直居中
以值为300dip等数值的一种属性:
android:layout_marginLeft="50dip"
android:layout_marginRight="50dip"
android:layout_marginTop="50dip"
android:layout_marginBottom="50dip"
距离上下左右的大小
以值为控件ID的一种属性:
android:layout_above="@id/center" 在指定控件的上方,注意ID
android:layout_below="@id/center" 在指定控件的下方
android:layout_toRightOf="@id/center" 在指定控件的右方
android:layout_toLeftOf="@id/center" 在指定控件的左方
android:layout_alignLeft="@id/left" 和指定空间左对齐
android:layout_alignRight="@id/right" 与指定控件右对齐
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
和父窗体上下左右对齐
DIP : 概念同DP,设备独立像素 无论使用多大的屏幕 都会按比例的去放置
PX : 像素 无论使用多大的屏幕,都会按他自己的像素值去摆放
SP : 比例像素 主要处理字体的大小,可以根据用户系统的字体自适应