1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Hệ điều hành android và xây dựng ứng dụng contact trên android

25 364 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 1,47 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương 1 Tổng quan về hệ điều hành Android1.1 Lịch sử Android • Năm 2003, một công ty hoạt động trong lĩnh vực phát triển phần mềm cho các thiết bị di động mang tên là Android được thành

Trang 1

MỤC LỤC

MỤC LỤC

LỜI NÓI ĐẦU 1

Chương 1 Tổng quan về hệ điều hành Android 2

1.1 Lịch sử Android 2

1.2 Kiến trúc Android 3

1.2.1 Lớp Application 4

1.2.2 Lớp Application FrameWork 4

1.2.3 Lớp Library & Runtime Layer 4

1.2.4 Lớp Linux Kernel 6

1.3 Công cụ phát triển Eclipse 7

1.4 Các thành phần cơ bản của một ứng dụng Android 8

1.4.1 Activity 8

1.4.2 Service 11

1.4.3 ContentProvider 13

Chương 2 Xây dựng ứng dụng Contact trên Android 17

2.1 Thiết kế hệ thống 17

2.1.1 Thiết kế tổng quan 17

2.1.2 Thiết kế cụ thể các thành phần 19

2.2 Kết quả chạy chương trình 20

KẾT LUẬN 23

Trang 2

LỜI NÓI ĐẦU

Hệ điều hành Android hiện đang là hệ điều hành được ưa chuộng nhất trong thếgiới thiết bị cấm tay Với sự ra mắt của Android và sự phát triển không ngừng của nềntảng di động này đã đánh dấu một đối trọng với iOS của Apple trên thị trường di động.Trong tương lai Android sẽ còn phát triển mạnh mẽ Vì vậy trong bài thực tập này em

tìm hiểu về : “Hệ điều hành Android và xây dựng ứng dụng Contact trên Android”.

Qua đây em xin chân thành cảm ơn công ty Samsung electronic Vietnam đã tạomọi điều kiện cho em trong quá trình thực tập và thầy giáo Phạm Thành Công đã giúp

đỡ ,hướng dẫn cho em hoàn thành tốt đợt thực tập này

Trang 3

Chương 1 Tổng quan về hệ điều hành Android

1.1 Lịch sử Android

• Năm 2003, một công ty hoạt động trong lĩnh vực phát triển phần mềm cho các thiết

bị di động mang tên là Android được thành lập bởi 4 thành viên là:

– Andy Rubin (nhà đồng sáng lập công ty Danger - công ty chuyên về các nềntảng, phần mềm, thiết kế, và dịch vụ cho các thiết bị điện toán di động)– Rich Miner (nhà đồng sáng lập công ty truyền thông WildfireCommunications)

– Nick Sears (một trong những vị phó chủ tịch của nhà cung cấp mạng viễnthông di động T-Mobile ở Mỹ)

– Chris White (trưởng bộ phận thiết kế và phát triển giao diện của WebTV)

• Năm 2005, sau hơn 2 năm hoạt động thì Android được Google mua lại với mộtkhoản tiền không được tiết lộ và chính thức trở thành một trong những công ty con của

gã khổng lồ ngành tìm kiếm Đồng thời cả Andy Rubin, Rich Miner và Chris Whiteđều quyết định tiếp tục làm việc tại chính công ty của mình sau khi được mua lại Ởthời điểm đó, nhiều người không thực sự chú ý vào thương vụ này, thế nhưng nó lạiđánh dấu bước đi đầu tiên của Google trong thị trường thiết bị di động thế giới

• Tại Google, một nhóm nghiên cứu đứng đầu là Rubin đã bắt đầu phát triển một nềntảng dành cho thiết bị di động dựa trên nhân của hệ điều hành Linux Và sau đó, hệđiều hành này cũng được giới thiệu đến các nhà phát triển phần cứng lẫn phần mềm,báo hiệu sự có mặt của một "ngôi sao" khác trên "thiên hà" thị trường công nghệ diđộng

• Đến tháng 12 năm 2006, suy đoán về ý định gia nhập thị trường truyền thông di động của Google tiếp tục được củng cố sau khi BBC và The Wall Street Journal cho biết rằng hãng này muốn đưa ứng dụng và chức năng tìm kiếm của mình lên các thiết

