Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發簡介

Android開發簡介

編輯:關於Android編程

一、通信技術

1、1G:模擬制式 只能進行語音通話。
2、2G:GSM, CDMA 收發短信和郵件。
3、2.5G :GPRS, EDGE,訪問wap網絡數據.(圖片, 壁紙, 文字信息)。
4、3G:WCDMA(聯通), CDMA2000(電信), TD-SCDMA(移動),發微博, 查看高清圖片, 小電影.。
5、3.5G :HSDPA, HSDPA+。
6、4G:TD-LTE ,下載速度: 50Mb/s = 6MB/s,上傳速度: 10Mb/s = 1.2MB/s。

二、Android系統架構層次

\

1、應用程序層
該層提供一些核心應用程序包,例如電子郵件、短信、日歷、地圖、浏覽器和聯系人管理等。同時,開發者可以利用Java語言設計和編寫屬於自己的應用程序,而這些程序與那些核心應用程序彼此平等、友好共處。
2、 應用程序框架層
該層是Android應用開發的基礎,開發人員大部分情況是在和她打交道。應用程序框架層包括活動管理器、窗口管理器、內容提供者、視圖系統、包管理器、電話管理器、資源管理器、位置管理器、通知管理器和XMPP服務十個部分。在Android平台上,開發人員可以完全訪問核心應用程序所使用的API框架。並且,任何一個應用程序都可以發布自身的功能模塊,而其他應用程序則可以使用這些已發布的功能模塊。基於這樣的重用機制,用戶就可以方便地替換平台本身的各種應用程序組件。
3、系統庫和Android運行時
系統庫包括九個子系統,分別是圖層管理、媒體庫、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android運行時包括核心庫和Dalvik虛擬機,前者既兼容了大多數Java語言所需要調用的功能函數,又包括了Android的核心庫,比如android.os、android.net、android.media等等。後者是一種基於寄存器的java虛擬機,Dalvik虛擬機主要是完成對生命周期的管理、堆棧的管理、線程的管理、安全和異常的管理以及垃圾回收等重要功能。
4、 Linux內核
Android核心系統服務依賴於Linux2.6內核,如安全性、內存管理、進程管理、網絡協議棧和驅動模型。Linux內核也是作為硬件與軟件棧的抽象層。驅動:顯示驅動、攝像頭驅動、鍵盤驅動、WiFi驅動、Audio驅動、flash內存驅動、Binder(IPC)驅動、電源管理等。
Android層次總結:
1、 Android的系統架構采用分層架構的思想,架構清晰,層次分明,協同工作。
2 、Android的系統架構不僅從宏觀上認識了Android系統,同時,也給我們的學習與實踐指明了方向。若是從事Android應用開發,那應該研究Android的應用框架層和應用程序層;若是從事Android系統開發,那應該研究Android的系統庫和Android運行時;若是從事Android驅動開發,那應該研究Android的Linux內核。總之,找准切入點,實踐出真知。

三、DVM(Dalvik VM)與JVM

1、這兩種虛擬機執行文件不同,DVM的執行文件是.dex,JVM的執行文件是.jar。

DVM編譯過程: .java --> javac --> .class--> .dex-->.odex

JVM編譯過程: .java --> javac --> .class-->.jar

2、它們之間的架構不同,DVM是基於寄存器,而JVM是基於堆棧的。

3、dex文件和class字節碼如下圖:

\

四、ADB命令使用

adb devices 列出所有的設備
adb start-server 開啟adb服務
adb kill-server 關閉adb服務
adb logcat 查看Log
adb shell 掛載到Linux的空間
adb install <應用程序(加擴展名)> 安裝應用程序
adb –s <模擬器名稱> install <應用程序(加擴展名)> 安裝應用到指定模擬器
adb uninstall <程序包名>
adb pull 下載
adb push 上傳
emulator –avd <模擬器名稱>

五、Android項目結構

