giới thiệu android - website trong tầm...

47
Giới thiệu Android Chương 1

Upload: others

Post on 19-Jan-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Giới thiệu AndroidChương 1

Page 2: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Chương 1 – Mục tiêu

• TỔNG QUAN

1. Android là gì

2. Môi trường phát triển Android

Page 3: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Chương 1 – Tài nguyên

• Website Android• http://www.android.com/

Page 4: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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)

Page 5: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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, … ”

Page 6: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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. “

Page 7: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Open Handset Alliance Memberd

• Statistical

Page 8: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 9: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Các platform...

• Android vs. competitor

Page 10: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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ể

Page 11: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 12: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 13: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 14: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 15: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 16: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 17: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 18: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 19: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Kiến trúc Android

• Kiến trúc 4 lớp

Core application

Midleware

Operating

System Kernel

Page 20: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Linux kernel

• Linux kernel layer

Page 21: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Các thư viện và Android runtime

• Lớp các thư viện và Android runtime

Page 22: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Application framework

• Lớp Application framework

Page 23: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Application

• Lớp application

Page 24: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 25: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Ứng dụng

• Security sandbox của ứng dụng Android

Page 26: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 27: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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)

Page 28: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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)

Page 29: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Cài đặt Java Development Kit (JDK)

• Accept license + chọn thư mục

Page 30: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Cài đặt Java Development Kit (JDK)

• Cấu hình biến môi trường

Page 31: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 32: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Cài đặt Android Studio

• Download: https://developer.android.com/studio/index.html

Page 33: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Cài đặt Android Studio

• Chọn component và vị trí cài đặt

Page 34: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Chương trình đầu tiên - HelloWorld

• Khởi tạo và cấu hình project

Page 35: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 36: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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ị

Page 37: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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ị

Page 38: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Chương trình đầu tiên - HelloWorld

• Kết quả Chọn thiết bị thật

Click Android Device Monitor

Page 39: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

Chương trình đầu tiên - HelloWorld

• Kết nối với thiết bị vật lý

Page 40: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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»

Page 41: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 42: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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}

Page 43: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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”;}

Page 44: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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);

}

}

Page 45: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 46: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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

Page 47: Giới thiệu Android - Website trong tầm tayteachyourself.vn/wp-content/uploads/2016/12/Gioi-thieu-Android.pdf · • Soạn thảo code C++/Java • Tích hợp thiết kế

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.