Chương 1. Tổng quan đề tài 0 0 c Khóa luận tốt nghiệp Trang 3 Chương 2. CƠ SỞ LÝ THUYẾT ANDROID Chương này trình bày nội dung lý thuyết về Android, các thành phần cơ bản của một dự án android, ki ến trúc của hệ điều hành android.1 Lịch sử android Android là một hệ điều hành dựa trên nền tảng Linux, đượ c thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng. Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005.
Chính mã nguồn mở của Android cùng với tính không ràng buộc nhiều đã cho phép các nhà phát triển thiết bị di động và các lập trình viên được điều chỉnh và phân phối Android một cách tự do. Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức năng của thiết bị. Android bắt đầu với bản beta đầu tiên vào tháng 11 năm 2007 và phiên bản thương mại đầu tiên, Android 1.0, được phát hành vào tháng 9 năm 2008. Kể từ tháng 4 năm 2009, phiên bản Android được phát triển, đặt tên theo chủ đề bánh kẹo và phát hành theo thứ tự bảng chữ cái: Cupcake (bánh cupcake), Donut (bánh vòng), Eclair (bánh Eclair), Froyo (ya-ua lạnh), Gingerbread (bánh gừng), Honeycomb (mật ong), Ice Cream Sandwich (bánh kẹp kem), Jelly Bean (k ẹo dẻo), Kitkat (bánh Kitkat) và phiên bản hiện tại Lollipop (kẹo mút).
Kỷ nguyên của Android chính thức bắt đầu vào ngày 22 tháng 10 năm 2008, khi chiếc điện thoại T-Mobile G1 bắt đầu được bán ra tại Mỹ. Vào thời gian đầu, rất nhiều tính năng cơ bản bị thiếu sót như: bàn phím ảo, cảm ứng đa điểm và tính năng mua ứng dụng vẫn chưa xuất hiện. Tuy nhiên, một số tính năng cũng như giao diện đặc sản của hệ điều hành này đã khởi nguồn từ chiếc G1 và trở thành những yếu tố không thể thiếu trên Android sau này. Phiên bản SDK lần đầu tiên phát hành vào tháng 11 năm 2007, hãng T-Mobile cũng công bố chiếc điện thoại Android đầu tiên đó là chiếc T-Mobile G1, chiếc smartphone đầu tiên dựa trên nền tảng Android.
Một vài ngày sau đó, Google lại tiếp tục công bố sự ra mắt phiên bản Android SDK release Candidate 1. Trong tháng 10 năm 2008, Google được cấp giấy phép mã nguồn mở cho Android Platform. Vào cuối năm 2008, Google cho phát hành một thiết bị cầm tay đượ c gọi là Android Dev Phone 1 có thể chạy được các ứng dụng Android mà không bị ràng buộc vào các nhà cung cấp mạng điện thoại di động. Mục tiêu của thiết bị này là cho phép các nhà phát triển thực hiện các cuộc thí nghiệm trên một thiết bị thực có thể chạy hệ điều hành Android mà không phải ký một bản hợp đồng nào.
Vào khoảng cùng thời gian đó thì Google cũng cho phát hành một phiên bản vá lỗi 1.1 của hệ điều hành này. Ở cả hai phiên bản 1.1 Android chưa hỗ trợ soft-keyboard mà đòi hỏi các thiết bị phải sử dụng bàn phím vật lý. Android cố định vấn đề này bằng cách phát hành Chương 2. Cơ sở lý thuyết Android 0 0 c Khóa luận tốt nghiệp Trang 4 SDK 1.5 vào tháng Tư năm 2009, cùng với một số tính năng khác.
Chẳng hạn như nâng cao khả năng ghi âm truyền thông, vật dụng, và các live folder.2 Kiến trúc của Android Hệ điều hành Android là một ngăn xếp của các thành phần ứng dụng (stack of software components), có thể chia thành 5 phần và 4 lớp như trong sơ đồ kiến trúc Android dưới đây.1 Kiến trúc hệ điều hành Android 2.1 Linux Kernel Dưới cùng là lớp Linux - Linux 3.6 cùng với khoảng 115 bản vá. Lớp này cung cấp 1 cấp độ trừu tượng giữa phần cứng của thiết bị và các thành trình điều khiển phần cứng thiết yếu như máy ảnh, bàn phím, màn hình hiển thị. Đồng thời, hạt nhân (kernel) còn xử lý tất cả các thứ mà Linux có thể làm tốt như mạng kết nối và 1 chuỗi các trình điều khiển thiết bị, giúp cho giao tiếp với các thiết bị ngoại vi dễ dàng hơn.2 Các thư viện Android Phía trên tầng Linux kernel là t ầng libraries, chứa những thư viện hỗ trợ. Một số có thể kể đến như là bộ máy trình duyệt web mã nguồn mở WebKit, thư viện libc, Chương 2.
Cơ sở lý thuyết Android 0 0 c Khóa luận tốt nghiệp Trang 5 cơ sở dữ liệu SQLite tiện lợi cho việc lưu trữ và chia sẻ dữ liệu, thư viện hỗ trợ thu phát âm thanh và video, thư viện SSL giúp bảo mật mạng… Tầng này chứa tất cả các thư viện Java, được viết đặc biệt cho Android như các thư viện framework, các thư viện xây dựng giao diện, đồ họa và cơ sở dữ liệu. Dưới đây là một số thư viện quan trọng mà các lập trình viên nên biết: android.app: Cung cấp quyền truy cập tới mô hình ứng dụng và là nền tảng của mọi ứng dụng Android applications.content: Cho phép truy cập nội dung, phát hành và tin nhắn giữa các ứng dụng và các thành phần trong một ứng dung.database: Được dùng để truy cập vào dữ liệu được đưa ra bởi bộ phận cung cấp nội dung, bao gồm các lớp quản lý cơ sở dữ liệu SQLite.opengl: Cho phép tương tác với thư viện đồ họa OpenGL ES 3D.os: Giúp ứng dụng truy cập những dịch vụ cơ bản của hệ điều hành bao gồm tin nhắn, dịch vụ hệ thống và liên lạc nội bộ (inter-process communication).text: Được dùng để vẽ và thao tác văn bản trên màn hình.view: Các khối xây dựng cơ bản của giao diện người dùng.widget: Một tập hợp r ất nhiều thành phần giao diện được xây dựng sẵn như nút bấm (button), nhãn (label), danh sách hiển thị (list views), quản lý bố cục (layout managers)… android.webkit: Tập hợp các lớp (classes) cho phép trình duyệt web được nhúng vào ứng dụng.3 Android Runtime Đây là phần thứ 3 của kiến trúc và nằm ở lớp thứ 2 từ dưới lên. Phần này cung cấp 1 bộ phận quan trọng là Dalvik Virual Machine - là 1 loại Java Virtual Machine được thiết kế đặc biệt để tối ưu cho Android. Dalvik VM sử dụng các đặc trưng của nhân Linux như quản lý bộ nhớ và đa luồng, những thứ mà đã có sẵn trong Java.
Dalvik VM giúp mọ ứng dụng Android chạy trong tiến trình riêng của nó, với các thể hiện (instance) riêng của Dalvik virtual Machine. Android Runtime cũng cung cấp 1 tập các thư viện chính giúp các nhà phát triển ứng dụng Android có thể viết ứng dụng Android bằng Java.4 Application Framework Lớp Android Framework cung cấp các dịch vụ cấp độ cao hơn cho các ứng dụng dưới dạng các lớp Java. Các nhà phát triển ứng dụng được phép sử dụng các dịch vụ này trong ứng dụng của họ. Android Framework bao gồm các dịch vụ chính sau: Activitty Manager - Kiểm soát tất cả khía cạnh của vòng đời ứng dụng và ngăn xếp các Activity.
Content Providers - Cho phép các ứng dụng chia s ẽ dữ liệu với các ứng dụng khác. Cơ sở lý thuyết Android 0 0 c Khóa luận tốt nghiệp Trang 6 Resource Manager - Cung cấp quyền truy cập vào các tài nguyên như các chuỗi, màu sắc, các layout giao diện người dùng. Notifications Manager - Cho phép các ứng dụng hiển thị cảnh báo và các thông báo cho người dùng. View System - Tập các thành phần giao diện (view) được sử dụng để tạo giao diện người dùng.5 Application Lớp trên cùng của kiến trúc là Application.
Các ứng dụng bạn tạo ra sẽ được cài đặt trên lớp này. Ví dụ như: Danh bạ, nhắn tin, trò chơi.3 Android emulator Android SDK bao gồm một thiết bị ảo Emulator chạy trên máy tính của bạn. Emulator này cho phép bạn phát triển và thử nghiệm ứng dụng Android mà không cần sử dụng một thiết bị vật lý. Android Emulator được phát triển từ chính ông lớn Google, Android Emulator được phát triển giúp các lập trình viên Android test ứng dụng, tuy nhiên bạn cũng có thể dùng nó để trải nghiệm hệ điều hành Android, chơi game android trên máy tính, hay test các ứng dụng trước khi cài lên máy thật… Android Emulator trang bị đầy đủ tính năng như một chiếc máy thật, tuy nhiên vẫn có một số giới hạn khi sử dụng Android Emulator như Camera, Video, Voice,.
Cơ sở lý thuyết Android 0 0 c Khóa luận tốt nghiệp Trang 7 Hình 2.4 Các thành phần trong một dự án Android 2.xml Trong bất k ỳ một project android nào khi khởi tạo thì đều sinh ra một file gọi là AndroidManifest.xml, file này có nhiệm vụ là mô tả những thông tin cần thiết của ứng dụng cho hệ điều hành Android, những thông tin này hệ điều hành cần phải biết trước khi nó chạy bất kỳ chương trình nào. Những công việc mà tập tin manifest cần phải thực hiện. Phần dưới đây mô tả cấu trúc của tập tin manifest và các phần tử mà nó có thể chứa: Permission Permission được dùng để giới hạn quyền truy xuất vào chương trình mà dữ liệu trên thiết bị. Những giới hạn này được áp đặt để bảo vệ dữ liệu nhạy cảm và các chương trình có thể gây l ỗi hoặc cố ý dùng sai của người dùng có kinh nghiệm.
Mỗi quyền được xác định bởi 1 chuỗi duy nhất. Thường mỗi chuỗi xác định duy nhất 1 quyền. Dưới đây là một số quyền được mô tả sẵn bởi Android.3 Thiết lập permission trong android SDK version Thẻ xác định phiên bản SDK được khai báo như sau: <uses-sdk android: minSdkVersion="15" /> Ở đây phiên bản nhỏ nhất để sử dụng là 15, có nghĩ là API thấp nhất mà ứng dụng có thể cài đặt.java là một file tự động sinh ra ngay khi tạo ứng dụng, file này được sử dụng để quản lý các thuộc tính được khai báo trong file XML của ứng dụng và các tài nguyên hình ảnh. Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào xảy xa làm thay đổi các thuộc tính trong ứng dụng.
Chẳng hạn như, bạn kéo và thả một file hình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính đường dẫn đến file đó cũng sẽ được hình thành trong file R.java hoặc xoá một file hình ảnh thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xoá. Dưới đây là nội dung của một file R.java: Chương 2. Cơ sở lý thuyết Android 0 0 c Khóa luận tốt nghiệp Trang 8 2.5 Chu kỳ Android Chu kỳ sống thành phần: các thành phần ứng dụng có một chu kỳ sống, tức là mỗi thành phần từ lúc bắt đầu khởi tạo và đến thời điểm k ết thúc, đôi lúc chúng có thể là active (visible hoặc invisible) hoặc inactive.