CHƯƠNG 1: SƠ LƯỢC VỀ HỆ ĐIỀU HÀNH 1.1 SƠ LƯỢC VỀ CÁC HỆ ĐIỀU HÀNH Hệ điều hành là chương trình chạy trên hệ thống máy tính, quản lý các tài nguyên trên máy tính và là môi trường cho các ứng dụng chạy trên nó. Ngày nay, khái niệm hệ điều hành không chỉ là trên máy tính mà còn được mở rộng cho nhiều thiết bị điện tử khác chẳng hạng như điện thoại thông minh (smart phone), các thiết bị cầm tay PDA v.v… Như vậy hệ điều hành di động là hệ điều hành chạy trên hệ thống máy có tính di động cao. Với đặc thù đó, hệ điều hành di động phải có những khả năng đặc biệt mà những hệ điều hành thông thường không có được. Chẳng hạn như nó phải chạy trên hệ thống máy có cấu hình máy hạn chế về tốc độ bộ vi xử lý, bộ nhớ sử dụng, phải chạy được ổn định liên tục trong một thời gian dài mà chỉ sử dụng một lượng điện năng nhỏ, trong suốt thời gian chạy đó có thể duy trì các kết nối mạng không dây để đảm bảo liên lạc Một số hệ điều hành tiêu biểu: Trên máy tính cá nhân: MS DOS, MS WINDOW, MACOS, LINUX, UNIX Trên điện thoại thông minh: Android, Sybian, Window Mobile, iPhone OS, BlackBerry, S60, Bada OS.
Trong phạm vi đồ án này chúng ta sẽ nói về hệ điều hành Android dành cho điện thoại. GVHD: 5 Chuyên đề lập trình trên thiết bị di động Quản lý Thu Chi 1. HỆ ĐIỀU HÀNH ANDROID Android là hệ điều hành gồm 12 triệu dòng code. Các ứng dụng không được phép truy cập đến dữ liệu của nhau, cũng không được phép truy cập đến dữ liệu của HĐH, trừ khi được chính ứng dụng đó cung cấp (thông qua các Content Provider mà sau này chúng ta sẽ được học).
Các ứng dụng hỗ trợ khả năng giao tiếp với người dùng đến đâu là do khả năng và thiết kế của người lập trình, còn bản thân Android đã hỗ trợ đầy đủ các giao tiếp cho ứng dụng. Android – hệ điều hành dành cho điện thoại di động được phát triển bởi Google và ngày càng trở nên phổ biến với các hãng liên tục ra mắt các mẫu điện thoại sử dụng Android. Hình 1: Giao diện màn hình chính (Android 4.2) Lịch sử phát triển của Android GVHD: 6 Chuyên đề lập trình trên thiết bị di động Quản lý Thu Chi Cách các nhà sản xuất điện thoại dùng Android là họ cho ra một dòng điện thoại, lấy bản open source của Android về, chỉnh sửa lại cho phù hợp với dòng điện thoại đó, rồi cài vào và tung ra thị trường. Do đó các bản Android khác nhau được gọi là các bản Room khác nhau của Android.
Thiết bị chuẩn của Android bao gồm 4 phím chính (cứng hoặc mềm) là home, back, search và menu. - Phím Home sẽ quay trở về màn hình home - Phím back quay lại màn hình trước đó - Phím search và menu sẽ tùy từng ứng dụng mà chúng sẽ có action tương ứng. Android được xây dựng trên nhân linux và được phân phối miễn phí. Không giống như Windows mobile và Apple iPhone, tuy cả hai đều cung cấp môi trường phát triển ứng dụng phong phú và đơn giản dễ tiếp cận nhưng luôn có sự ưu tiên cho các ứng dụng mặc định có sẵn của hệ điều hành (native applications).
Với Android mọi ứng dụng đều được viết trên cùng một tập API, thế nên không có sự phân biệt giữa các ứng dụng mặc định và các ứng dụng của bên thứ ba. Người dùng hoàn toàn có thể thay thế mọi ứng dụng mặc định bằng các ứng dụng yêu thích của mình, thậm chí ngay cả màn hình thực hiện cuộc gọi mà màn hình nhà (home scream). Các nhà phát triển ứng dụng cho Android dựa trên ngôn ngữ Java. Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng và phần mềm viễn thông nhằm mục đích tạo nên chuẩn mở cho điện thoại di động trong tương lai.
Google công bố hầu hết các mã nguồn Android theo bản cấp phép Apache. GVHD: 7 Chuyên đề lập trình trên thiết bị di động Quản lý Thu Chi Hình 1. Các thành viên của liên minh di động mở. Các ứng dụng có sẵn trên Android Một điện thoại Android thông thường sẽ đi kèm với một vài ứng dụng có sẵn, bao gồm: - Một trình email tương thích với Gmail - Chương trình quản lý tin nhắn SMS - Chương trình quản lý thông tin cá nhân, bao gồm cả lịch làm việc, danh bạ và được đồng bộ hóa với dịch vụ Google - Phiên bản thu gọn của Google Map cho điện thoại, bao gồm StreetView, tìm kiếm địa chỉ, chỉ đường, tình trạng giao thông… - Trình duyệt Web dựa trên nhân Webkit.
- Chương trình tán gẫu (Chat). - Trình đa phương tiện (chơi nhạc, xem phim…). GVHD: 8 Chuyên đề lập trình trên thiết bị di động Quản lý Thu Chi - Android MarketPlace cho phép người dùng tải về và cài đặt các ứng dụng mới. Tất cả các ứng dụng có sẵn đều được viết bằng ngôn ngữ Java và sử dụng Android SDK.
Các dữ liệu về thông tin người dùng được các ứng dụng có sẵn sử dụng như thông tin về danh bạ vẫn hoàn toàn có thể được sử dụng bởi các ứng dụng của bên thứ ba. Tương tự vậy, ứng dụng của bạn hoàn toàn có thể xử lý các sự kiện như các cuộc gọi đến, nhận một tin nhắn mới… thay cho các ứng dụng có sẵn. Truy cập phần cứng Android bao gồm các thư viện API giúp đơn giản hóa tối đa việc sử dụng phần cứng của thiết bị. Điều đó đảm bảo rằng bạn không cần phải bận tâm nhiều đến việc ứng dụng của mình có thể chạy như mong đợi trên nhiều thiết bị khác nhau hay không, miễn là thiết bị đó có hỗ trợ Android.
Android SDK bao gồm các API cho phần cứng: GPS, Camera, kết nối mạng, WIFI, Bluetooth, con quay gia tốc, màn hình cảm ứng, quản lý năng lượng… Dịch vụ chạy nền Android hỗ trợ các ứng dụng và dịch vụ được thiết kế chạy ẩn. Do kích thước nhỏ của màn hình điện thoại nên tại một thời điểm chỉ có thể thấy một ứng dụng. Dịch vụ chạy nền giúp tạo ra các thành phần ứng dụng “vô hình” để thực hiện tự động một tác vụ nào đó mà không cần phải có sự tương tác của người dùng. Ví dụ như một dịch vụ chạy nền có chức năng chặn cuộc gọi đến đối với các số điện thoại có trong “black list” chẳng hạn.
SQLite Database Bởi vì tính chất nhỏ gọn và bị hạn chế về phần cứng của điện thoại di động, cho nên đòi hỏi việc lưu trữ và truy xuất dữ liệu phải nhanh chóng và hiệu quả. Android hỗ trợ hệ quản trị nhỏ gọn SQLite, và cung cấp cho ứng dụng các API để thao tác. Mặc định mỗi ứng dụng đều được chạy trong SandBox (hộp cát) điều này có nghĩa là nội dung của từng database ứng với từng ứng dụng chỉ có thể truy cập bằng chính ứng dụng đó. Tuy nhiên cũng có các cơ chế để các ứng dụng chia sẽ, trao đổi các database với nhau.
Hệ thống thông báo Thông báo là cách thức tiêu chuẩn mà ở đó thiết bị báo cho người dùng đã có một sự kiện nào đó đã xảy ra. Chẳng hạn như có cuộc gọi tới, máy sắp hết pin… Sử GVHD: 9 Chuyên đề lập trình trên thiết bị di động Quản lý Thu Chi dụng các API bạn có thể cho ứng dụng của mình thông báo tới người dùng bằng âm thanh, rung, hoặc thậm chí cả đèn LED của thiết bị. Tối ưu hóa bộ nhớ và quản lý tiến trình Việc quản lý bộ nhớ và tiến trình trong Android cũng có một chút khác biệt giốn như công nghệ Java và .NET, Android sử dụng một bộ Run-time của riêng mình với công nghệ ảo hóa để quản lý bộ nhớ của các ứng dụng đang chạy. Không giống như những nền tản khác, Android Run-time cũng đồng thời quản lý luôn cả thời gian sống của ứng dụng.
Android đảm bảo các ứng dụng đều được đáp ứng bằng cách dừng và hủy các tiến trình không cần thiết để giải phóng các tài nguyên cho các tiến trình có độ ưu tiên cao hơn. Trong bối cảnh đó, độ ưu tiên được xác định tùy thuộc vào ứng dụng mà người dùng đang tương tác. Android đảm bảo rằng các ứng dụng được hủy một cách nhanh chóng, đồng thời cũng khởi động là nhanh cũng không kém nếu cần. Điều này thật sự quan trọng trong một môi trường mà ở đó bản thân ứng dụng không thể tự kiểm soát được thời gian sống cho mình.
Android software development kit (SDK) Bộ SDK của Android bao gồm mọi thứ cần thiết giúp bạn có thể lập trình, debug, test ứng dụng Android. - Android API: Cốt lõi của bộ SDK là thư viện các hàm API và Google cũng chỉ sử dụng bộ API này để xây dựng các ứng dụng có sẵn cho Android. - Development tool: SDK bao gồm rất nhiều công cụ để giúp biên dịch, sửa lỗi và hỗ trợ trong việc lập trình ứng dụng. - Android Emulator: Trình giả lập thiết bị chạy Android thực sự với nhiều Skin thay thế, cực kì tiện lợi cho việc test ứng dụng Android ngay trên máy tính mà không cần phải thông qua một thiết bị chạy Android thực.
- Tài liệu: SDK bao gồm một bộ tài liệu rất chi tiết, giải thích cặn kẽ chính xác những gì bao gồm trong mỗi page, class cùng với cách sử dụng chúng. Ngoài tài liệu về “code”, còn có những tài liệu dùng để “getting started” và giải thích các nguyên tắc và cơ chế hoạt động của ứng dụng trong Android. - Code mẫu: SDK bao gồm các ứng dụng mẫu đơn giản minh họa cho các tính năng nổi bật trên Android, cũng như các ứng dụng demo cách sử dụng các tính năng của bộ API. GVHD: 10 Chuyên đề lập trình trên thiết bị di động Quản lý Thu Chi Kiến trúc ứng dụng Ý tưởng của Android là việc khuyến khích tái sử dụng lại các thành phần đã có, cho phép ứng dụng của bạn có thể chia sẻ Activity, Service, Dữ liệu với các ứng dụng khác nhau trong giới hạn bạn đặt ra.
Sau đây là kiến trúc của mọi ứng dụng Android: - Activity Manager : Kiểm soát vòng đời của Activity. - View : Xây dựng giao diện người dùng cho Activity. - Notification Manager: Cung cấp một cơ chế thống nhất và an toàn để ứng dụng có thể đưa ra các thông báo cho người dùng. - Content Provider: Giúp trao đổi và chia sẽ dữ liệu giữa các ứng dụng với nhau.