Presentation is loading. Please wait.

Presentation is loading. Please wait.

嵌入式系統與 Android系統 Embedded System & Android

Similar presentations


Presentation on theme: "嵌入式系統與 Android系統 Embedded System & Android"— Presentation transcript:

1 嵌入式系統與 Android系統 Embedded System & Android
楊昌益

2 Android核心編譯 Ubuntu linux ver.10 HD space >16GB Android系統需三個系統檔
u-boot Linux核心zImage Android系統檔 2018/9/17

3 安裝Toolchain $mkdir linux_system $cd linux_system
Copy CD之/Android1.6/cross_compiler/4.3.1-eabi-armv tar.bz2 $tar jxvf eabi-armv tar.bz2 $su input password 2018/9/17

4 #mkdir /usr/local/arm #cp –rf 4.3.1-eabi-armv6 /usr/local/arm/ #exit
$export CCACHE_PATH=/usr/local/arm/4.3.1-eabi-armv6/usr/bin-ccache:$CCACHE_PATH (can put it into .bashrc to accelerate compiling) export PATH=$PATH:/usr/local/arm/4.3.1-eabi-armv6/usr/bin:/usr/local/arm/4.3.1-eabi-armv6/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/4.3.1-eabi-armv6/mpfr/lib:/usr/local/arm/4.3.1-eabi-armv6/gmp/lib:/usr/local/arm/4.3.1-eabi-armv6/lib 2018/9/17

5 安裝Linux kernel Copy CD之/Android1.6/kernel/dma6410xp-linux _ tar.bz2 to ~/linux_system $tar jxvf dma6410xp-linux tar.bz2 $cd dma6410xp-linux 2018/9/17

6 $make zImage (a new zImage in ./arch/arm/boot)
$make dmatek6410_android_defconfig (to produce a new .config for platform) $make clean $make zImage (a new zImage in ./arch/arm/boot) 2018/9/17

