1. Trang chủ
  2. » Công Nghệ Thông Tin

Phát triển ứng dụng định vị tín hiệu GPS và lưu trữ dựa trên công nghệ google app engine

66 509 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 66
Dung lượng 2,23 MB

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

Nội dung

Ngày nay với tốc độ công nghệ ngày một tiên tiến hơn, hiện đại hơn kéotheosự bùng nổ các thiết bị di động thông minh có hỗ trợ GPS và các máy tìnhhiệu năng cao kết nối internet mang lại

Trang 1

LỜI CẢM ƠN Trong suốt quá trình thực hiện đồ án tốt nghiệp: “Phát triển ứng dụng định vị tín hiệu GPS và lưu trữ dựa trên công nghệ Google App Engine” ngoài sự cố

gắng hết mình của bản thân, trong quá trình làm đồ án em đã nhận được sự giúp

đỡ tận tình từ phía nhà trường, thầy cô gia đình và bạn bè

Em xin gửi lời cảm ơn sâu sắc đến ThS.Nguyễn Thị Tính mặc dù bận nhiều

công việc nhưng đã dành thời gian hướng dẫn và giúp đỡ em tận tình trong quátrình làm đồ án tốt nghiệp

Em xin chân thành cảm ơn các thầy – cô trường Đại học Công nghệ thông tin vàTruyền thông đã truyền đạt những kiến thức quý báu cho em trong suốt quá trìnhhọc tập

Em cũng xin cảm ơn tới gia đình và bạn bè đã luôn quan tâm, động viên, giúp

đỡ và tạo điều kiện cho em để em có điều kiện tốt nhất để hoàn thành đồ ánnày

Trong quá trình thực hiện đồ án, mặc dù em đã có nhiều cố gắng nhưng dohạn chế về thời gian cũng như kinh nghiệm nên đồ án này còn mắc phải nhữngthiếu sót, rất mong được sự góp ý kiến của các thầy cô và các bạn để ứng dụng mà

đồ án đề cập được hoàn thiện hơn

Em xin chân thành cảm ơn!

Thái nguyên, ngày 10 tháng 06 năm 2012

Sinh viên thực hiện

Phạm Thị Thùy Linh

Trang 2

LỜI CAM ĐOAN

Để hoàn thành đồ án tốt nghiệp đúng thời gian quy định và đáp ứng đượcyêu cầu của đề tài, bản thân em đã cố gắng tìm hiểu và nghiên cứu, học tập vàlàm việc trong thời gian dài Em đã tham khảo một số tài liệu được nêu trongphần “Tài liệu tham khảo cùng các diễn đàn, mạng uy tín trên Internet” Nộidung đồ án hoàn toàn không sao chép từ các đồ án khác, không vi phạm bảnquyền tác giả Toàn bộ đồ án là do bản thân em nghiên cứu và xây dựng nên

Em xin cam đoan những lời trên là đúng, nếu có thông tin sai lệch em xinhoàn toàn chịu trách nhiệm trước Hội đồng

Thái Nguyên, ngày 10 tháng 06 năm 2012

Sinh viên thực hiện

Phạm Thị Thùy Linh

Trang 3

MỤC LỤC

LỜI CẢM ƠN 1

LỜI CAM ĐOAN 2

DANH MỤC CÁC KÝ HIỆU, TỪ VIẾT TẮT 5

LỜI MỞ ĐẦU 6

CHƯƠNG 1: TÌM HIỂU VỀ ANDROID VÀ CÔNG NGHỆ LẬP TRÌNH ANDROID 8

1.1 Giới thiệu về hệ điều hành Android 8

1.2 Kiến trúc Android 8

1.2.1 Tầng Application 9

1.2.2 Tầng Application framework 9

1.2.3 Tầng Libraries và Runtime Android 10

1.3 AVD và Emulator 11

1.3.1 AVD (Android Virtual Device) 12

1.3.2 Android emulator và những hạn chế 12

1.4 Cấu trúc một ứng dụng Android 13

1.4.1 Activity 13

1.4.2 HTTP 15

1.4.3 Intent 16

1.4.4 Service 17

1.4.5 View 20

1.4.6 Widget 20

1.5 Lưu trữ dữ liệu 23

1.6 Android Location API và Google Maps 27

1.6.1 Android Location API 27

1.6.2 Google Maps 29

1.7 Android Market 30

CHƯƠNG 2: TÌM HIỂU CÔNG NGHỆ GAE CỦA GOOGLE 32

2.1 Công nghệ điện toán đám mây 32

2.1.1 Khái quát 32

2.1.2 Ưu và nhược điểm của điện toán đám mây 33

2.1.3 Cấu trúc và cách thức hoạt động của điện toán đám mây 35

2.1.4 Mô hình điện toán đám mây 36

2.2 Google App Engine 38

Trang 4

2.2.1 Giới thiệu 38

2.2.2 Các thành phần chính của GAE 39

2.2.3 Lưu trữ dữ liệu 42

CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG ANDROID GHI LẠI DỮ LIỆU CHUYỂN ĐỘNG VÀ LƯU TRỮ TRÊN GAE 47

3.1 Xây dựng ứng dụng Android ghi lại dữ liệu chuyển động 47

3.1.1 Môi trường lập trình Android 47

3.1.2 Yêu cầu phần cứng và cài đặt Eclipse 47

3.1.3 Phân tích thiết kế phần mềm 48

3.1.4 Demo chương trình 56

3.2 Mô hình lưu trữ dữ liệu trên GAE 59

3.2.1 Môi trường chạy GAE 59

3.2.2 Yêu cầu phần cứng và cài đặt Eclipse 60

3.2.3 Phân tích cơ sở dữ liệu 60

3.2.4 Lược đồ cơ sở dữ liệu: 60

3.2.5 Demo chương trình lưu trữ trên GAE 61