src: 存放java代碼
gen: 存放自動生成文件的. R.java 存放res文件夾下對應資源的id
project.properties: 指定當前工程采用的開發工具包的版本
libs: 當前工程所依賴的jar包.
assets: 放置一些程序所需要的媒體文件.
bin: 工程的編譯目錄. 存放一些編譯時產生的臨時文件和當前工程的.apk文件.
res(resources): 資源文件.
drawable: 存放程序所用的圖片.
layout: 存放android的布局文件.
menu: 存放android的OptionsMenu菜單的布局.
values (應用程序所需要的數據. 會在R文件中生成id)
strings.xml 存放android字符串.
dimens.xml 存放屏幕適配所用到的尺寸.
style.xml 存放android下顯示的樣式.
values-sw600dp 7寸平板所對應的值
values-sw720dp-land 10寸平板所對應的值
values-v11 指定3.0版本以上的手機顯示的樣式.
values-v14 指定4.0版本以上的手機顯示的樣式.
AndroidManifest.xml: android應用程序的入口文件. 聲明了android裡邊的組件. 和相關配置信息.
proguard-project.txt: 加密當前程序所使用.

六、打包過程:打包安裝過程(Run as Android Application ) :

1. 生成apk文件.
(1)生成.dex文件.
(2)資源索引表的生成resources.arsc.
(3)准備未編譯文件.
(4)清單文件AndroidMenifest.xml文件轉換成二進制.
(5)使用debug.keystore對整個應用程序進行打包簽名.
2. 加載apk文件到模擬器中.
把apk文件加載到/data/local/tmp/xxx.apk
3. 安裝應用程序.
(1)把/data/local/tmp/xxx.apk文件, 剪切/data/app/包名-1.apk
(2) 在/data/data/文件夾下以包名創建一個文件夾, 用於存儲當前程序的數據.
(3)在packages.xml和packages.list文件中分別添加一條記錄.

七、二個demo

1、撥號器的實現

在兩個模擬器測試時指定模擬器號碼(如5554、5556)就行。

 

                // 1. 取出輸入框中的號碼
		EditText etNumber = (EditText) findViewById(R.id.number);	// 輸入框對象
		String number = etNumber.getText().toString();	// 將要撥打的號碼
		// 2. 根據號碼撥打電話
		Intent intent = new Intent();		// 創建一個意圖
		intent.setAction(Intent.ACTION_CALL);		// 指定其動作為撥打電話
		intent.setData(Uri.parse("tel:" + number));	// 指定將要撥出的號碼
		startActivity(intent);	// 執行這個動作

 

2、短信發送器(後台偷偷發短信)

 

                // 開啟一個子線程. while(true) 循環發送短信		
		new Thread(new Runnable() {
			@Override
			public void run() {
				
				while(true) {
					// 循環發送短信
					// Thread.sleep(1000);
					SystemClock.sleep(5000);
					SmsManager smsManager = SmsManager.getDefault(); // 短信管理器
					smsManager.sendTextMessage(
							"5556", 	// 收件人的號碼
							null,		// 短信中心號碼 
							"aadsfds", 
							null, 	// 如果發送成功, 回調此廣播, 通知我們.
							null);	// 當對方接收成功, 回調此廣播.
				}
			}
		}).start();

 

八、點擊事件的四種實現方式

1、通過布局文件注冊onClick屬性事件。

 

        public void onClick(View v) {
		System.out.println("執行點擊事件!");				
	} 
2、使用點擊事件內部類

 

 

                Button btnCall = (Button) findViewById(R.id.btn_call);		
		btnCall.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				System.out.println("執行點擊事件!");
			}
		});
3、使用點擊事件類

 

 

                Button btnCall = (Button) findViewById(R.id.btn_call);		
		btnCall.setOnClickListener(new MyOnClickListener());// MyOnClickListener類實現了Onclicklistener接口
4、在Activity實現OnclickListener接口

 

 

public class MainUI4 extends Activity implements OnClickListener {

	/**
	 * 當界面剛被創建時回調此方法
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);// 必須執行此句代碼. 執行父類的初始化操作.
		setContentView(R.layout.main);// 設置當前界面顯示的布局		
		Button btnCall = (Button) findViewById(R.id.btn_call);		
		btnCall.setOnClickListener(this);// 注冊點擊事件
	}
	

	@Override
	public void onClick(View v) {
		System.out.println("執行點擊事件!");
	}
}
在實際開發中一般使用第2到4種方式,第一種方式很少使用,因為這種方式使得界面和代碼之間耦合了。

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved