Giới thiệu AndroidChương 1
Chương 1 – Mục tiêu
• TỔNG QUAN
1. Android là gì
2. Môi trường phát triển Android
Android là gì?
• Android là nền tảng phần mềm nguồn mở được phát triển bởi Google và Open Handset Alliance.
• Sử dụng chủ yếu để phát triển các ứng dụng trên thiết bị di động
• Ngoài ra Android cũng được dùng để phát triển các ứng dụng nhúng (embedded)
Android là gì?
• AndroidTM chứa tập hợp các thành phần phần mềm cho các thiết bị di động bao gồm:
• Hệ điều hành
• Middleware
• Các ứng dụng nhúng/di động
• Tại sao chọn Android• Thị trường lớn
“…currently it is too difficult to make new products … open software brings more innovation … choices … lower costs … more applications such as family planner, my taxes, understand my wife better, … ”
Open Handset Alliance
• Website: www.OpenHandsetAlliance.com
“… Open Handset Alliance™, a group of 47 technology and mobile companies have come together to accelerate innovation in mobile and offer consumers a richer, lessexpensive, and better mobile experience.
• Together we have developed Android™, the first complete, open, and free mobile platform.
• We are committed to commercially deploy handsets and services using the Android Platform. “
Open Handset Alliance Memberd
• Statistical
Android Platform
• Android là môi trường phần mềm được xây dựng cho các thiết bị di động
• Không phải là hardware platform
• Android bao gồm• Linux kernel-based OS
• Rich UI
• Telephone functionality
• End-user application
• Code libraries
• Application framework
• Multimedia support...
• User applications được lập trình trên java
Các platform...
• Android vs. competitor
Môi trường phát triển ứng dụng di động
• Intergrated Development Environment (IDE): tập hợp các công cụ giúp người lập trình xây dựng các ứng dụng di động
• Software Development Kit (SDK): tập hợp các công cụ phát triển cho phép tạo các ứng dụng di động cho một platform cụ thể
Symbian Development Environment
• Qt Creator + Qt SDK• Qt Creator là cross-platform IDE cung cấp
• Soạn thảo code C++/Java
• Tích hợp thiết kế giao diện người dùng (Intergreated UI designer)
• Các công cụ quản lý dự án
• Hỗ trợ điều khiển phiên bản
• Simulator cho các UI mobile
• Hỗ trợ cả desktop và mobile
• Qt SDK gồm các công cụ thiết kế cho việc xây dựng ứng dụng• Dễ cài đặt
• Cung cấp simulator để test app
• Cho phép sử dụng lại code giữa các platform
Môi trường phát triển Android
• Bao gồm các công cụ phát triển Android (Android Developer Tools (ADT)
• Các thành phần• Eclipse + ADT plugin
• Android SDK
• Android Platform
• Android system image for the emulator
Môi trường phát triển Blackberry
• Bao gồm Blackberry Java Development Environment (JDE)• SDK cung cấp các công cụ
• API
• Đặc điểm• Mobile Information Device Profile (MIDP) – Môi trường Java ME
• Cung cấp giao diện và tiện ích
• Cho phép sử dụng các đặc trưng của điện thoại Blackberry
Môi trường phát triển Apple
• Sử dụng Xcode để phát triển ứng dụng trên iOS platform
• Xcode bao gồm SDK để tạo ứng dụng chạy trên các phiên bản iOS hoặc Mac Os cụ thể
• Xcode IDE
• iOS simulator
• Các công cụ
• LLVM compiler
Môi trường phát triển Windows
• Bao gồm• Visual Studio IDE
• Windows Mobile SDK
• Đặc điểm• Có emulator cho các thiết bị windows phone
• Windows Mobile device emulator dựa trên các component trong Visual Studio
Các thành phần của Android (stack)
• Android stack bao gồm một mảng lớn các đặc trưng cho ứng dụng mobile
• Có thể thấy tương tự như môi trường tính toán đa chức năng
• Chứa tất cả các thành phần chính của platform tính toán
Các thành phần của Android
• Application framework: cho phép sử dụng lại và thay thế các component
• Dalvik virtual machine: tối ưu hóa cho các thiết bị di động
• Intergrated browser: dựa trên phần mềm nguồn mở WebKit
• Optimized graphics: thư viện đồ họa 2D; thư viện đồ họa 3D dựa trên OpenGL ES
• SQLite: lưu trữ dữ liệu có cấu trúc
• Hỗ trợ multimedia: các khuôn dạng MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
• GSM Telephony (phụ thuộc phần cứng)
• Bluetooth, EDGE, 3G, 4G, wify (phụ thuộc phần cứng)
• Camera, GPS, compass, accelerometer (phụ thuộc phần cứng)
• Môi trường phát triển: emulator, debugging, quản lý bộ nhớ, IDE...
Android APIs
• Là các hàm được cung cấp để các ứng dụng có thể sử dụng để giao tiếp với hệ thống Android
• Một số mức API kết hợp với Android platformPlatform version API level
Android 4.1, 4.2 16, 17
Android 4.0, 4.0.3 14, 15
Android 3.0, 3.1, 3.2 11, 12, 13
Android 2.3, 2.3.3 9, 10
Android 2.1, 2.2 7, 8
Android 2.0, 2.0.1 5, 6
Android 1.5, 1.6 3, 4
Android 1.0, 1.1 1, 2
Kiến trúc Android
• Kiến trúc 4 lớp
Core application
Midleware
Operating
System Kernel
Linux kernel
• Linux kernel layer
Các thư viện và Android runtime
• Lớp các thư viện và Android runtime
Application framework
• Lớp Application framework
Application
• Lớp application
Application
• Mỗi ứng dụng Android được cài đặt và cấu hình trên thiết bị sẽ làm việc trong miền security sandbox, với các đặc điểm sau
• Mỗi ứng dụng được cài đặt sẽ được gán một Linux user ID duy nhất (UID)
• Hệ thống Android thiết lập quyền (permission) cho tất cả các file trong ứng dụng
• Khi thực hiện ứng dụng, tiến trình Linux kết hợp với ứng dụng Android thực hiện trong môi trường máy chủ ảo của nó
• Khi ứng dụng thực hiện trong tiến trình Linux của nó, hệ thống Android khởi động tiến trình khi bất cứ thành phần nào của ứng dụng cần thực hiện và tắt tiến trình khi kết thúc
Ứng dụng
• Security sandbox của ứng dụng Android
Dalvik Virtual Machine
• Các ứng dụng của người sử dụng và ứng dụng lõi Android được viết trên ngôn ngữ Java và được dịch thành byte code
• Các Android byte code được biên dịch tại runtime bởi bộ xử lý Dalvik Virtual Machine
Java virtual machine
• Android bytecode files tương tự java bytecode về mặt logic –cho phép Android:
• Chạy ứng dụng của nó chạy trên môi trường ảo của chính nó (free)
• Open platform (Google)
Cài đặt Java Development Kit (JDK)
• Android Studio sử dụng các công cụ Java để biên dịch
• Download: Oracle site• http://www.oracle.com/technetwork/j
ava/javase/downloads/index.html
• Windows x64 (khoảng 125MB)
Cài đặt Java Development Kit (JDK)
• Accept license + chọn thư mục
Cài đặt Java Development Kit (JDK)
• Cấu hình biến môi trường
Cài đặt Java Development Kit (JDK)
• Cấu hình biến môi trường
Edit JAVA_HOME
Edit path
Test:
Cmd
Java –version
Cài đặt Android Studio
• Download: https://developer.android.com/studio/index.html
Cài đặt Android Studio
• Chọn component và vị trí cài đặt
Chương trình đầu tiên - HelloWorld
• Khởi tạo và cấu hình project
Chương trình đầu tiên - HelloWorld
• Chọn option cho project
Activity Name: Main Activity
Layout Name: activity_main
Title: MainActivity
Menu Resource Name: menu_main
Chương trình đầu tiên - HelloWorld
• Quản lý thiết bị Android ảo
Chọn biểu tượng Android Virtual
Device Manager
Chọn Create Virtual Device + chọn
thiết bị
Chương trình đầu tiên - HelloWorld
• Chọn x86_64 system image Chạy chương trình
Chọn thiết bị
Chương trình đầu tiên - HelloWorld
• Kết quả Chọn thiết bị thật
Click Android Device Monitor
Chương trình đầu tiên - HelloWorld
• Kết nối với thiết bị vật lý
Java cơ bản
• Các kiểu dữ liệu cơ bản
• Web test: www.browxy.com
Kiểu Tập giá trị Phép toán Ví dụ
int Số nguyên +, -, *, /, % 99, 12, 1234567
double Số thực dấu phẩy động +, -, *, / 3.14, 6.022e23
boolean Các giá trị logic &&, ||, ! True, false
char Các ký tự ‘A’, ‘1’, ‘%’
String Dãy ký tự + «AB», «Hello», «2.5»
Java cơ bản
• Các lệnh gán Các lệnh so sánh
int a, b;
int c = a + b;
a= 1234;
b=99;
Khai báo biến
Lệnh gán
Khai báo biến
kết hợp lệnh
gán
Toán tử Ý nghĩa True False
== So sánh bằng 2==2 2==3
!= Khác 3 != 2 2 !=2
< Nhỏ hơn 2 < 3 2 < 2
<= Nhỏ hơn hoặc bằng 2 <= 2 3 <=2
> Lớn hơn 3 > 2 2 > 3
>= Lớn hơn hoặc bằng 3 >= 2 2 >=3
Java cơ bản
• Các lệnh điều kiện• If ( điều kiện) {
thực hiện công việc nếu điều kiện đúng} else {
thực hiện công việc nếu điều kiện sai}
Ví dụ: int a = 3if (a > 5) {// đúng} else {// sai}
Java cơ bản
• Lệnh switch case
switch (variable) {case c1:
statements // thực hiện nếu variable == c1break;
case c2: statements // thực hiện nếu variable == c2break;
case c3:. . .default:
statements // thực hiện nếu không thỏa mãn trường hợp nào ở trênbreak;
}
int thang = 2;String chuoi;switch (thang) {case 1: chuoi = “Thang 1”;
break;case 1: chuoi = “Thang 1”;
break;case 1: chuoi = “Thang 1”;
break;default: chuoi = “Khong xac dinh”;}
Java cơ bản
• Mảng – Array List
import java.util.ArrayList;
public class Program {
public static void main(String[] args) {
// Create new ArrayList.
ArrayList<Integer> elements = new
ArrayList<>();
// Add three elements.
elements.add(10);
elements.add(15);
elements.add(20);
}
// Get size and display.
int count = elements.size();
System.out.println("Count: " + count);
// Loop through elements.
for (int i = 0; i < elements.size(); i++) {
int value = elements.get(i);
System.out.println("Element: " +
value);
}
}
Intents
• Intent: mô tả về một hoạt động cần được thực hiện (cho phép truyền thông điệp giữa các thành phần của một ứng dụng và giữa các ứng dụng với nhau)
• Thuộc tính• Action: hành động được thực hiện
• Data: dữ liệu được xử lý trong action
• Intent Filter:• Định vị tập hợp các Action, Service và BroadcastReceiver mà có thể
xử lý intent với sự giúp đỡ của một tập đã cho của các Action, Category, Data Sheme mà gắn kết với một Intent
Intents and IntentFilter
• Thông tin chính của intent
Action Data
Action chính
ACTION_VIEW,
ACTION_EDIT,
ACTION_MAIN
...
Thao tác trên dữ liệu (ví dụ bản ghi
trong database), biểu diễn dưới dạng
Uri
Intents and IntentFilter
• Ví dụ
• ACTION_VIEW content://contacts/1 ‐‐ Display information about the person whose identifier is "1".
• ACTION_DIAL content://contacts/1 ‐‐ Display the phone dialer with the person filled in.
• ACTION_VIEW tel:123 ‐‐ Display the phone dialer with the given number filled in
• ACTION_DIAL tel:123 ‐‐ Display the phone dialer with the given number filled in.
• ACTION_EDIT content://contacts/1 ‐‐ Edit information about the person whose identifier is "1".
• ACTION_VIEW content://contacts/ ‐‐ Display a list of people, which the user can browse through.