KẾT LUẬN 63

TÀI LIỆU THAM KHẢO 64

PHỤ LỤC 65

Trang 5

DANH MỤC CÁC KÝ HIỆU, TỪ VIẾT TẮT

GPS Global Positioning System

LBS Location-based services

API Application Program Interface

SDK Software Development Kit

DVK Dalvik Virtual Machine

NMEA National Marine Electronics Association

OHA Open Handset Alliance

ADT Android Development Tool

AVD Android Virtual Device

LỜI MỞ ĐẦU

Tính cấp thiết của đồ án

Trang 6

Ngày nay với tốc độ công nghệ ngày một tiên tiến hơn, hiện đại hơn kéotheosự bùng nổ các thiết bị di động thông minh có hỗ trợ GPS và các máy tìnhhiệu năng cao kết nối internet mang lại nhiều lợi ích cho người dùng trên khắpthế giới.

Tuy nhiên, các dịch vụ như là người dùng muốn biết vị trí của mình đang

ở đâu,người lái xe muốn trợ giúp tìm cây xăng gần nhất, người rút tiền muốn tìmcây ATM gần nhất, hoặc cao hơn là dịch vụ hỗ trợ hãng bay sếp chỗ ngồi chonhững khách hàng ngồi cạnh nhau theo một tiêu chí nào đó,…Các dịch vụ nàymang tính địa lý và tính thời gian thực, nó đang được sự quan tâm lớn trên thếgiới và còn khá mới ở Việt Nam Hiện nay, các dịch vụ công nghệ của Googlenhư hệ điều hành Andoid chạy trên thiết bị di động, dịch vụ điện toán đám mâyGAE phát triển nhanh chóng với dung lượng lưu trữ lớn và khả năng xử lý tínhtoán với tốc độ cao đã được các tập đoàn về sản xuất các thiết bị di động và máytính hiệu năng cao kết hợp khai thác ứng dụng để đưa đến tay khách hàng các sảnphẩm chất lượng cả về công nghệ và dịch vụ Từ những sự phát triển nhanhchóng và phổ cập của thiết bị di động, đặc biệt là các công nghệ liên quan từ

Google nên em đã chọn đề tài:Phát triển ứng dụng định vị tín hiệu GPS và lưu trữ dựa trên công nghệ Google App Engine làm đồ án tốt nghiệp của mình.

Mục tiêu của đồ án

- Tiếp cận được những xu thế và trình độ nghiên cứu tiên tiến nhất trên thếgiới trong lĩnh vực lưu trữ CSDL đối tượng chuyển động dựa trên côngnghệ Google

- Đồ án sẽ phát triển phần mềm tích hợp trên các thiết bị di động chạy hệđiều hành Android để ghi lại tín hiệu GPS và lịch sử đường đi gắn liền vớimỗi thiết bị Tiếp đó, phần mềm này sẽ định kỳ đẩy những dữ liệu lịch sử

di chuyển này lên một CSDL trung tâm trên nền công nghệ điện toán đámmây GAE của Google

Bố cục của đồ án

Trang 7

Chương 1: Tìm hiểu về Android và công nghệ lập trình Android

Chương 2: Tìm hiểu công nghệ GAE của Google

Chương 3: Xây dựng ứng dụng Android ghi lại dữ liệu chuyển động và lưu trữ

trên GAE

CHƯƠNG 1: TÌM HIỂU VỀ ANDROID VÀ CÔNG NGHỆ LẬP

TRÌNH ANDROID 1.1 Giới thiệu về hệ điều hành Android

Android là hệ điều hành dành cho các thiết bị di động như smartphones haytablet, được phát triển bởi Open Handset Alliance (OHA) OHA là một liên minh

Trang 8

doanh nghiệp gồm 83 thành viên tập trung phát triển các tiêu chuẩn cho thiết bị

di động.Các thành viên bao gồm: Google, HTC, Sony, Dell, Intel, Motorola,Qualcomm, Texas Intruments, Samsung, LG, T-Mobile, Nvidia và Wind RiverSystems

Android được xây dựng dựa trên Linux kernel với middleware, libraries, cácAPI được viết bằng C và phần mềm chạy trên một application framework baogồm những thư viện tương thích với Java dựa trên Apache Harmony Android sửdụng DVM (Dalvik Virtual Machine) với phương pháp biên dịch just-in-time đểchạy code Java đã được biên dịch Android có một cộng đồng những developerviết ứng dụng, chủ yếu viết bằng Java Hiện tại có hơn 250.000 ứng dụngAndroid Android Market là một kho ứng dựng online của Google, người dùng

có thể download ứng dụng trên đó

1.2 Kiến trúc Android

Kiến trúc Android gồm 4 phần chính, mô hình dưới đây sẽ cho ta cái nhìntổng quan về kiến trúc Android Nhân của Android được phát triển dựa vàoKernel Linux 2.6 Mỗi tầng trong kiến trúc Android hoạt động dựa vào tầng bêndưới nó

Trang 9

Hình 1.1: Kiến trúc Android

1.2.1 Tầng Application

Đây là lớp trên cùng của kiến trúc Android Là các ứng dụng mà lập trìnhviên phát triển như Browser, Media,…Android được tích hợp sẵn một số ứngdụng cần thiết cơ bản như: contacts, browser, camera, Phone,…Tất cả các ứngdụng đều sẽ được viết bằng ngôn ngữ Java

1.2.2 Tầng Application framework

Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp chongười phát triển khả năng xây dựng ứng dụng rất phong phú Người phát triển cótoàn quyền sử dụng các thiết bị phần cứng hay ứng dụng chạy ở nền… để tạo raứng dụng theo ý mình Kiến trúc ứng dụng được thiết kế để đơn giản hóa việc sử

Trang 10