bị di động Lập tức ngay sau đó, nhiều tin đồn về chiếc điện thoại mang thương hiệu Google xuất hiện khắp các phương tiện truyền thông

• Tháng 5 năm 2007, liên minh các nhà sản xuất thiết bị cầm tay - Open Handset Alliance (OHA) được thành lập bao gồm Google và một số thành viên khác của cộng đồng Linux mở như: Broadcom Corporation, Google, HTC, Intel, LG, Marvell

Trang 4

Technology Group, Motorola, Nvidia,Qualcomm, Samsung Electronics, Sprint Nextel,T-Mobile và Texas Instruments Mục tiêu của OHA là phát triển tiêu chuẩn mở cho các thiết bị di động và sản phẩm đầu tiên của liên minh này đó là Android, một nền tảng di động được xây dựng trên nhân Linux phiên bản

Hình 1.1 Liên minh di dộng

1.2 Kiến trúc Android

Trang 5

Hính 1.2 Kiến trúc Android

1.2.1 Lớp Application

Android được phát hành cùng với một bộ các ứng dụng gốc bao gồm: email, trình tinnhắn SMS, lịch, bản đồ, trình duyệt web, danh bạ, và một số ứng dụng khác Tất cảcác ứng dụng trên được viết bằng ngôn ngữ lập trình Java

Android đưa ra một cơ chế rất linh động cho phép người sử dụng có thể thay thế cácứng dụng mặc định này bằng bất kì ứng dụng nào của bên thứ 3

Trong Android được chia ra làm hai loại ứng dụng :apps và widgets.Apps là các ứngdụng bao phủ toàn bộ màn hình còn widgets là các ứng dụng mà khi hoạt động nó chỉchiếm một phần nhỏ của màn hình thiết bị

1.2.2 Lớp Application FrameWork

Tầng này cung cấp một nền tảng phát triển ứng dụng mở qua đó cho phép nhà phát triển ứng dụng có khả năng tạo ra các ứng dụng vô cùng sáng tạo và phong phú

Hình 1.3 Lớp Application Framework

Activity Manager – Quản lý vòng đời của một ứng dụng

Window Manager – Quản lý hiện thị

Content Providers –Sử dụng trong việc chia sẻ dữ liệu giữa các ứng dụng

View System –Chịu trách nhiệm tạo và quản lý các View

Package Manager –Sử dụng trong việc cái đặt,cập nhật , gỡ bỏ ứng dụng

Telephony Manager –Sử dụng để cung cấp các dịch vụ thoại như gọi điện

Resource Manager –Quản lý các nguồn tài nguyên của ứng dụng như :ảnh,nhạc Location Manager –Sử dụng để theo dõi vị trí vật lý của điện thoại

Notification Manager –Thông báo khi có các sự kiện xẩy ra như là :tin nhắn,lịch

1.2.3 Lớp Library & Runtime Layer

Trang 6

Lớp tiếp theo được gọi là lớp Thư viện Nó được chia thành hai phần Phần đầu tiên chứa các thiết lập của C / C + + thư viện được sử dụng bởi các thành phần khác

Android và phần thứ hai được gọi là Android Runtime có bao gồm tập hợp các thư viện lõi Java và máy ảo Hình dưới đây cho thấy lớp Library Runtime

Hình 1.4 Lớp Library & Runtime Layer

Một số C / C + + thư viện được liệt kê dưới đây

LibC- Đây là hệ thống tiêu chuẩn thư viện C.

Media Framework- được sử dụng để hỗ trợ phát và ghi âm của âm thanh và các định

dạng video khác nhau Cùng một thư viện cũng được sử dụng cho các tập tin hình ảnh

Surface Manager - Điều này được sử dụng để quản lý quyền truy cập vào hệ thống

con hiển thị

LibWebCore - được sử dụng như là một công cụ trình duyệt web trên trình duyệt web

và Android xem nhúng

SGL - Điều này được sử dụng để làm đồ họa 2D.

3Dlib -được sử dụng để vẽ đồ họa 3D.

Freetype- sử dụng để làm cho phông chữ Cả bitmap và vector vẽ phông chữ được hỗ

trợ

SQLite - được sử dụng để làm việc với RDBMS Nó là một RDBMS nhẹ thư viện mà