7 Update Java tools $sudo apt-get update (“Enter”, input password)
$sudo apt-get install sun-java6-jdk (ask “確定”,press TAB+SPACE $sudo apt-get install flex $sudo apt-get install bison $sudo apt-get install gperf $sudo apt-get install libsdl-dev $sudo apt-get install libesd0-dev 2018/9/17

8 $sudo apt-get install libwxgtk2.6-dev $sudo apt-get install zlib1g-dev
$sudo apt-get install build-essential $sudo apt-get install libncurses5-dev (or sudo ./dmatek_ubuntu.sh) 2018/9/17

9 安裝Android file system Copy CD之/Android1.6/Android/dma6410xp_android_source_ tar.bz2 to ~/linux_system $tar jxvf dma6410xp_android_source_ tar.bz2 $cd dma6410xp_android_source 2018/9/17

10 Open .bashrc to add $source ~/.bashrc export SEC_PRODUCT=generic
export SEC_OUTDIR=~/linux_system/dma6410xp_android_source/android_source/filesystem export PATH=~/linux_system/dma6410xp_android_source/script:$PATH $source ~/.bashrc 2018/9/17

11 $cd linux_system/dma6410xp_android_source/android_source
$build_android.sh (needs about 2 hours) $ls –al filesystem/ (you can find ramdisk-uboot.img system.img and userdata.img 3 files) 2018/9/17

12 $cd. /busybox (Android includes only the basic linux instructments
$cd ../busybox (Android includes only the basic linux instructments. Busybox can be inserted if you need the whole linux instructments) $cp –af _install/bin/busybox ../android_source/out/target/product/generic/system/bin $cd ../android_source $build_pre.sh $build_android.sh 2018/9/17

13 Burn-in image files Burn-in linux kernel and Android file
Connect platform with PC by using UART0 Open ASCII Terminal in Windows PC and set ,N,8,1,No flow control. Power on platform and hit the space in Terminal 2018/9/17

14 2018/9/17

15 Check your PC’s IP address
Type “pri” in ASCII Terminal to check ipaddr & serverip Type “setenv ipaddr xx.xx.xx.xx” to set your own IP Type “setenv serverip yy.yy.yy.yy” to set tftp server ip Type “saveenv” to save information 2018/9/17

16 Run tftpd32.exe in your PC Set correct directory 2018/9/17

17 Connect platform with PC by using Ethernet
In ASCII Terminal, type “tftp 0x zImage;nand erase 0x x300000;nand write 0x x x300000 Type “tftp 0x ramdisk-uboot.img; nand erase 0x x100000;nand write 0x x x100000 2018/9/17

18 Type “tftp 0x system.img; nand erase 0xa x ;nand write.yaffs 0x xa x{filesize} Type “tftp 0x userdata.img; nand erase 0x x1f00000;nand write.yaffs 0x x x840 2018/9/17

19 How to write an Android program Hello World
Execute “eclipse.exe” in Windows PC Open new project 2018/9/17

20 2018/9/17

21 2018/9/17

22 2018/9/17

23 “File”->”Restart” (error can be cancelled)
Press right-hand button on the mouse in the “Hello World”project 2018/9/17

24 2018/9/17

25 2018/9/17

26 Some features on Eclipse
2018/9/17

27 2018/9/17

28 2018/9/17

29 2018/9/17

30 2018/9/17

31 程式中加除錯訊息 透過「Log」函式,在程式碼中加入一個自訂的「記錄點」或「檢查點」 「LogCat」工具查看記錄 2018/9/17

32 android.util.Log Log.代號(String tag, String msg); Ex:
Log.v (VERBOSE) :詳細訊息 Log.d (DEBUG) :除錯訊息 Log.i (INFO):通知訊息 Log.w (WARN): 警告訊息 Log.e (ERROR) :錯誤訊息 Ex: Log.i(“Hello_info”, “測試除錯訊息”) 2018/9/17

33 2018/9/17

34 Eclipse快速鍵 自動補齊函式名稱 將程式碼變成註解 自動import類別 函式或變數自動更正 Alt+/ Ctrl+/
Ctrl+Shift+o 函式或變數自動更正 Ctrl+1 2018/9/17

35 程式運作模型 Java Code R.java Res files Android Package .apk 編譯程式
Task / Process (Application) 安裝程式 2018/9/17

36 程式目錄架構 2018/9/17

37 Activity生命週期 應用程式存在與否不是由應用程式本身所自行決定,而是由Android系統透過運行機制決定 2018/9/17

38 2018/9/17

39 public void onCreate(){ } public void onStart(){ }
public void onResume(){ } public void onPause(){ } public void onStop(){ } public void onRestart(){ } public void onDestroy(){ } Activity 生命週期由「Create」狀態開始,由「Destroy」狀態結束 Create時分配資源,銷毀(Destroy)時釋放資源 2018/9/17

40 android.app.Activity View findViewById(int id)
final CharSequence getTitle() final int getTitleColor() void setTitle(int titleId) / void setTitle(CharSequence title) void setTitleColor(int textColor) void setContentView(int layoutResID) 將layout資源設定呈現在Activity內容中 void finish() :結束Activity 2018/9/17

41 XML資源文件 strings.xml 2018/9/17

42 <?xml version="1.0" encoding="utf-8"?> <resources>
版本 編碼方式 <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, hello!</string> <string name="app_name">HelloWorld</string> <string name="test">字串測試</string> </resources> 資源檔的開始 字串標籤 字串名稱 字串內容 資源檔的結束 2018/9/17

43 文字資源使用方法 Java CharSequence str_var1=getResources().getString(R.string.hello); setTitle(str_var1); XML 引用文字字串 字串名稱 2018/9/17

44 文字顏色 <color> <color name=“red">#FF0000</color>
R:紅色 G:綠色 B:藍色 A:透明度(0:透明 FF不透明[預設]) 16進位表示 #RGB #ARGB #RRGGBB #AARRGGBB 2018/9/17

45 文字顏色資源使用方法 Java XML int r = getResources().getColor(R.color.red);
setTitleColor(r); XML 2018/9/17

46 繪圖元件顏色<drawable>
<drawable name="red">#F00</drawable> Java Drawable red =getResources().getDrawable(R.drawable.red); XML 2018/9/17

47 尺寸<dimen> <dimen name="ten_pixel">10px</dimen>
In : 英吋 mm : 公釐 pt : 一點為1/72英吋 dp/dip : 160dpi螢幕的一個像素 sp : 隨螢幕尺寸改變的一個像素 2018/9/17

48 尺寸資源使用方法 Java float dim=getResources().getDimension(R.dimen.ten_pixel); XML 2018/9/17

49 <style> <?xml version="1.0" encoding="utf-8"?>
<resources> <style name="myStyle"> <item <item <item <item <item </style> </resources> 2018/9/17

50 style資源使用方法 XML Java setTheme(R.style.myStyle);
2018/9/17

51 元件佈局 main.xml 2018/9/17

52 2018/9/17

53 2018/9/17

54 佈局方式 LinearLayout RelativeLayout TableLayout FrameLayout 2018/9/17

55 LinearLayout 線性佈局 標籤:< LinearLayout >,可多層LinearLayout 屬性
android:gravity (元件對齊方式,多個值用|隔開) top, bottom, left, right, center_vertical fill_vertical ,center_horizontal ,fill_horizontal center ,fill 2018/9/17

56 LinearLayout 屬性 android:orientation (線性方式) android:layout_width (寬度)
horizontal vertical android:layout_width (寬度) fill_parent wrap_content 指定大小 android:layout_heigh (高度) 2018/9/17

57 邊界屬性 android:layout_marginBottom 元件與底部邊線的距離 android:layout_marginLeft
元件與左邊線的距離  android:layout_marginRight 元件與右邊線的距離  android:layout_marginTop 元件與上邊線的距離  2018/9/17

58 padding屬性 android:padding android:paddingBottom android:paddingLeft
設定四個邊框與元件或文字的距離 android:paddingBottom 設定底部邊框與元件或文字的距離 android:paddingLeft 設定左邊框與元件或文字的距離 android:paddingRight 設定右邊框與元件或文字的距離 android:paddingTop 設定上邊框與元件或文字的距離 LinearLayout margin Button padding 2018/9/17

59 How to use the LinearLayout to finish the following GUI?
2018/9/17

60 Method 1 First step 2018/9/17

61 Modify xml file 2018/9/17

62 Method 2 2018/9/17

63 2018/9/17

64 2018/9/17

65 2018/9/17

66 2018/9/17

67 2018/9/17

68 RelativeLayout 相對佈局:可指定元件或佈局對齊任一個元件或佈局 屬性 標籤:<RelativeLayout>
android:layout_above:將此元件放置在指定ID元件之上 android:layout_alignBaseline:將此元件的基準線放置在與指定ID元件相同基準線上 android:layout_alignBottom:底部基線 android:layout_alignLeft:左邊線 android:layout_alignParentBottom true:底部基線與主佈局底部基線對齊 android:layout_alignParentLeft true:左邊線與主佈局左邊線對齊   2018/9/17

69 RelativeLayout 屬性 android:layout_alignParentRight
true:右邊線與主佈局右邊線對齊   android:layout_alignParentTop true:上邊線與主佈局上邊線對齊 android:layout_alignRight :將此元件的右邊線放置在與指定ID元件相同右邊線上 android:layout_alignTop:上邊線 android:layout_below :將此元件的上邊線放置在指定ID元件之下 android:layout_centerHorizontal true:將此元件放置於於主佈局的水平置中 2018/9/17

70 RelativeLayout 屬性 android:layout_centerInParent
true:將此元件放置於於主佈局的垂直和水平置中 android:layout_centerVertical true:將此元件放置於於主佈局的垂直置中 android:layout_toLeftOf :將此元件的右邊線放置在與指定ID元件的左邊  android:layout_toRightOf :將此元件的左邊線放置在與指定ID元件的右邊 2018/9/17

71 其它重要屬性 android:layout_marginBottom android:layout_marginLeft
android:layout_marginRight android:layout_marginTop android:layout_width android:layout_heigh 2018/9/17

72 How to use RelativeLayout to finish the following GUI
2018/9/17

73 2018/9/17

74 2018/9/17

75 元件 2018/9/17

76 View TextView ViewGroup EditText Button ViewGroup CheckBox ImageView
ImageButton ToggleButton CheckBox RadioButton ViewGroup AdapterView FrameLayout LinearLayout RelativeLayout ListView Spinner Gallery TableLayout 2018/9/17 76

77 Android API提供的元件 TextView Button ToggleButton ImageButton RadioButton
CheckBox 2018/9/17

78 TextView 文字元件,顯示文字 標籤:< TextView> 屬性
android:autoLink:讓文字上的連結自動變成可點擊的連結 none web phone map all 2018/9/17

79 TextView 屬性 android:gravity:文字對齊方式 android:height android:width
android:typeface:字體 normal sans serif monospace android:textStyle bold italic 2018/9/17

80 TextView 屬性 android:textSize :文字大小 android:textColorLink :連結顏色
android:textColorHighlight :選取文字的顏色 android:textColor :文字顏色 android:singleLine :單行或多行 (true false) android:password: (true false) android:phoneNumber: 電話號碼 (true false) 2018/9/17

81 TextView 屬性 android:numeric android:lines
integer signed decimal android:lines android:hint :當Text是空的時候,就會顯示hint中的文字 android:textColorHint android:digits:除接受數字外,允許此欄位設定的字元 跳脫字元需使用'\\;' android:digits=" */%\\n()" 2018/9/17

82 EditText 可輸入文字元件 標籤:< EditText> 繼承TextView,其所具有屬性請參考TextView
2018/9/17

83 Button 按鈕 標籤:< Button> 繼承TextView,其所具有屬性請參考TextView 2018/9/17

84 ToggleButton on / off 按鈕 標籤:<ToggleButton> 屬性 android:textOn
開啟時所顯示的文字 android:textOff 關閉時所顯示的文字 android:checked 初始時是選取或未選取 (true, false) 2018/9/17

85 RadioButton 單選按鈕 標籤:< RadioButton >
多選一時,需在多選的RadioButton標籤外,加上<RadioGroup> RadioGroup屬性請參考佈局屬性 android:orientation 垂直或水平排列 2018/9/17

86 CheckBox 複選按鈕 標籤:< CheckBox > 屬性請參考TextView 屬性 android:checked
初始時是選取或未選取 (true, false) 2018/9/17

87 ImageButton 標籤:< ImageButton > 圖片按鈕 屬性 android:src
按鈕上的圖片或色彩 android:adjustViewBounds 調整圖片大小以符合按鈕大小 android:cropToPadding 剪裁圖片配合按鈕大小 android:scaleType 控制圖片大小或位置 matrix、fitXY、fitStart、fitCenter、fitEnd、center、centerCrop、centerInside 2018/9/17

88 DatePicker 年月日元件 標籤:< DatePicker> 屬性 android:startYear
可選起始年份 android:endYear 可選結束年份 2018/9/17

89 TimePicker 時間挑選元件 標籤:< TimePicker> 2018/9/17

90 ListView 標籤:< ListView> 條列式選單 屬性 android:choiceMode 選擇模式
none 正常條列式選單 multipleChoice 多選 singleChoice 單選 選單中的選項,引用陣列 android:divider 分隔線顏色 android:dividerHeight:分隔線高度 2018/9/17

91 Spinner 下拉式選單 標籤:< Spinner> <Spinner android:id="@+id/S1"
android:layout_height="wrap_content" android:layout_width="fill_parent" /> 2018/9/17

92 private static final String[] data= new String[]{“5”, “2”, “3”, “4”};
Spinner sp=(Spinner)findViewById(R.id.S1); sp.setAdapter(new ArrayAdapter<String>( this,android.R.layout.simple_spinner_item,data)); 2018/9/17

93 練習 ─ 排版 請排版成右圖 性別: 男 女 身高: Radio button EditText Spinner包含公尺和公分 計算
2018/9/17 TextView

94 事件 2018/9/17

95 View 介面-- OnClickListener
設定元件觸發事件 程式需實作OnClickListener implements OnClickListener 程式中需實作函式onClick(View v) 當按下元件時會執行onClick函式 View v表示觸發這個事件的元件 Button bt=(Button)findViewById(R.id.btn1); bt.setOnClickListener(this); this,表示要在目前這個class(程式)中,實作事件介面 public void onClick(View v) { } 2018/9/17

96 Example: Layout: 2018/9/17

97 2018/9/17

98 Source java 2018/9/17

99 2018/9/17

100 練習 ─ 標準體重計算 根據以下公式計算標準體重 顯示標準體重範圍 性別: 男 女 身高: 男性的標準體重 =
[ 身高 ( 公分 ) - 80 ] × 0.7 女性的標準體重 = [ 身高 ( 公分 ) - 70 ] × 0.6 體重比標準體重多百分之十或少百分之十以內均屬於正常範圍  Radio button 性別: Spinner包含公尺和公分 身高: EditText 計算 Button 顯示標準體重範圍 2018/9/17 TextView

101 2018/9/17

102 Some example for source code
2018/9/17

103 Installation 2018/9/17

104 Connecting mobile first time
HTC Hero as example Connect HTC using USB cable From “控制台” ->”新增硬體精靈” in windows XP 2018/9/17

105 2018/9/17

106 2018/9/17

107 2018/9/17

108 Installation executing “ddms.bat” from “android-sdk-windows”
In HTC, “設定”->”應用程式”->”未知的來源”設定成”ˇ” In HTC, “設定”->”應用程式”->”開發”選”USB除錯中”和”保持喚醒”設定成”ˇ” In windows XP, please install the following package if your PC connects HTC first time. 2018/9/17

109 Check USB device in HTC has been “掛載”
(在”手機狀態欄”下拉選單) Check “HTC Sync\HTCSync” file in microSD card Execute HTCSync 2018/9/17

110 Install application In Eclipse, “run as” or “debug as” android application and select your device (emulator or mobile station). 2018/9/17

111 APK In Eclipse 2018/9/17

112 2018/9/17

113 2018/9/17

114 2018/9/17

115 2018/9/17

116 2018/9/17

117 2018/9/17


Download ppt "嵌入式系統與 Android系統 Embedded System & Android"

Similar presentations


Ads by Google