您的位置:首页 > 移动开发 > Android开发

Android核心基础(一)

2013-08-12 21:20 417 查看
1、什么是3G

(1)第三代数字通讯技术(3rd Generation) 

(2)3G与2G的主要区别是在传输声音和数据的速度上的提升

(3)1995年问世的第一代模拟制式手机(1G)只能进行语音通话。

(4)1996到1997年出现的第二代GSM、CDMA等数字制式手机(2G)便增加了接收数据的功能

(5)3G是第三代通信网络,目前国内支持国际电联确定三个无线接口标准

    中国电信的CDMA2000 (日、韩和北美使用)

    中国联通的WCDMA (世界上大部分3G网络都采用的是该标准) 

    中国移动的TD-SCDMA (中国)

GSM-->GPRS-->EDGE-->WCDMA-->HSDPA-->FDD-LTE长期演进

 |              |             |                |                  |                |

9k          42k        172k        364k          7.2M        300M

2、为什么选择Android开发

(1)开源 

(2)开放

(3)JAVA语言

3、简单历史背景

(1)1996年

www网开始流行,可以显示文字和图片

但是最好的手机设备只能显示简单的文本

移动互联网入口: 

WAP (wait and pay)

Wireless Markup Language (WML) – 精简版的html语言

4、Android 简单历史

(1)2005

Google收购 Android Inc. 

开始 Dalvik VM 的研究

(2)2007

开发手机联盟成立

Sdk1.0预览版发布

(3)2008

Google 第一届手机开发者大赛

Google第一个亲儿子T-Mobile G1 发布

SDK 1.0 发布

Android 开放源代码 (Apache License)

2007年11月5日 基于Linux内核的软件平台和操作系统由Google正式发布,开启了一个新手机系统辉煌时代的开始。同时Google联合了34家厂商并成立了“开放手机联盟”,(包括 Texas Instruments, Broadcom Corporation, Google, HTC, Intel, LG, Marvell Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel and T-Mobile)开启了Android发展的最初标准和加盟支持原则。

Android系统的不断成长变化,不过值得一提的趣味是,不论怎么发布,Android系统版本都是以好吃的进行命名。

5、Android 进化史

1.5 Cupcake(纸杯蛋糕) 

1.6 Donut(甜甜圈)

2.1 Eclair(闪电泡芙)

2.2 Froyo(冻酸奶)

2.3 Gingerbread(姜饼)

3.0 Honeycomb(蜂巢)

4.0 Ice cream SandWich(冰激凌三明治)

4.1 Jelly Bean (果冻豆 )

4.2 Jelly Bean (果冻豆 )

5.0 Lime Pie  (酸橙派)

6、Android是什么

手机设备的软件栈,包括

(1)一个完整的操作系统

(2)中间件

(3)关键的应用程序

底层是linux内核

(1)安全管理

(2)内存管理

(3)进程管理

(4)电源管理

(5)硬件驱动

7、Android 体系结构

8、Dalvik VM 和 JVM 的比较

9、Android开发环境搭建

获取SDK 工具包

下载地址:http://dl.google.com/android/adt/adt-bundle-windows-x86.zip

工具包,包含以下内容:

(1)Eclipse + ADT 插件

(2)Android SDK 

(3)Android Platform-tools

(4)最新的Android 开发平台

(5)最新的模拟器镜像

10、开发工具简介

(1)Eclipse

(2)SDK Manager

(3)SDK 

11、创建一个Android模拟器

点击手机形状的图形(android virtual device manager) 创建一个新的android模拟器

12、Android模拟器无法启动

错误提示为:

invalid command-line parameter: Files\Android\android-sdk\tools/emulator-arm.exe.Hint: use '@foo' to launch a virtual device named 'foo'.please use -help for more information

解决方法: 

1. 你的安装路径中有中文,那么就重新安装SDK,放在全英文路径下

2. 添加Android_SDK_HOME 环境变量,从变量名上看最好把ANDROID_SDK_HOME指向Android SDK目录,然后启动AVD

13、Android模拟器无法保存数据

原因:

电脑意外重启,或者模拟器非法关闭.

正常情况下,当模拟器被开启后.

在x:\Documents and Settings\Administrator\.android\avd\xxx.avd的目录下会产生

cache.img.lock, hardware-qemu.ini.lock,  sdcard.img.lock, userdata-qemu.img.lock这样的文件夹,用来标记当前模拟器设备已经开启,当模拟器设备关闭的时候 会自动删除这些文件夹.

如果电脑意外重启或者模拟器被非法关闭. 这几个文件夹是不会被自动删除的. 系统任务android模拟器还处于打开状态. 新开启的模拟器就无法保存数据了.

解决方法:

删除这些.lock的文件夹

14、“尚未注册网络”错误信息的解决办法

打开Android模拟器时,出现无信号,拔打电话或发短信时,提示“尚未注册网络”错误信息的解决方案如下。

  场景一:你的电脑没有连接上互联网,同时也没有在局域网。

  解决办法:右键点击网上邻居,选择"属性",在网络连接窗口中右键点击"本地连接",选择"属性",设置TCP/IP属性如下:

     IP地址:192.168.1.100

     子网掩码:255.255.255.0

     默认网关:192.168.1.100

     首选DNS服务器:192.168.1.100

  场景二:你的电脑没有连接上互联网,但在局域网。

  解决办法:右键点击网上邻居,选择"属性",在网络连接窗口中右键点击"本地连接",选择"属性",设置TCP/IP属性如下:

     IP地址:设置成你所在局域网的IP,如:192.168.1.100 

     子网掩码:设置成你所在局域网的掩码,如:255.255.255.0

     默认网关:设置成你所在局域网的网关,一般网关的IP格式为:*.*.*.1,如:192.168.1.1

     首选DNS服务器:设置成你所在局域网的路由器IP,一般路由器的IP格式为:*.*.*.1,如:192.168.1.1

  最后一种解决方案是:让你的电脑连接上互联网。

15、常见命令操作

(1)db devices    列出所有的设备

(2)adb shell 挂载到linux的空间 

(3)adb install xxx.apk 如果有多个设备,我们可以指定设备   adb install –s  emulator-5554 D:/xxx.apk

(4)emulator –avd advname  启动模拟器    例如:emulator –avd 2.2 (2.2 为我们创建设备的名称)

 (5)mksdcard 20m d:/sdcard.img 创建sdcard

 (6)adb pull <remote> <local> 

(7)adb push <local> <remote>

 (8)android create avd –name android2.2 –target 8  创建模拟器

 (9)ctrl + F11 横竖屏的切换 

16、开发第一个Android应用

打开eclipse à File à New à Android Application project

17、Android平台占有率

为了保证程序能够在大多数手机上运行,需要保证至少兼容到2.2 

18、Android应用程序架构

(1)src/  java原代码存放目录

(2)gen/ 自动生成目录

gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的资源,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。

(3)res/ 资源(Resource)目录

在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。具体请看ppt下方备注栏。

(4)libs/ 支持库目录

程序开发时需要的一些三方的jar包可以放在这个目录,系统会自动把里面的jar包,添加到环境变量。

(5)assets资源目录

Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件,而且/assets目录下的资源文件不会在R.java自动生成ID,所以读取/assets目录下的文件必须指定文件的路径,如:file:///android_asset/xxx.3gp

(6)AndroidManifest.xml 项目清单文件

 这个文件列出了应用程序所提供的功能,以后你开发好的各种组件需要在该文件中进行配置,如果应用使用到了系统内置的应用(如电话服务、互联网服务、短信服务、GPS服务等等),你还需在该文件中声明使用权限。

(7)project.properties 项目环境信息,一般是不需要修改此文件

19、程序打包&安装的过程

ADB (android debug bridge) 为开发人员提供便利

IDE Eclipse 把上面的过程全部都自动实现了 

20、Android 应用程序

(1)使用 Java open sdk的变种

不支持部分 Java 库 : Swing & AWT

Oracle 正在跟Google打官司

(2)Java code 编译成 Dalvik byte code (.dex)

专门为手机设备优化 (更好的内存管理, 电源优化, 等.)

(3)Dalvik VM 运行 .dex 文件

21、Android中的显示单位

 (1)px (pixels)像素 

     一般HVGA代表320x480像素,这个用的比较多。

(2) dip或dp (device independent pixels)设备独立像素

    这个和设备硬件有关,一般为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。

 (3)sp (scaled pixels — best for text size)比例像素

    主要处理字体的大小,可以根据系统的字体自适应。

(4)除了上面三个显示单位,下面还有几个不太常用:

 in (inches)英寸

 mm (millimeters)毫米  

 pt (points)点,1/72英寸

为了适应不同分辨率,不同的像素密度,推荐使用dip ,文字使用sp。

22、电话拔号器(上)

因为应用要使用手机的电话服务,所以要在清单文件AndroidManifest.xml中添加电话服务权限:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      package="cn.itcast.action"

      android:versionCode="1"

      android:versionName="1.0">

      略....

    <uses-sdk android:minSdkVersion=“6" />

    <uses-permission android:name="android.permission.CALL_PHONE"/>

</manifest>

界面布局:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent" >

    <TextView  

    android:layout_width="fill_parent" android:layout_height="wrap_content" 

    android:text="@string/inputmobile"/>

    

    <EditText android:layout_width="fill_parent" android:layout_height="wrap_content"

    android:id="@+id/mobile"/>

    

    <Button android:layout_width="wrap_content" android:layout_height="wrap_content"

    android:text="@string/button"

    android:id="@+id/button"/>

</LinearLayout>

LinearLayout (线性布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局)

Activity:

public class DialerAction extends Activity {

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        Button button = (Button)findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener(){

public void onClick(View v) {

        EditText editText = (EditText)findViewById(R.id.mobile);

        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ editText.getText()));

       DialerAction.this.startActivity(intent);

}

        });

    }

}

测试步骤:

 1>在Eclipse中运行此应用

 2>在Dos窗口中进入android SDK安装路径的tools目录,输入以下命令再开启一个Android模拟器:

  emulator -data itcast  

   注:itcast为用户数据存取文件,如果该文件不存在,默认在tools目录创建该文件

3>在电话扰号器中输入上图现显的电话号码

23、短信发送器

因为应用要使用手机的短信服务,所以要在清单文件AndroidManifest.xml中添加短信服务权限:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      package="cn.itcast.sms"

      android:versionCode="1"

      android:versionName="1.0">

     略....

     <uses-sdk android:minSdkVersion=“4" />

    <uses-permission android:name="android.permission.SEND_SMS"/>

</manifest>

界面布局:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical“ android:layout_width="fill_parent“ android:layout_height="fill_parent" >

    <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" 

    android:text="@string/inputmobile"/>

    

    <EditText android:layout_width="fill_parent" android:layout_height="wrap_content"

    android:id="@+id/mobile"/>

   <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" 

    android:text="@string/content"/>

    

    <EditText android:layout_width="fill_parent" android:layout_height="wrap_content"

    android:minLines="3"

    android:id="@+id/content"/>

   

    <Button android:layout_width="wrap_content" android:layout_height="wrap_content"

    android:text="@string/button"

    android:id="@+id/button"/>

</LinearLayout>

Activity主要代码:

String mobile = mobileView.getText().toString();

String content = contentView.getText().toString();

 SmsManager smsManager = SmsManager.getDefault();

 PendingIntent sentIntent = PendingIntent.getBroadcast(SMSSender.this, 0, new Intent(), 0);

//如果字数超过70,需拆分成多条短信发送        

List<String> msgs = smsManager.divideMessage(content);

for(String msg : msgs){

    smsManager.sendTextMessage(mobile, null, msg, sentIntent, null);

 //最后二个参数为短信已发送的广播意图,最后一个参数为短信对方已收到短信的广播意图

 }

Toast.makeText(SMSSender.this, "短信发送完成", Toast.LENGTH_LONG).show();

测试步骤:

 1>在Eclipse中运行此应用

 2>在Dos窗口中进入android SDK安装路径的tools目录,输入以下命令再开启一个Android模拟器:

  emulator -data itcast  

   注:itcast为用户数据存取文件,如果该文件不存在,默认在tools目录创建该文件

3>在短信发送器的手机号中输入上图现显的电话号码

注:目前Android系统对中文短信尚未支持,所以发送中文短信会有乱码,这个问题日后会被解决的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息