không phải là lớn như các đối tác để bàn của họ nhưng vô cùng hữu ích trong phạm vithiết bị cầm tay di động

Android sử dụng Dalvik Virtual Machine (DVM) :điểm nổi bật DVM là một thiết

bị có thể chạy nhiều trường hợp của nó Xin lưu ý rằng mặc dù Android sử dụng Java

là ngôn ngữ lập trình của nó, mã thực thi không phải là một tập tin class Thay vào đó,Android có định dạng riêng của mình được biết đến như là định dạng thực thi Dalvik (dex) được tối ưu hóa cho bộ nhớ tối thiểu

Trang 7

1.2.4 Lớp Linux Kernel

Hình 1.5 Lớp Linux Kernel

Hệ điều hành Android được xây dựng trên bộ nhân Linux 2.6 cho những dịch vụ hệthống cốt lõi như bảo mật,quản lý bộ nhớ, quản lý các tiến trình….Bộ nhân này làmnhiệm vụ như một lớp trung gian kết nối phần cứng thiết bị và phần ứng dụng

Hình 1.6 Java Native Interface

JNI:Java Native Interface

Java Native Interface :là một bộ framework cho phép mã lệnh viết bằng Java chạy trênmáy cảo Java có thể gọi được hoặc được gọi bởi một ứng dụng viết bằng native

code(Ứng dụng hoặc những bộ thư viện viết bằng C,C++,hoặc Assembly)

Bằng cách sư dụng JNI ,android cho phép các ứng dụng chạy trên máy ảo Dalvik có thể sử dụng được những phương thức được viết bằng ngôn ngữ cấp thấp như :C,C++,Assembly.Qua đó các nhà phát triển ứng dụng có thể xây dựng ứng dụng dựa trên các bộ thư viện C, C++, Assembly nhằm tăng tốc độ thực thi của ứng dụng hoặc sử

Trang 8

dụng các tính năng mức thấp mà ngôn ngữ Java không hỗ trợ Tuy nhiên người phát triển ứng dụng cần phải cân nhắc sự gia tăng độ phức tạp của ứng dụng khi quyết định

sử dụng bộ thư viện này

1.3 Công cụ phát triển Eclipse

Hình 1.7 Thành phần một project Android trong Eclipse

AndroidManifest.xml: file XML mô tả ứng dụng và các thành phần đuợc cung cấp

bởi ứng dụng (activities, services, )

build.xml: Một file chứa mã script Ant (ant.apache.com) nhằm compile và cài đặt ứng

dụng lên máy

bin/ : nơi chứa ứng dụng sau khi được compile.

libs/ : nơi chứa các file Java JAR ứng dụng yêu cầu.

src/ : nơi chứa mã nguồn Java của ứng dụng.

res/ : chứa các tài nguyên của ứng dụng, như các icons, GUI layouts,

res/drawable/ : chứa file hình ảnh (PNG, JPEG, ).

res/layout/ : chứa UI layout, dưới dạng XML.

res/menu/ : chi tiết các menu, dưới dạng XML.

res/raw/ : chứa các file khác (CSV chứa thông tin account, ).

res/values/ : chứa các strings, dimensions,

res/zml/ : chứa các file XML khác cần cho ứng dụng.

assets/ : nơi chứa các files tĩnh (static) được yêu cầu đi kèm với ứng dụng.

Trang 9

Ở đây chúng ta phải luôn chú ý tới file manifest để tránh lỗi khi viết các ứng dụng trênandroid

Cụ thể những công việc mà AndroidManifest.xml thực hiện:

- Đặt tên cho Java package của ứng dụng

- Mô tả các thành phần (component) của ứng dụng: activity, service, broadcastreceiver hoặc content provider

- Thông báo những permission mà ứng dụng cần có để truy nhập các protectedAPI và tương tác với các ứng dụng khác

- Thông báo những permission mà các ứng dụng khác cần có để tương tác vớiứng dụng hiện thời

- Thông báo level thấp nhất của Android API mà ứng dụng cần để chạy.(Android 1.0 là level 1, 1.1 là level 2, 1.5 level 3, 1.6 level 4 và 2.0 là level 5)

Trang 10

sẽ được xếp lên đầu của stack và trở thành running activity, các Activity trước đó

