2.6.1 Các thành phần của một ứng dụng android
Các thành phần tạo nên ứng dụng Android được chia làm 6 loại bao gồm:
Activity: là nền của 1 ứng dụng. Khi khởi động một ứng dụng Android nào đó thì bao giờ cũng có 1 main Activity được gọi, hiển thị màn hình giao diện của ứng dụng cho phép người dùng tương tác.
Service: thành phần chạy ẩn trong Android. Service sử dụng để update dữ liệu, đưa ra các cảnh báo (Notification) và không bao giờ hiển thị cho người dùng thấy. Content Provider: kho dữ liệu chia sẻ. Content Provider được sử dụng để quản lý
và chia sẻ dữ liệu giữa các ứng dụng.
Intent: nền tảng để truyền tải các thông báo. Intent được sử dụng để gửi các thông báo đi nhằm khởi tạo một Activity hay Service để thực hiện công việc mong muốn. Broadcast Receiver: thành phần thu nhận các Intent bên ngoài gửi tới.
Notification: đưa ra các cảnh báo mà không làm cho các Activity phải ngừng hoạt động.
Activity, Service, Broadcast Receiver và Content Provider mới là những thành phần chính cấu thành nên ứng dụng Android, bắt buộc phải khai báo trong AndroidManifest. Actitvity là thành phần quan trọng nhất và đóng vai trò chính trong xây dựng ứng dụng Android. Hệ điều hành Android quản lý Activity theo dạng stack: khi một Activity mới được khởi tạo, nó 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. Activity bao gồm 4 state:
-active (running): Activity đang hiển thị trên màn hình (foreground).
- paused: Activity vẫn hiển thị (visible) nhưng không thể tương tác (lost focus).
- stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái stop
- killed: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo nguyên tắc ưu tiên.
Các Activity ở trạng thái stop hoặc paused cũng có thể bị giải phóng và khi nó được hiển thị lại thì các Activity này phải khởi động lại hoàn toàn và phục hồi lại trạng thái trước đó.
28
Hình 2.6.1 Biểu đồ miêu tả Activity State Vòng đời của Activity:
- Entire lifetime: Từ phương thức onCreate() cho tới onDestroy() .
- Visible liftetime: Từ phương thức onVisible() cho tới onInvisible().
- Foreground lifetime: Từ phương thức onBegin() cho tới onPause().
Khi xây dựng Actitvity cho ứng dụng cần phải viết lại phương thức onCreate( ) để thực hiện quá trình khởi tạo. Các phương thức khác có cần viết lại hay không tùy vào yêu cầu lập trình.
Android có cơ chế quản lý các process theo chế độ ưu tiên. Các process có priority thấp sẽ bị Android giải phóng mà không hề cảnh báo nhằm đảm bảo tài nguyên.
29
Foreground process: là process của ứng dụng hiện thời đang được người dùng tương tác.
Visible process: là process của ứng dụng mà activity đang hiển thị đối với người dùng (onPaused() của activity được gọi).
Service process: là Service đang running.
Background process: là process của ứng dụng mà các activity của nó ko hiển thị với người dùng (onStoped() của activity được gọi).
Empty process: process không có bất cứ 1 thành phần nào active. Theo chế độ ưu tiên thì khi cần tài nguyên, Android sẽ tự động kill process, trước tiên là các empty process.
2.6.2 Cấu trúc lưu trữ dự án Android.
Thành Phần Chức Năng
Thư mục mã nguồn (SRC):
Chứa toàn bộ các tập tin *.java có trong ứng dụng.Các tập tin này được tổ chức trong các Java Package.
Các Java Package chứa các tập tin *.java có chức năng liên quan với nhau để hệ thống có tính cấu trúc hơn.
Thư mục thư viện Android
Chứa các tập tin .jar, đây là bộ thư viện mà hệ điều hành Android hỗ trợ cho ứng dụng tuỳ theo Build Target của ứng dụng
Thư mục assets Thư mục này dùng để lưu trữ dữ liệu do lập trình viên tự định
nghĩa như tập tin HTTP, tập tin XML, tập tin văn bản, tập tin CSDL,.v.v...
Các tập tin này sẽ được ứng dụng truy xuất thông qua đối tượng Asset Manager của Android.
Việc truy xuất tài nguyên trong Assets thông qua việc đọc và lưu trữ các bit và byte
Thư mục RES Cũng giống như thư mục assets, đây là thư mục để lưu trữ các tài
nguyên của ứng dụng.
Thư mục này có thể lưu trữ bất cứ loại tài nguyên nào từ chuỗi cho tới hình ảnh và âm thanh.
Việc truy xuất tài nguyên trong RES thông qua IDs.Khi thêm tài vào thư mục RES,Android sẽ phát sinh một ID và lưu trữ ID này vào tập tin R.java và chỉ cần gọi ID này để truy xuất.
Thư mục BIN, LIBS, REFERENCED
LIBRARIES
Mặc định khi tạo ứng dụng thư mực BIN sẽ không hiển thị.Mục đích của thư viện này là để chứa các thư viện hỗ trợ phát triển ứng dụng.Các thư viện được thêm vào thư mục này không phải là thư viện của JDK hay Android SDK mà là một thư viện bên ngoài. Thư mục Referenced Libraries được tạo khii thêm thư viện vào thư mục Libs.
30
Thành Phần Chức Năng
Thư mục GEN
Thư mục này được tạo trong lần biên dịch đầu tiên của ứng dụng. Thư mục GEN chứa tập tin R.java dùng để lưu trữ các giá trị ID. Khi muốn truy xuất tài nguyên nào chỉ cần chỉ định giá trị ID tương ứng của tài nguyên đó
Tập tin Android Manifest.xml
- Đặ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, broadcast receiver hoặc content provider.
- Thông báo những permission mà ứng dụng cần có để truy nhập các protected API 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.
- Khai báo các thư viện mà ứng dụng sử dụng. - Khai báo quyền hạn của ứng dụng
Bảng 2.6.2.2 Cấu trúc lưu trữ dự án Android.
Cách tổ chức tài nguyên trong thư mục RES:
Thư mục con Loại tài nguyên lưu trữ
anim/ Các tập tin XML định nghĩa loạt ảnh (animation).
color/ Các tập tin XML định nghĩa danh sách màu.
drawable/ Các tập tin hình ảnh hoặc các tập tin XML có thể được biên dịch thành các tai nguyên hình ảnh.
Drawable-hdpi/ Các tập tin hình ảnh với độ phân giải cao.
Drawable-ldpi/ Các tập tin hình ảnh với độ phân giải thấp.
Drawable-mdpi/ Các tập tin hình ảnh với độ phân giải trung bình.
layout/ Các tập tin XML định nghĩa các giao diện trong dự án.
menu/ Các tập tin XML định nghĩa menu trong ứng dụng.
raw/ Các tập tin dữ liệu thô dùng trong ứng dụng.
values/ Các tập tin XML định nghĩa các giá trị đơn giản: Array.xml:chứa các tài nguyên mảng. Color.xml:chứa các định nghĩa màu sắc. Dimens.xml:định nghĩa các giá trị kích thước. String.xml định nghĩa các giá trị kiểu chuỗi. Style.xml:Định nghĩa tài nguyên về phong cách. Bảng 2.6.2.3 Cấu trúc lưu trữ trong thư mục RES.
31
2.7 CSDL SQLITE TRONG ANDROID 2.7.1 Giới thiệu về CSDL SQLite 2.7.1 Giới thiệu về CSDL SQLite
SQLite là một thư viện thực thi các chức năng của một database engine với đặc điểm giống như một phần mềm portable, không cần cài đặt, không cần cấu hình, không cần server, những điểm này rất khác so với việc sử dụng SQL Server hoặc Oracle, nhưng nó vẫn có transaction để đảm bảo tính toàn vẹn và an toàn trong quá trình thao tác dữ liệu. Có thể so sánh nó có một vài điểm giống với Access, nhưng nhìn chung vẫn có nhiều sự khác biệt.
Đặc điểm của SQLite là gọn, nhẹ, đơn giản. Chương trình gồm 1 file duy nhất vỏn vẹn chưa đến 500kB, không cần cài đặt, không cần cấu hình hay khởi động mà có thể sử dụng ngay. Dữ liệu database cũng được lưu ở một file duy nhất. Không có khái niệm user, password hay quyền hạn trong SQLite database. SQLite không thích hợp với những hệ thống lớn nhưng ở quy mô vừa và nhỏ thì SQLite phát huy uy lực và không hề yếu kém về mặt chức năng hay tốc độ. Với các đặc điểm trên SQLite được sử dụng nhiều trong việc phát triển, thử nghiệm .v.v... và là sự lựa chọn phù hợp cho những người bắt đầu học database.
2.7.2 Chi tiết về các đặc tính của SQLite
Không cần phải thiết lập bất kỳ một cấu hình nào để có thể sử dụng SQLite.
Các HQTCSDL như SQL Server, Oracle, Postgre... thường cần một server riêng để triển khai ứng dụng, cài đặt database engine, các máy khách sẽ kết nối đến server để xử lý dữ liệu một cách tập trung. Tuy nhiên SQLite không làm việc theo cách này mà ứng dụng sẽ truy xuất trực tiếp vào file database, các máy khách cũng có thể truy xuất một file database SQLite để trên một server thông qua cơ chế chia sẻ và bảo mật file của hệ điều hành,người dùng nào truy cập được vào thư mục và có quyền đọc - ghi thì sẽ có thể đọc ghi vào file database SQLite. Tuy nhiên sẽ có những hạn chếnhất định.
Database do SQLite tạo ra là một file dữ liệu duy nhất.
Có thể copy file database SQLite từ hệ thống này sang hệ thống khác, từ hệ thống 32 hay 64 bit, từ phiên bản SQLite này sang phiên bản khác mà không cần chuyển đổi , nâng cấp hệ điều hành, cấu trúc hệ thống hay phải làm lại file database.
Cực kỳ nhỏ gọn và dễ sử dụng.
Số lượng kiểu dữ liệu của SQlite rất ít, điều này là một đặc trưng của nó, bởi trong SQLite, kiểu dữ liệu là một thuộc tính của chính giá trị được lưu chứ không phải là thuộc tính của cột lưu giá trị đó. Tuy vậy, cũng có một vài ràng buộc, là với cột khóa chính kiểu integer thì phải lưu giá trị phải chính xác là kiểu int, ngoài ra SQLite cũng cố gắng chuyển đổi kiểu của giá trị sang kiểu của cột lưu nó khi có thể. Mục đích của việc thiết kế kiểu dữ liệu như vậy nhằm làm cho nó tin cậy và đơn giản hóa việc sử dụng, và cũng để dễ tương thích hơn khi sử dụng với các ngôn ngữ như Tcl hoặc Python.
Dữ liệu lưu bao nhiêu thì hệ thống cấp phát cho bấy nhiêu không gian bộ nhớ cho từng dòng dữ liệu, không cấp phát thừa hoặc thiếu không gian lưu trữ cho dữ liệu, nhờ đó mà file database trở nên nhỏ gọn và tốc độ xử lý dữ liệu cũng nhanh hơn.
32
SQLite thích hợp sử dụng trong các trường hợp như:
o Ứng dụng sử dụng dạng flat file để lưu trữ dữ liệu: như từ điển, các ứng dụng nhỏ, lưu cấu hình ứng dụng... Nó mạnh mẽ hơn nhiều kỹ thuật lưu trữ file thông thường..
o Sử dụng trong các thiết bị nhúng: smart phone, PDA và các thiết bị di động rất phù hợp với SQLite.
o Các website có khoảng 100 nghìn lượt xem/ ngày, mặc dù về mặt lý thuyết thì SQLite có thể đáp ứng gấp 10 lần con số này.
o Là thay thế hoàn hảo cho database dạng file: nhiều ứng dụng sử dụng fopen(), fread(), fwrite() để lưu trữ dữ liệu, SQLite sẽ thay thế hoàn toàn kỹ thuật đó bằng kỹ thuật hiện đại hơn, dễ dùng và tin cậy hơn.
o Sử dụng làm database tạm để lưu trữ dữ liệu lấy về từ các database trên SQL server, Oracle...
o Làm database demo cho các ứng dụng lớn, dùng để làm mô hình khái niệm cho ứng dụng.
o Dùng cho giảng dạy: để giảng dạy cho những người mới làm quen với ngôn ngữ truy vấn SQL.
33
2.8 KIẾN THỨC VỀ PHP,MYSQL VÀ JSON. 2.8.1 PHP 2.8.1 PHP
Giới thiệu:
PHP là một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất thích hợp với web và có thể dễ dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình web phổ biến nhất thế giới.
Những ưu điểm của PHP
Được sử dụng rộng rãi, miễn phí, cấu hình nhanh chóng, nhỏ gọn.
Có khả năng đạt hiệu suất cao trong làm việc.
Dễ sử dụng.
Là một dự án mã nguồn mở. Ngôn ngữ này được phát triển bởi một đội ngũ những người tình nguyện trên toàn cầu.
Yêu cầu của ứng dụng là phải có một web service chạy bằng ngôn ngữ PHP nên những kiến thức về lập trình web bằng PHP là rất quan trọng để ứng dụng và web service có thể giao tiếp tốt với nhau.
2.8.2 MySQL
Giới thiệu:
MySQLlà hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng.
MySQLlà một trong những ví dụ rất cơ bản về Hệ Quản trị cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL).
Những ưu điểm của MySQL
MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng.
có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.
Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet.
MySQL miễn phí hoàn toàn.
Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS,...
MySQLđược sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,...
2.8.3 Json
Giới thiệu
JavaScript Object Notation(thường được viết tắt là JSON) là một kiểu dữ liệu trongJavaScript. Kiểu dữ liệu này bao gồm chủ yếu là text. Về cấu trúc, nó mô tả một vật thể bằng cách gói những vật thể con trong vật thể lớn hơn trong dấu ngoặc nhọn({}). JSON là một kiểu dữ liệu trung gian, chủ yếu được dùng để vận chuyển thông tin giữa các thành phần của một chương trình.
34
Json có 5 kiểu dữ liệu chính:
Number: Bao gồm kiểu số nguyên và số thực.
String : Kiểu chuỗi,nội dung bao bởi dấu cặp dấu nháy kép ,những ký tự đặt biệt được escape bởi dấu “\”. Json không sử dụng dấu nháy đơn để bọc chuỗi như JavaScript
Boolean:Kiểu luận lý bao gồm true và false.
Array:Kiểu mảng,gồm các phần tử cách nhau bởi dấu phẩy “,” và được bao bọc bởi cặp dấu ngoặc vuông “[“ và ”]”.
Object:Kiểu đối tượng bao gồm những cặp giá trị đi cùng nhau,mỗi cặp được phân cách bởi dấu phẩy “,”,đối tượng được bao bọc bởi cặp dấu ngoặc đơn “{“ và ”}”.Cặp giá trị bao gồm tên và giá trị được phân cách bởi dấu hai chấm “:”.
Null:Giá trị null.
Ưu điểm
JSON nhỏ hơn so với XML, và nhanh hơn và dễ dàng hơn để phân tích.
Json có thể đọc và hiểu được.
Là kiểu dữ liệu trên nền JavaScript nên dễ tiếp cận.
Dữ liệu truyền tải ngắn gọn hơn so với những định dạng dữ liệu khác như XML,HTML...
Dễ dàng chuyển đổi dữ liệu từ dạng chuỗi sang kiểu dữ liệu có thể sử dụng được(Object,Array,number..).
35
CHƯƠNG 3 NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU 3.1 PHÂN TÍCH TRÒ CHƠI HỌC TỪ VỰNG
3.1.1 Giới thiệu
Học từ vựng là một trò chơi đơn giản về giao diện cũng như cách chơi,trò chơi giúp người dùng vừa có thể giải trí, vừa thể thể học thêm được một số từ vựng.
Trò chơi có khoảng 1000 từ vựng theo nhiều chủ đề khác nhau như:đồ vật, nghề nghiệp, động vật, thực vật,.v.v...
Trò chơi yêu cầu người dùng phải có kết nối internet để tải hình ảnh minh hoạ cho từ vựng.Ngoài ra người dùng cũng có thể chơi trò chơi mà không cần kết nối internet,