năng sử dụng các thành phần này Điều này giống với kỹ thuật cho phép ngườidùng đặt lại các thành phần.Google xây dựng cho các developer để phát triển cácứng dụng của họ trên Android chỉ bằng cách gọi các API.

Dưới đây là các ứng dụng của hệ thống và dịch vụ:

View UI - để xây dựng layout của ứng dụng bao gồm: list view, text

field, button, dialog, form grid, textbox, và thậm chí nhúng cả trìnhduyệt web

Content Providers cho phép các ứng dụng truy xuất dữ liệu từ ứng

dụng khác, hay chia sẻ dữ liệu

Resource Managercung cấp truy cập tới tài nguyên không phải mã

nguồn như là các tập tin xâu, đồ họa, hay layout

Notification Manager: cho phép tất cả các ứng dụng hiển thị thông

báo của mình trên hệ điều hành

Activity Maanager được dùng để quản lý vòng đời của các ứng

dụng và điều hướng các activity

1.2.3 Tầng Libraries và Runtime Android

1.2.3.1 Libraries

Là các thư viện được viết bằng ngôn ngữ C/C++ sẽ được các developerphát triển ứng dụng android thông qua tầng Android Framework Có thể kể rađây một số thư viện quen thuộc với các lập trình viên như:

Hệ thống thư viện C: là dẫn xuất của hệ thống thư viện C chuẩn

cho thiết bị nhúng trên nền Linux

Media Libraries: mở rộng từ PacketVideo’s OpenCORE Hỗ trợ

nhiều định dạng âm thanh ,video và hình ảnh phổ biến: MPEG4,H.264, MP3, AAC, AMR, JPG, and PNG

Surface Manager: quản lý việc hiển thị và kết hợp đồ họa 2D và

3D

LibWebCore: dùng webkit engine cho việc render trình duyệt mặc

định của HDH Android browser và cho dạng web nhúng (nhưHTML nhúng)

Trang 11

OpenGL|ES: thư viện đồ họa 2D và 3D

SQLite : quản lý database của ứng dụng

1.2.3.2 Runtime Android

 Gồm một tập hợp các thư viện Java Core

 Máy ảo Dalvik thực thi các file định dạng dex (Dalvik Excutable)

 Mỗi ứng dụng Android chạy trên tiến trình riêng của máy ảo Dalvik.Dalvik được viết để chạy nhiều máy ảo cùng một lúc một cách hiệuquả trên cùng một thiết bị

1.2.4 Kernel Linux :

Android dựa trên Kernel Linux version 2.6 bởi nó cung cấp các trình điềukhiển các thiết bị phần cứng(driver), quản lý tiến trình, quản lý tài nguyên, bảomật, như sau:

Trang 12

1.3.1 AVD (Android Virtual Device)

Để kiểm tra ứng dụng dễ dàng, emulator có một chỗ để thiết lập cấu hình gọi

là AVD Những AVD giúp bạn thay đổi cấu hình phần cứng để có thể test trên nhiều thiết bị khác nhau

Emulator cũng đi kèm nhiều tiện ích để debug như console để log output của ứng dụng ra ngoài, mô phỏng việc gửi SMS hoặc gọi điện thoại

Android emulator là ứng dụng dựa trên QEMU, cung cấp một thiết bị di động

ảo ARM nơi mà bạn có thể chạy những ứng dụng Android Bạn có thể chọn phiên bản của hệ thống Android bằng cách thiết lập AVD, cũng có thể customizeskin và key mapping Khi chạy emulator ở thời điểm thực thi, ta có thể dùng những câu lệnh khác nhau để điều khiển hành vi của emulator

Để sử dụng emulator, bạn phải tạo một hoặc nhiều thiết lập AVD Trongmỗi thiết lập, chỉ định một Android platform để chạy emulator và cài đặt nhữngtùy chọn phần cứng và emulator skin mà bạn muốn dùng Khi chạy emulator, bạn

sẽ chọn AVD muốn load

Mỗi AVD có bộ nhớ riêng của nó Ví dụ như user data, SD card Khichạy emulator với thiết lập AVD, nó tự động load user data và SD card từ thưmục của AVD đó Mặc định, emulator lưu user data, SD card và cache trong mỗithư mục AVD

1.3.2 Android emulator và những hạn chế

Như đã đề cập ở trên, Android emulator chạy ARM opcode Nó sử dụngQEMU để mô phỏng thiết bị thật Cách làm này giúp tối ưu sự đúng đắn và chínhxác giữa emulator và thiết bị thật Cách chạy của emulator là chuyển đổi từ ARMopcode thành Intel opcode Cách duy nhất để tăng tốc cho emulator là tăng tốcCPU chạy emulator Vì lý do đó, một máy tính nhanh hơn bị chi phối bởi tốc độcủa single core hơn là số core mà nó có

Để kiểm tra những ứng dụng đồ họa cao như games và những hiệu ứnghình ảnh, cách tốt nhất là sử dụng thiết bị thật Còn emulator sẽ giúp ích cho việckiểm tra trên nhiều thiết lập khác nhau bằng cách dùng các AVD

Trang 13

1.4 Cấu trúc một ứng dụng Android

Để có thể xây dựng các ứng dụng trên hệ điều hành Android thì trước tiên phải tìm hiểu các giao diện lập trình ứng dụng API của hệ điều hành này Các API cơ bản của Android là:

Trang 14

Hình 1.2: Vòng đời của một Activity

Dựa vào lược đồ trên, thấy được có 3 vòng lặp quan trọng sau:

Vòng đời toàn diện (Entire Lifetime): Diễn ra từ lần gọi onCreate(Bundle)

đầu tiên và kéo dài tới lần gọi onDestroy() cuối cùng

Vòng đời thấy được (Visible Lifetime): Diễn ra từ khi gọi onStart() và kéo