sẽ bị tạm dừng và chỉ hoạt động trở lại khi Activity mới được giải phóng

Một Activity có 4 trạng thái:

Active hay Running: Khi một activity đang chạy trên màn hình.

Paused: Khi một activity vẫn đang chạy trên màn hình nhưng đang bị một activity

trong suốt (transparent) hay không chiếm toàn màn hình hiển thị phía trên Tuy vẫn

lưu trữ dữ liệu, nhưng các paused activity này sẽ bị hệ thống bắt chấm dứt khi đang

thiếu bộ nhớ trầm trọng

Stopped: Khi 1 activity bị che khuất hoàn toàn bởi 1 activity khác Tuy vẫn lưu

trữ dữ liệu, nhưng các stopped activity này sẽ thường xuyên bị hệ thống bắt chấm dứt

để dành chỗ cho các tiến trình khác

Killed hay Shut down: Khi 1 activity đang paused hay stopped, hệ thống sẽ xóa

activity ấy ra khỏi bộ nhớ

Trang 11

Hình 1.9 Vòng đời một activity

Có 2 phương thức mà gần như mọi lớp con của Activity đều phải hiện thực:

onCreate(Bundle) - Nơi khởi tạo activity Quan trọng hơn, đây chính người lập

trình gọi setContentView(int) kèm theo layout để thể hiện UI của riêng mình Đồngthời còn có findViewById(int) giúp gọi các widget (buttons, text boxes, labels, ) đểdùng trong UI

Trang 12

onPause() - Nơi giải quyết sự kiện người dùng rời khỏi activity Mọi dữ liệu được

người dùng tạo ra tới thời điểm này cần phải được lưu vào ContentProvider

Khởi động 1 activity từ 1 activity khác

 Khai báo tường minh: cung cấp chính xác thông tin của activity cần gọi (nếucùng ứng dụng chỉ cần cung cấp tên class, nếu ứng dụng khác nhau thì cung cấptên package, tên class)

Intent intent = new Intent(getApplicationContext(),TargetActivity.class); startActivity(intent);

 Khai báo không tường minh: cung cấp thao tác cần làm gì, với loại dữ liệu nào, thao tác thuộc nhóm nào… hệ thống sẽ tìm activity tương ứng để khởi động

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivity(intent);

Liên lạc giữa 2 activity

 Bên phía activity được khởi động, có thể lấy dữ liệu được gửi như sau:

getIntent().getExtras().getString("value1");

getIntent().getExtras().getLong("value2");

 Khi khởi động một activity, ta có thể gửi kèm dữ liệu trong intent như ví dụ sau:

intent.putExtra("value1", new String("Hello"));

