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

Slides:



Advertisements
Similar presentations
第一章 讲师:张晓飞 微信 : zxf_zxy_rxf Android 快速入门. 1. 介绍 Android 2. 完成第一个 Android 应用 3. 三个开发调试工具 4. 应用练习 1.1 Android 相关基础知识 1.2 Android 系统架构 2.1 搭建开发环境 2.2 开发第一个应用.
Advertisements

开发入门 一个 android 初学者的心得与体会. 前言 两周前张老师通知我说,让我根据教练助手的学习与开发的过程讲下 android 开发的心得与体会,我觉得自己在这么多 Android 前辈大佬面前讲 android 简 直是班门弄斧。由于是刚入门的初学者,水平有限,很多方面还很不足,对 错误或不周到之处欢迎批评指正。顺便还得提下,我这个标题有抄袭积聚童.
Android ADT + Android SDK Eclipse Eclipse 編輯器 JAVA JAVA 開發工具.
第二章 Android 简单界面开发 倚动软件工厂实验室 View 组件介绍 布局管理器 自定义组件 目录 CONTENTS.
第一單元 建立java 程式.
Android App簡介及 App Inventor 2體驗 靜宜大學資管系 楊子青
第2章  Android应用的界面编程.
第一章 Android简介与环境搭建 QQ号: QQ群: (Android编程入门) 网络资源:
實驗五:多媒體播放器選單介面.
Part 2 開發Android應用程式的流程
XML 第05讲 使用CSS显示XML.
Subversion (SVN) Presented by 李明璋 R /2/21
ArrayAdapter & Spinner
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
使用Android Studio 開發Android App 靜宜大學資管系 楊子青
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
APP課程:Android程式設計開發環境與工具介紹
實驗四:單位轉換程式.
第2章 建立Android應用程式 2-1 Java語言、XML文件與Android 2-2 建立第一個Android應用程式
第17章 使用B4J建立跨平台應用程式 17-1 認識B4J整合開發環境 17-2 下載與安裝B4J開發環境
Ch06 再談選單元件 物件導向系統實務.
MIT App Inventor簡介及 「Hello World」程式初體驗 靜宜大學資管系 楊子青
Android開發環境建置與設定 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
安裝與設置 Android 發展環境 靜宜大學資工系 蔡奇偉副教授 ©.
Android SDK工具 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
簡易 Visual Studio 2010 C++ 使用手冊
Chapter 6 Advanced UI Design.
Android介面設計 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
Chapter 6 進階UI設計.
App Inventor 2體驗 靜宜大學資管系 楊子青
第4章 Android生命周期.
Android 课程讲义 智能手机开发
CH7 佈局、按鈕與文字編輯元件.
Android + Service 建國科技大學 資管系 饒瑞佶.
Android 基礎.
Android開發環境建置與設定 建國科技大學 資管系 饒瑞佶 2010/10.
Android五大布局 线性布局/相对布局.
實驗十四:顯示與控制地圖.
第2讲 移动应用开发基础知识(二) 宋婕
第八讲 MATLAB图形用 户界面设计.
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第6章 建立Android使用介面 6-1 介面元件的基礎 6-2 Android的事件處理 6-3 按鈕元件 6-4 文字元件
Android手动测试实践 ——绮珠.
簡易 Visual Studio 2005 C++ 使用手冊
建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2 2013/2 V3 2014/9 V4
Linux核心編譯與模組管理 2013/01/19.
實驗十一:待辦事項程式 (儲存在手機上).
主编:钟元生 赵圣鲁.
Android Studio介面設計 建國科技大學資管系 饒瑞佶 2016/3 V1.
Broadcast System For Mobile Device
Chapter 5 Basic UI Design.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
主编:钟元生 赵圣鲁.
Location Based Services - LBS
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
实验一:编译运行Linux内核并使用gdb进行调试
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
Create and Use the Authorization Objects in ABAP
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
如何連上工作站 WorkStations: 1. Solaris 2. Linux Use X-Win32 (for Solaris)
RecyclerView and CardView
Activity的生命週期: 播放音樂與影片 靜宜大學資管系 楊子青
布局管理器 本讲大纲: 1、线性布局 2、表格布局 3、帧布局 4、相对布局 5、范例1:使用表格布局与线性布局实现分类工具栏
第4章 闪烁霓虹灯--层布局的应用 授课老师:高成珍 QQ号: QQ群: 、
Usage Eclipse 敏捷方法工具介紹 實驗室網站:
劉庠宏、林合治編著 國立高雄大學應用數學系 2005年3月1日
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
Presentation transcript:

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

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

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

#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

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

$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

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

$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

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

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

$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

$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

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 115200,N,8,1,No flow control. Power on platform and hit the space in Terminal 2018/9/17

2018/9/17

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

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

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

Type “tftp 0x50008000 system.img; nand erase 0xa00000 0x4300000;nand write.yaffs 0x50008000 0xa00000 0x{filesize} Type “tftp 0x50008000 userdata.img; nand erase 0x6100000 0x1f00000;nand write.yaffs 0x50008000 0x6100000 0x840 2018/9/17

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

2018/9/17

2018/9/17

2018/9/17

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

2018/9/17

2018/9/17

Some features on Eclipse 2018/9/17

2018/9/17

2018/9/17

2018/9/17

2018/9/17

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

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

2018/9/17

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

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

程式目錄架構 2018/9/17

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

2018/9/17

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

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

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

<?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

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

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

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

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

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

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

<style> <?xml version="1.0" encoding="utf-8"?> <resources> <style name="myStyle"> <item name="android:color">@color/r</item> <item name="android:foreground">@drawable/blue</item> <item name="android:background">@drawable/green</item> <item name="android:textColor">@color/g</item> <item name="android:textSize">@dimen/ten_pixel</item> </style> </resources> 2018/9/17

style資源使用方法 XML Java setTheme(R.style.myStyle); android:theme="@style/myStyle" 2018/9/17

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

2018/9/17

2018/9/17

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

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

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

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

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

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

Method 1 First step 2018/9/17

Modify xml file 2018/9/17

Method 2 2018/9/17

2018/9/17

2018/9/17

2018/9/17

2018/9/17

2018/9/17

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

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

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

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

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

2018/9/17

2018/9/17

元件 2018/9/17

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

事件 2018/9/17

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

Example: Layout: 2018/9/17

2018/9/17

Source java 2018/9/17

2018/9/17

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

2018/9/17

Some example for source code 2018/9/17

Installation 2018/9/17

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

2018/9/17

2018/9/17

2018/9/17

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

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

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

APK In Eclipse 2018/9/17

2018/9/17

2018/9/17

2018/9/17

2018/9/17

2018/9/17

2018/9/17