dài tới khi gọionStop() Ở vòng đời này, activity được hiển thị trên màn hinhnhưng có thế không tương tác với người dùng ở trên nền Các phương thứconStart(0 và onStop() có thể được gọi nhiều lần

Vòng đời trên nền (Foreground Lifetime): Diễn ra từ khi gọi onResume(0

và kéo dài tới khi gọi onPause() Ở vòng đời này, activity nằm trên mọi activitykhác và tương tác được với người dùng 1 activity có thể liên tục thay đổi giữa 2trạng thái paused và resumed, chẳng hạn khi thiết bị sleep hay 1 intent mới đượcđưa tới

- onStart(): được gọi khi các Activity muốn hiển thị cho người dùng,

- onResume(): được gọi khi mà Activity bắt đầu tương tác với người dùng

- onStop(): được gọi khi Activity không còn hiển thị cho người sử dụng khi

Activity khác đã được khởi động và chiếm chỗ của Activity này

- onDestroy(): hàm cuối cùng bạn gọi khi muốn kết thúc Activity, gọi hàm

này khi Activity của bạn đã hoàn thành hoặc hệ thống tạm thời hủy Activity củabạn có mục đích

Các activity được quản lí dưới dạng các activity stack - First-In-Last-Out:Khi một activity mới được khởi tạo, nó sẽ được đưa lên trên cùng stack, cácactivity khác muốn chạy trên nền (foreground) trở lại thì cần phải chờ tới khiActivity mới này kết thúc

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

Trang 15

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ườngxuyê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ớ

1.4.2 HTTP

Là các lớp, hàm hỗ trợ việc kết nối đến internet và tải các nội dung về máy

xử lý để lấy thông tin.Trong khóa luận này có sử dụng một số lớp để phục vụviệc gửi yêu cầu và nhận dữ liệu trả về từ Servlet

HttpEntity: được dẫn xuất từ lớp org.apache.http.HttpEntity, là một đối

tượng được gửi đi kèm cùng với các thông điệp HTTP, nó có thể được tìm thấytrong các thông điệp gửi yêu cầu (request) hoặc các thông điệp trả về (response)

HttpResponse: được dẫn xuất từ lớp org.apache.http.HttpResponse, là đối

tượng trả về của HTTP.

HttpClient: được dẫn xuất từ lớp org.apache.http.client.HttpClient, là một

giao diện cho một người dùng HTTP HttpClient đóng gói tất cả các đối tượng

cần thiết để thực hiện các yêu cầu HTTP

HttpPost: được dẫn xuất từ lớp org.apache.http.client.methods.HttpPost,

đây là phương thức chính để gửi các yêu cầu đến Server và nhận lại các luồng dữliệu về từ Servlet

1.4.3 Intent

Trang 16

Là dẫn xuất từ lớp: android.content.Intent;

Nó như là một nền tảng để truyền tải các thông báo từ nơi muốn gửi đến nơinhận, là mối liên lạc giữa các Activity cần truyền thông lẫn nhau Các Intentđược tạo ra có hai phần mang thông tin chính là:

- Hành động (action): các hành động nói chung sẽ được thực hiện.

- Dữ liệu (data): các dữ liệu để thực hiện hành động.

Ngoài ra Intent còn một số thuộc tính phụ quan trọng như:

- Thể loại (category): cho phép thêm thông tin vào các hành động để thực

thi

- Loại (type): chỉ định một kiểu rõ ràng của dữ liệu Intent.

- Thành phần: chỉ định rõ ràng tên của một lớp thành phần để sử dụng

Intent

- Bổ sung (extras): đây là một Bundle của các thông tin bổ sung Nó được

sử dụng để cung cấp các thông tin mở rộng cho các thành phần

Các giải pháp sử dụng Intent:

- Intent rõ ràng (Explicit Intent): đã chỉ định các thành phần (bằng các

phương thức như setComponent() hoặc setClass()), nó cung cấp chính xác đếncác lớp cần dữ liệu Intent mang đến để xử lý

- Intent ẩn (Implicit Intent): không chỉ định rõ thành phần nào sẽ chạy dữ

liệu mang theo của Intent, tuy nhiên nó bao gồm đầy đủ thông tin cho hệ thống

để xác định thành phần đang sẵn sang nào tốt nhất sẽ chạy Intent đó

Ví dụ: trong đồ án này có sử dụng một Intent để gửi thông tin giữa haiActivity Activity thứ nhất sẽ kết thúc, gọi Activity thứ hai khởi động, đồng thờitruyền dữ liệu bổ sung theo để Activity thứ hai xử lý

1.4.4 Service

Một service là một thành phần của ứng dụng, thể hiện mong muốn ứng dụngthực hiện các hành động trong khi không tương tác với người dùng hoặc cungcấp chức năng cho các ứng dụng khác sử dụng Nói một cách đơn giản, service làcác tác vụ (task) chạy ngầm dưới hệ thống nhằm thực hiện một nhiệm vụ nào đó Mỗi class Service phải chứa thẻ <service> được khai báo trong file

Trang 17

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ủa tiến trình chính Có nghĩa là nếu service của bạn dự định chạy cáchà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ả trongService

Service không phải là một tiến trình độc lập Đối tượng Service không chạytrên tiến trình (process) của riêng nó (trừ khi có một yêu cầu đặt biệt), Servicechạy trên tiế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ọi hàm onCreate() và bất kỳ lệnh callback thích hợp nào trên luồng chình Nóphụ thuộc và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ện tiến trình

Vòng đời của 1 Service

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

Trang 18

onStartCommand(Intent, int ,int) với các biến được cung cấp bởi client Servicemới được tạo ra này sẽ chạy cho tới khi có lệnh gọi phương thứcContext.stopService() hoặc stopSelf() Dù cho một service có được start baonhiêu lần đi nữa thì nó sẽ bị tắt ngay khi phương thức Context.stopService() hoặcphươ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.3: Lược đồ vòng đời của 1 Service

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

Trang 19

Có hai lớp broadcast quan trọng cần xét đến:

Broadcasts bình thường (Normal broadcasts): Được gửi bởi context.sendBroadcast tới các receivers hoàn toàn không theo 1 trật tự nào, dẫntới đôi khi tồn tại cùng 1 lúc nhiều receivers khác nhau Tuy nhanh nhưng khôngthể trao đổi kết quả nhận về giữa các receivers với nhau

Broadcasts có thứ tự (Ordered broadcasts): Được gửi bởiContext.sendOrderedBroadcast() tới từng receiver một Như vậy, kết quả nhận vềcủa 1 receiver có thể trở thành input của 1 receiver khác, hay có thể ngay lập tứcdừng việc broadcast tới các receiver khác Trật tự chạy các receivers được quyếtđịnh bởi thuộc tính android: priority trong intent-filter tương ứng

1.4.5 View

Đây là một gói chuyên cung cấp các đối tượng được sử dụng để hiện thị,tổchức và tương tác giữa thiết bị và người sử dụng, hay nói cách khác, nó cung cấpgiao diện tương tác giữa thiết bị và người sử dụng

Là dẫn xuất từ lớp: android.View.* ;

Thực đơn(Menu): giao diện để kết nối các mục trong thực đơn Theo mặc định,

mọi Activity hỗ trợ một thực đơn lựa chọn hành động hoặc các lựa chọn Bạn cóthể thêm các mục vào thực đơn này và xử lý cách hành động nháy chuột trên mục

mà bạn vừa bổ sung Cách đơn giản nhất để thêm các mục là thêm một đoạn mãXML vào thực đơn, còn cách đơn giản nhất để xử lý sự kiện khi chọn mục làdùng phương thức onOptionsItemSelected(MenuItem) và onContextItemSelected(MenuItem) Nó cung cấp một số phương thức chính sau

cho người lập trình

1.4.6 Widget

Widget là một gói bao gồm các đơn vị giao diện người sử dụng (UI) chomàn hình ứng dụng và có thể thiết kế hoàn toàn theo ý mình Để tạo ra mộtWidget của mình, phải thừa kế từ lớp View để hiển thị và tương tác, ngoài ra cònphải sử dụng cấu trúc XML để thiết kế Dưới đây là danh sách các tệp sẽ cần tạo

ra để thực thi Widget:

Trang 20

- Tệp java thực thi; đây là nơi để chạy, điều khiển các trạng thái, kịch bản

của Widget Nếu đã thiết kế đối tượng từ tệp XML, thì sau đó vẫn phải dùng hàmkhởi tạo để lấy ra các giá trị, thuộc tính mà được thiết kế trong tệp XML

- Tệp định nghĩa XML: mọi tệp XML trong res/values nhanh chóng định

nghĩa các phần tử XML cho Widget của bạn và các thuộc tính mà nó hỗ trợ Cácứng dụng khác sẽ sử dụng các thuộc tính này để thực thi mục đích của nó

- Cấu trúc XML: một tệp XML trong /res/layout/ sẽ xác định cách bố trí

các Widget

Ví dụ:

- Cấu trúc một tệp dịnh nghĩa XML:

Hình 1.4: Cấu trúc tệp XML định nghĩa các giá trị

- Cấu trúc XML để hiện thị một nút bấm(Button):

Trang 21

Hình 1.5: Cấu trúc tệp XML

Tiếp theo chúng ta sẽ đi sâu hơn nghiên cứu về một số Widget phổ biến vàđược sử dụng nhiều trong đề tài này:

nó không cho phép người sử dụng có thể sửa văn bản đó

- Một tệp XML cho phép hiển thị cấu trúc một TextView:

Hình 1.6: XML hiển thị một TextView

- Một tệp XML cho phép hiển thị cấu trúc Button

Hình 1.7: Tệp XML cấu trúc Button

- Một tệp java thực thi một hành động nào đó khi có sự kiện nháy chuột vào

Button:

Trang 22

Hình 1.8: Tệp java kết nối và thực thi hành động nháy chuột

- Do Button được kế thừa từ đối tượng TextView, nên nó mang hầu hết cácphương thức cơ bản của TextView

vào nó để thực thi mộ số hành động nào đó, tuy nhiên nó có một đặc tínhđặc biêt, đó là cho phép sử dụng một tệp hình ảnh để hiển thị cho Button

đó Khi khai báo ImageButton luôn phải khai báo đường dẫn tới ảnh hiển

thị được để trong thư mục /drawable.

- Một tệp XML để thiết lập cấu trúc ImageButton:

Trang 23

kì thông tin nào trong preferences bằng từ khóa có kiểu String và kiểu dữ liệunguyên thủy (boolean, String…)

Preferences có thể dùng cho activity độc lập hay được chia sẻ giữa cácactivity của một ứng dụng Và tương lai, Preference có thể được chia sẻ giữa cácứng dụng với nhau

Bên cạnh việc sử dụng Preferences để lưu trữ dữ liệu thì cũng còn mộtcách đơn giản khác để thực hiện công việc lưu trữ dữ liệu là sử dụng tập tin.Android cung cấp 2 mô hình để truy cập tập tin:

Một cho các tập tin được đóng gói sẵn cho ứng dụng

Một dành cho tập tin được tạo trên thiết bị thực thi ứng dụng đó

Đối với dữ liệu tĩnh, chẳng hạn danh sách các từ dùng để kiểm tra chính

tả Cách đơn giản nhất để thực hiện điều đó là lưu vào một tập tin, và tập tin nàyphải được đặt trong thư mục res/raw của project Nhờ vậy, tập tin sẽ được đặttrong tập tin APK của ứng dụng như một nguồn tài nguên cơ bản

Ngoài 2 phương pháp trên, Android còn hỗ trợ hệ quản trị cơ sở dữ liệuquan hệ SQLite để quản lý dữ liệu lớn và có quan hệ phức tạp Nhờ vậy, ngườilập trình có thể thực hiện quản lý dữ liệu một cách dễ dàng, linh hoạt hơn

Khi lập trình trên di động hay các thiết bị có dung lượng bộ nhớ hạn chế,người ta thường dùng SQLite SQLite là một hệ quản trị cơ sở dữ liệu nhúngđược hiện thực từ chuẩn SQL-92 Giống với cái tên của nó, SQLite chiếm dunglượng nhỏ (khoảng 275KB) nên việc truy xuất dữ liệu được nhanh chóng, khôngchiếm dụng quá nhiều tài nguyên hệ thống Do SQLIte là phần mềm mã nguồn

mở nên nó không bị giới hạn tác quyền Vì lý do đó mà SQLite được nhiều hãng

sử dụng (Adobe, Apple, Google, Sun, Symbian) và các dự án mã nguồn mở(Mozila, PHP, Python)

Đặc biệt, đối với Android, SQLite rất thích hợp để tạo cơ sở dữ liệu chocác ứng dụng trên nền Android Từ khi SQLite có giao diện SQL thì nó càngđược sử dụng dễ dàng và thông dụng hơn

Trang 24

Sqlite tuy nhẹ hơn so với các hệ cơ sở dữ liệu khác nhưng cũng khôngkhác biệt nhiều SQLite cũng sử dụng ngôn ngữ truy vấn SQL (SELECT,INSERT, DELETE…), thích hợp cho các ứng dụng trên điện thoại, đặc biệt làứng dụng trên hệ điều hành Android vì Android Runtime có thể chứa cả SQLite

mà không cần phải chia nhỏ ra

SQLite có một hệ thống câu lệnh SQL đầy đủ với các triggers,transactions Các câu truy vấn cũng như các hệ cơ sở dữ liệu khác SQLite nhưbản thu nhỏ của so với các hệ CSDL khác, vì vậy nó không thể có đầy đủ các chứnăng trên chiếc điện thoại di động của bạn

SQLite là một lựa chọn thích hợp dành cho ứng dụng trên hệ điều hànhAndroid Ngoài dung lượng lưu trữ nhỏ gọn, SQLite còn cho phép sử dụngUnicode, kiểu dữ liệu không được cài đặt trong một số phiên bản Android

SQLite được hiện thực từ tiêu chuẩn SQL-92 của một ngôn ngữ SQLnhưng vẫn còn chứa một số khiếm khuyết

Tuy SQLite hỗ trợ triggers nhưng bạn không thể viết trigger cho view.Hoặc SQLite không hỗ trợ lệnh ALTER TABLE, do đó, bạn không thể thực hiệnchỉnh sửa hoặc xóa cột trong bảng

SQLite không hỗ trợ ràng buộc khóa ngoại , các transactions lồng nhau,phép kết right outer join, full outer join

SQLite sử dụng kiểu dữ liệu khác biệt so với hệ quản trị cơ sở dữ liệutương ứng Bạn có thể insert dữ liệu kiểu string vào cột kiểu integer mà khônggặp phải bất kỳ lỗi nào

Vài tiến trình hoặc luồng có thể truy cập tới cùng một cơ sở dữ liệu Việcđọc dữ liệu có thể chạy song song, còn việc ghi dữ liệu thì không được phép chạyđồng thời

Ngoài các khiếm khuyết trên thì Sqlite cung cấp cho người dùng gần nhưđầy đủ các chưng năng mà một hệ cơ sở dữ liệu cần có như tạo database; tạobảng; thêm, xóa, sửa dữ liệu

Trang 25

SQLite Manager là công cụ hiệu quả hỗ trợ cho việc xây dựng cơ sở dữ liệu cho ứng dụng Android đó là SQLite Manager, một add-on miễn phí của trìnhduyệt

Sử dụng SQLite Manager để quản lí cơ sở dữ liệu Android:

 Tạo database mới :

Vào menu Database/ New Database

 Tạo bảng mới:

Tại Database vừa tạo, nhấp chuột phải chọn Create table Thiết lậpcác giá trị thích hợp

 Xử lý dữ liệu:

Chọn bảng cần nhập và chọn tab Browse & Search

Nút Add: Thêm dữ liệu

Nút Duplicate: Nhân đôi dữ liệu

Nút Edit: Chỉnh sửa dữ liệu

Nút Delete: xóa dữ liệu

Thực thi câu truy vấn:

Chọn tab Execute SQL, Nhập câu lệnh SQL vào khung Enter SQL vàchọn Run SQL

Kết quả sẽ được trình bày ở khung phía dưới Nếu câu SQL có lỗi sẽ đượchiển thị tại ô Last Error

Tùy chỉnh Database: Chọn tab DB Settings và thiết lập các giá trị nhưmong muốn

Import Database vào ứng dụng Android

Sau khi tạo CSDL bằng SQLite Manager,chọn menu File/Export Database.Lưu file sql vừa tạo vào máy

Để import database vào ứng dụng, người lập trình cần :

Build and Run chương trình Android

Trang 26

Khởi động máy ảo xong, chọn nút DDMS ở góc trên bên phải chương trìnhEclipse để xem cấu trúc file.

Vào thư mục chứa database có dường dẫn như sau :

/data/data/your.app.package/databases/your-db-name

Sau đó chọn nút import và chọn tập tin database Lưu ý : Phải đổi tên file từ

*.sql thành * trước khi import vào chương trình

1.6 Android Location API và Google Maps

Phần trên đã giới thiệu một số thành phần cơ bản trong lập trình Android,trong mục này sẽ trình bày các lớp, các giao diện được sử dụng cho việc thu tínhiệu từ hệ thống GPS

Ứng dụng cơ bản định vị trên bản đồ là những ứng dụng thu hút các thiết bịmobile cho người sử dụng Bạn có thể xây dựng những khả năng này bên trong

ứng dụng của bạn sử dụng các lớp trong gói android.location và thư viện mở

rộng GoogleMaps

1.6.1 Android Location API

Gói android.location chứa các lớp nó định nghĩa các định vị android cơ

GpsStatus.NmeaListener: Sử dụng để nhận tín hiệu từ GPS theo chuẩn NMEA

(National Marine Electronics Association)

LocaltionListener được sử dụng để nhận thông báo từ LocaltionManagerkhi định vị được thay đổi

Các lớp :

chỉ, cài đặt của một chuỗi mô tả địnhvị

chuẩn ứng dụng để chọn cung cấp định

Trang 27

hóa địa lý và mã ngược

thái hiện thời của một vệ tinh GPS

thái hiện thời của máy GPS

địa lý được gửi tại một thời gian cụthể (một điểm)

truy cập để sử dụng các dịch vụ của hệthống định vị

tượng cung cấp định vị

Dịch vụ dựa định vị ( Location-based services )

Hầu hết các thiết bị android cho phép xác định vị trí hiện thời.Nó có thểthông qua thiết bị GPS.Thông qua mạng wifi.Android cung cấp gói

“android.location” nó cũng cấp API để xác định vị trí hiện thời Lớp

LocationManager cung cấp việc truy cập tới dịch vụ định vị.Thiết bị android

phải cung cấp một vài dịch vụ mà chúng ta có thể chọn một trong số đó Để lựa

chọn linh hoạt sao cho định vị tốt nhất là sử dụng đối tượng “Criteria” trong nó

có thể định nghĩa làm thế nào để lựa chọn được Bạn có thể đăng kí một

“LocationListener” với ‘LocationManager’ và sẽ nhận định kì cập nhật về vị trí

địa lí Lớp ‘LocationProvider’ là lớp cha của các cung cấp định vị khác nó cho

biết thông tin về vị trí hiện thời

Hơn nữa, khi yêu cầu một ví dụ cụ thể từ hệ thống thì phương thức

getSystemService() được gọi Một ứng dụng sẽ có một LocationManager, ứng

dụng có thể thực hiện những việc sau

 Đăng ký/hủy đăng ký cập nhật định kỳcủavị trí hiện tại của người dùng từmột nhà cung cấp vị trí (quy định hoặc theo các tiêu chuẩn hoặc tên)

Trang 28

 Đăng ký/hủy đăng ký cho một Intent bị loại bỏ nếu thiết bị đi kèm trongmột khoảng cách nhất định(quy định bởi bán kính tính bằng mét).

Forward and reverse Geocoding

Lớp ‘Geocoder’ cho phép xác định toạ độ địa lí (kinh độ, vĩ độ) cho một vịtrí và có thể là từ các địa chỉ đưa ra các tọa độ địa lí Những tiến trình được biếtnhư là quá trình mã hóa địa lí thuận và ngược

1.6.2 Google Maps

Đây chính là thành phần chính hiển thị bản đồ cho người sử dụng

thấy.Google cung cấp trong gói “com.google.android.maps” là thư viện cho

phép sử dụng Google Map trong Android Google Maps không là một phần của chuẩn nền mã nguồn mở nền tàng android và nó yêu cầu một khóa thêm vào để

sử dụng chúng Khóa này có thể đặc tả trong hiển thị nó sẽ sử dung hiển thị trên bản đồ

Để sử dụng Google Maps trong ứng dụng của bạn cần để thêm vào thư viện

sử dụng câu lệnh trong file AndroidManifest.xml Project tạo ra nó tự động nếu bạn chọn một phiên bản Google API

<uses library android:required = "true"android:name =

"com.google.android.maps" </uses-library>

Để dễ dàng hơn khi tăng khả năng ứng dụng google map, các nhà cungcấp Google đã đưa ra một thư viện mở rộng nó bao gồm gói: Các lớp của các gói

com.google.android.maps được xây dựng tải về, dựng hình, và bộ nhớ đệm của

Maps, cũng như một loạt các tùy chọn hiển thị và điều khiển

Trang 29

Lớp “MapController” có thể sử dụng để tương tác với “MapView” bởi di chuyển nó Một “Geopoint” dùng miêu tả vị trí thông qua kinh độ và vĩ độ và lớp

“Overlay” có thể sử dụng để vẽ trên bản đồ, các vị trí đánh dấu.

<com.google.android.maps.MapViewandroid:id="@+id/map"

Nói chung, lớp MapView cung cấp một bao bọc xung quanh Google

MapsAPI cho phép ứng dụng của bạn thao tác dữ liệu Google Maps thông qua các phương thức, và nó cho phép bạn làm việc với dữ liệu bản đồ

Thực tế Maps không phải là một phần của thư viện Android tiêu chuẩn, do đó, nó

có thể không có mặt trên một số thiết bị Android-powered Tương tự như vậy,các thư viện Maps bên ngoài không được bao gồm trong thư viện Android tiêuchuẩn được cung cấp trong SDK Vì vậy, bạn có thể phát triển bằng cách sử dụng

các lớp của gói com.google.android.maps, thư viện Maps bên ngoài được tạo sẵn

cho bạn như là một phần của các API của Google add-on cho Android SDK

1.7 Android Market

Android Market là một kho phần mềm online được phát triển bởi Google dành cho các thiết bị Android Một ứng dụng được gọi là “Market” được cài sẵn trên hầu hết các thiết bị Android và cho phép người dùng truy cập và download ứng dụng được tải lên bởi những developer khác 12/2010, có khoảng 200.000 games, ứng dụng và widget trên Android Market.4/2011, Google thông báo có hơn 3 tỉ ứng dụng Android được cài và cuối 6/2011 có khoảng 6 tỉ lượt cài ứng

Trang 30

dụng từ Android Market Bản thân hệ điều hành này được cài trên 130 triệu thiết bị.

Google đã tham gia vào Android Market bằng cách đưa ra những ứng dụng của riêng họ, bao gồm Google Voice cho Google Voice service, Sky Map

để xem các ngôi sao, Finance cho finance service, Maps Editor cho MyMaps service, Places Directory cho Local Search, Google Goggles tìm kiếm hình ảnh, Gesture Search cho những chữ viết tay và số để tìm kiếm nội dung trên điện thoại, Google Translate, Google Shopper, Listen cho podcast và My Tracks một ứng dụng hiện nay được khá nhiều người sử dụng 8/2010, Google giới thiệu Voice Actions cho Android, cái cho phép người dùng tìm kiếm, viết tin nhắn và gọi điện bằng giọng nói

Người dùng cũng có thể cài ứng dụng từ kho lưu trữ của tổ chức thứ 3 nhưAmazon Appstore hay cài trực tiếp từ APK file

Trang 31

CHƯƠNG 2: TÌM HIỂU CÔNG NGHỆ GAE CỦA GOOGLE 2.1 Công nghệ điện toán đám mây

2.1.1 Khái quát

Ngày nay, đối với các công ty, doanh nghiệp có thể quản lý được nguồn

dữ liệu an toàn, ban đầu các doanh nghiệp phải đầu tư, tính toán rất nhiều loại chiphí như chi phí cho phần cứng, phần mềm, mạng, chi phí cho quản trị viên, chiphí bảo trì, sửa chữa, … Ngoài ra họ còn phải tính toán khả năng mở rộng, nângcấp thiết bị; phải kiểm soát việc bảo mật dữ liệu cũng như tính sẵn sàng cao của

kỳ đâu thông qua hệ thống Internet

Vì vậy, điện toán đám mây là môi trường tính toán dựa trên internet mà ở

đó tất cả phần mềm, dữ liệu, tài nguyên được cung cấp cho máy tính và các thiết

bị khác theo nhu cầu (tương tự như mạng điện)

Trang 32

Hình 2.1: Điện toán đám mây

Một số các nhà cung cấp dịch vụ điện toán đám mây:

 Google App Engine của Google:

 WindowsAzure của Microsoft

 Amazone Webservice của Amazone.com

 Sun Cloud của Sun

 Facebook

2.1.2 Ưu và nhược điểm của điện toán đám mây

2.1.2.1 Ưu điểm:

Tính linh động: Người dùng có thể thoải mái lựa chọn các dịch vụ phù

hợp với nhu cầu của mình, cũng như có thể bỏ bớt những thành phần màmình không muốn

Giảm bớt phí: Người dùng không chỉ giảm bớt chi phí bản quyền mà còn

giảm phần lớn chi phí cho việc mua và bảo dưỡng máy chủ

Tạo nên sự độc lập: Với điện toán đám mây, phần mềm, dữ liệu có thể

được truy cập và sử dụng từ bất kì đâu, trên bất kì thiết bị nào mà khôngcần phải quan tâm đến giới hạn phần cứng cũng như địa lý

Trang 33

Tăng cường độ tin cậy: Dữ liệu trong mô hình điện toán đám mây được

lưu trữ 1 cách phân tán tại nhiều cụm máy chủ tại nhiều vị trí khác nhau.Điều này giúp tăng độ tin cậy, độ an toàn của dữ liệu mỗi khi có sự cốhoặc thảm họa xảy ra

Bảo mật: Việc tập trung dữ liệu từ nhiều nguồn khác nhau sẽ giúp các

chuyên gia bảo mật tăng cường khả năng bảo vệ dữ liệu của người dùng,cũng như giảm thiểu rủi ro bị ăn cắp toàn bộ dữ liệu

Bảo trì dễ dàng: Mọi phần mềm đều nằm trên server, lúc này, người dùng

sẽ không cần lo lắng cập nhật hay sửa lỗi phần mềm nữa Và các lập trìnhviên cũng dễ dàng hơn trong việc cài đặt, nâng cấp ững dụng của mình

2.1.2.2 Nhược điểm:

Tính riêng tư: Các thông tin người dùng và dữ liệu được chứa trên điện

toán đám mây có đảm bảo được riêng tư, và liệu các thông tin đó có bị sửdụng vì một mục đích nào khác?

Tính sẵn dùng: Liệu các dịch vụ đám mây có bị “treo” bất ngờ, khiến cho

người dùng không thể truy cập các dịch vụ và dữ liệu của mình trongnhững khoảng thời gian nào đó khiến ảnh hưởng đến công việc?

Mất dữ liệu: Một vài dịch vụ lưu trữ dữ liệu trực tuyến trên đám mây bất

ngờ ngừng hoạt động hoặc không tiếp tục cung cấp dịch vụ, khiến chongười dùng phải sao lưu dữ liệu của họ từ “đám mây” về máy tính cánhân Điều này sẽ mất nhiều thời gian Thậm chí một vài trường hợp, vìmột lý do nào đó, dữ liệu người dùng bị mất và không thể phục hồi được

Tính di động của dữ liệu và quyền sở hữu: Một câu hỏi đặt ra, liệu người

dùng có thể chia sẻ dữ liệu từ dịch vụ đám mây này sang dịch vụ của đámmây khác? Hoặc trong trường hợp không muốn tiếp tục sử dụng dịch vụcung cáp từ đám mây, liệu người dùng có thể sao lưu toàn bộ dữ liệu của

họ từ đám mây? Và làm cách nào để người dùng có thể chắc chắn rằng cácdịch vụ đám mây sẽ không hủy toàn bộ dữ liệu của họ trong trường hợpdịch vụ ngừng hoạt động

Ngày đăng: 19/04/2017, 22:33

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