intent.putExtra(“value2", new Long(100));

 Bên phía activity được khởi động, có thể lấy dữ liệu được gửi như sau:

Trang 13

Service phải chứa thẻ <service> được khai báo trong file AndroidManifext.xml.

Services có thể được bắt đầu bởi Context.startService() và Context.bindservice()

Cũng như các đối tượng của ứng dụng khác, services chạy trên luồng (Thread) củatiến trình chính Có nghĩa là nếu service của bạn dự định chạy các hành vi có cường độlớn hoặc các hành vi có thể gây nghẽn mạch, nó sẽ tự sinh ra luồng (Thread) của chính

nó để làm thực hiện các tác vụ được đặc tả trong Service

Service không phải là một tiến trình độc lập Đối tượng Service không chạy trêntiến trình (process) của riêng nó (trừ khi có một yêu cầu đặt biệt), Service chạy trêntiến trình của chương trình

Service không phải là một luồng (thread)

Service có chứa 2 đặc trưng cơ bản sau:

 Là một chức năng để ứng dụng thông báo với hệ thống về việc mà nó muốnthực hiện ở phía dưới nền (ngay cả khi người dùng không tương tác trực tiếp tớiứng dụng) Điều này tương ứng với việc gọi phương thức Context.startservice(),

nó sẽ yêu cầu hệ thống lên lịch cho service để chạy cho đến khi bị chính servicehay người nào đó dừng nó lại

 Là một chức năng cho phép ứng dụng để cung cấp các chức năng của nó chocác ứng dụng khác Điều đó tương ứng với việc gọi Context.bindService(), chophép một long-standing connection được tạo ra để service có thể tương tác vớinó

Khi một Service được tạo ra, việc hệ thống cần làm là tạo ra thành phần và gọihàm onCreate() và bất kỳ lệnh callback thích hợp nào trên luồng chình Nó phụ thuộcvào Service thi hành hành vi thích hợp nào, chẳng hạn tạo luồng thứ hai để thực hiệntiến trình

Vòng đời của một Service

Có 2 lý do để một service được chạy bởi hệ thống Bằng cách gọi phương thức Context.startService() và Context.bindService() Nếu người dùng gọi phương thức

Context.startService() thì hệ thống sẽ nhận về một đối tượng service (tạo mới nó và

gọi hàm onCreate() nếu cần thiết) và sau đó lại gọi phương thức

onStartCommand(Intent, int ,int) với các biến được cung cấp bởi client Service mới được tạo ra này sẽ chạy cho tới khi có lệnh gọi phương thức Context.stopService() hoặc stopSelf() Dù cho một service có được start bao nhiêu lần đi nữa thì nó sẽ bị tắt

Trang 14

ngay khi phương thức Context.stopService() hoặc phương thức stopSelf() được

gọi.Service có thể dùng phương thức stopSelf(int) để đảm bảo rằng service sẽ không được tắt cho đến khi Intent đã khởi tạo nó được xử lý

Hình 1.10 Vòng đời một Service

Dựa theo hình trên, 1 service được bắt đầu bởi phương thức startService() là servicedùng để thực hiện các tác vụ ngầm dưới nền, service được bắt đầu bởi phương thức bindService() là service được dùng để cung cấp các chức năng cho các chương trình khác

• BroadcastReceiver (có thể gọi là Receiver là một trong bốn loại thành phần trong ứng dụng Android Chức năng dùng để nhận các sự kiện mà các ứng dụng hoặc hệ thống phát đi

• Thực ra lifecycle của BroadcastReceiver chỉ có duy nhất một phương thức

onReceive().Khi có sự kiện mà BroadcastReceiver đã đăng ký nhận được phát

Trang 15

đi, thì phương thức onReceive() của BroadcastReceiver đó sẽ được gọi.Sau khi thực thi xong phương thức này, lifercycle của Receiver kết thúc.

• Ngay khi onReceive() kết thúc, hệ thống coi như receiver đã không còn hoạt động

và có thể kill process chứa receiver này bất cứ lúc nào.Tránh xử lý các code quá lâu trong onReceive().Không có xử lý bất đồng bộ, chờ callback… trong Receiver(cụ thể như hiển thị Dialog, kết nối service…)

1.4.3 ContentProvider

Là nơi lưu trữ và cung cấp cách truy cập dữ liệu do các ứng dụng tạo nên Đây làcách duy nhất mà các ứng dụng có thể chia sẻ dữ liệu của nhau.Android cung cấp sẵncontent providers cho 1 số kiểu dữ liệu thông dụng như âm thanh, video, thông tin sổđiện thoại, (Xem thêm trong gói android.provider) Người lập trình cũng có thể tựtạo ra các class con (subclass) của Content Provider để lưu trữ kiểu dữ liệu của riêngmình

Cách thức hoạt động của Content Provider:

Mọi content provider, tuy có thể khác nhau về cách thức lưu trữ dữ liệu, đều sửdụng chung 1 interface để tìm và trả về dữ liệu, bao gồm việc thêm, bớt và sửa dữ liệu.Việc này được thực hiện thông qua các đối tượng ContentResolver khi gọigetContentResolver()

ContentResolver cr = getContentResolver();

Content providers sử dụng dữ liệu dưới dạng 1 table đơn giản, trong đó mỗi hàng là

1 record và mỗi cột là dữ liệu của 1 kiểu nhất định

Mỗi record có 1 trường “_ID” độc nhất để liên kết với các bảng khác

URI (Uniform Resource Identifier) là dãy các ký tự string được dùng để:

Mở 1 trang web trong trình duyệt, bắt đầu với “http://”

Chỉ tới các file tài nguyên có sẵn trong máy (VD: 1 file video, danh sáchcontacts, ), bắt đầu với "content://"

Ngày đăng: 05/04/2017, 11:07

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w