Đi kèm với sự phát triển phần cứng trên thiết bị động thì cuộc chiến của các nhà phát triển các hệ điều hành trên điện thoại di động cũng diễn ra hết sức khốc liệt.. Tầng này của hệ điều
Trang 1VIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ
Trang 2VIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
Giảng viên hướng dẫn:
TS Dương Thăng Long
BÁO CÁO CHUYÊN ĐỀ
Trang 3LỜI CẢM ƠN
Em xin chân thành cảm ơn ban chủ nhiệm khoa Công nghệ thông tin, các thầy cô giáo, gia đình và bạn bè đã động viên giúp đỡ em rất nhiều trong quá trình làm chuyên đề tốt nghiệp này Đặc biệt em xin bày tỏ lòng cảm ơn sâu sắc tới thầy giáo hướng dẫn T.S Dương Thăng Long về sự tận tình, tận tâm hướng dẫn em từ những ý tưởng đầu tiên cho đền lúc hoàn thành bài chuyên đề tốt nghiệp của mình
Em xin bày tỏ lòng biết ơn tới gia đình thân yêu, những người bạn thân
đã luôn tin tưởng, quan tâm, động viên, giúp đỡ em trong thời gian qua
Em rất mong nhận được sự đánh giá, bổ sung và những lời chỉ bảo của các thầy cô đề em có thể tiếp tục nghiên cứu kĩ hơn về lĩnh vực này
Em xin chân thành cảm ơn!
Sinh viên: Nguyễn Văn Quy
Trang 4MỤC LỤC
Chương 1: CƠ SỞ LÝ THUYẾT 1
1.1 Nền tảng di động 1
1.1.1 Android 2
1.1.2 Windows Phone 3
1.1.3 Sysbian 3
1.1.4 BlackBerry 4
1.2 Hệ điều hành Android 4
1.2.1 Giới thiệu 4
1.2.2 Kiến trúc 5
1.3 Ngôn ngữ lập trình JAVA 9
1.3.1 Giới thiệu 9
1.3.2 Đặc trưng 9
1.3.3 Các thế mạnh 12
1.3.4 Mô hình làm việc Xcode 13
Chương 2: PHÂN TÍCH BÀI TOÁN 15
2.1 Giới thiệu đề tài 15
2.1.1 Mô tả bài toán 15
2.1.2 Các chức năng 15
2.2 Cơ sở dữ liệu 15
Chương 3 ỨNG DỤNG 19
3.1 Nguồn dữ liệu 19
3.2 Giao diện 20
Hình 3.1 Giao diện của ứng dụng 20
TÀI LIỆU THAM KHẢO 23
Trang 5DANH MỤC VIẾT TẮT
STT Tên viết tắt Tên đầy đủ Dich ra tiếng việt
(Nếu là tiếng anh)
1 iOS Iphone Opera System Hệ điều hảnh trên nền
5 JNI Java Native Interface Giao diện Java
10 IDE Integrated Development
Environmen
Môi trường thiết kế hợp nhất
Trang 6Chương 1: CƠ SỞ LÝ THUYẾT
Để đảm bảo một chiếc điện thoại thông minh hoạt động tốt thì nó cần có một hệ điều hành quản lý thiết bị
Đi kèm với sự phát triển phần cứng trên thiết bị động thì cuộc chiến của các nhà phát triển các hệ điều hành trên điện thoại di động cũng diễn ra hết sức khốc liệt Hiện nay, các nền tảng di động lớn được biết đến như sau Nền tảng di động iOS với điện thoại di động thông minh iPhone, với thiết
kế đẹp, thời trang, cảm ứng mượt mà, màn hình đẹp và sắc nét cùng với tài
năng của "thánh" Steve Jobs đã khiến cho iPhone trở thành hiện tượng trên
mọi thị trường, đặc biệt là ở Mỹ Doanh số bán ra của iPhone tăng dần qua các năm, và dần dần thống lĩnh thị trường của nhiều nước iPhone dù mỗi năm chỉ ra một phiên bản mới nhưng sức nóng đủ lan tỏa khắp làng di động,
do đó, iOS vẫn chưa bao giờ "già"
iOS là hệ điều hành "đóng" hoạt động trên iPhone, iPad, iPod iOS đã
quyết định rất nhiều đối với sự thành công của Apple, với giao diện bóng bẩy, đẹp mắt, và dễ sử dụng Tất cả chỉ là chạm và vuốt để thực thi Cùng với chính sách hợp lý để thu hút các lập trình viên viết ứng dụng, kho ứng
Trang 7dụng Appstore ngày càng lớn khiến cho người dùng càng thêm thích thú, mọi nhu cầu của từng người đều có thể được đáp ứng Cũng như việc Apple cũng tung ra cập nhật, vá các lỗi liên tục khi phát hiện, khiến cho iOS ngày càng trở nên "thông minh" hơn, an toàn hơn
Nhưng nếu gọi iOS là thống trị năm 2012 thì điều đó cũng là chưa thể Vì iOS chỉ được cài giới hạn trên thiết bị của Apple gồm những thiết bị như iPhone, iPad, iPod Thị phần của thiết bị Apple trên thế giới nói chung là không lớn, số liệu các bạn thấy trên các báo đa số chỉ thống kê tại Mỹ, nhưng đã gọi là thống trị thì phải là thống trị trên thị trường di động toàn thế giới
1.1.1 Android
Mặc dù sinh sau đẻ muộn, nhưng Android đang có những bước tiến thần tốc, trong thời gian ngắn đã đạt được nhiều điều khiến mọi hệ điều hành di động mơ ước: khoảng 700.000 điện thoại Android được kích hoạt mỗi ngày Khi mà iOS ngày càng bành trướng mà Symbian lại không đủ sức để cạnh tranh Các lập trình viên, các nhà sản xuất điện thoại chú ý đến Android Hệ điều hành di động mở được Google phát triển dựa trên nền tảng Linux Android ngày càng lớn mạnh về số lượng và chất lượng bởi sự linh hoạt từ nền tảng Google, phù hợp với cả smartphone tầm thấp lẫn giá cao Hàng loạt các nhà sản xuất điện thoại di động sử dụng Android làm hệ điều hành chính cho các sản phẩm của mình Như HTC, Samsung, LG, Motorola, Sony Ericsson Từ điện thoại, cho đến máy tính bảng của các hãng này đều dùng
hệ điều hành Android Các nhà lập trình viết ứng dụng ngày càng nhiều trên Android Market Kho ứng dụng đang cạnh tranh trực tiếp với AppStore của Apple Chính vì điều này mà đã khiến Android ngày càng bành trướng trên thị trường khắp các châu lục, và đến năm 2012, Android sẽ là hệ điều hành thống trị
Trang 8Nhưng các bạn có thể thấy, dường như Android đang ở trên đỉnh cao của mình Chính vì có quá nhiều thiết bị, mỗi thiết bị có cấu hình riêng, nhà sản xuất tùy biến riêng và việc có quá nhiều ứng dụng, nhưng lại không theo một chuẩn cụ thể nào Khiến Android ngày càng bị phân mảnh và rời rạc
Android được cập nhật quá thường xuyên, dẫn đến tình trạng trên thị trường có nhiều phiên bản cùng tồn tại, được phát hành song song với nhau Google đang dần muốn kiểm soát và hạn chế sự phân mảnh, nhưng đồng thời cũng làm mất dần tính "mở" vốn là triết lý cơ bản của Android
1.1.2 Windows Phone
Sau sự kiện Microsoft hợp tác cùng Nokia Nokia sẽ chạy hệ điều hành Windows Phone trên các smartphone của mình song song với Symbian và MeeGo Với lợi thế là nhà sản xuất điện thoại chiếm thị phần cao trên thế giới Windows Phone bắt đầu khiến các hệ điều hành di động khác lo lắng
Windows Phone 7 không có gì giống Windows Mobile Hệ điều hành
mới này có một diện mạo hoàn mới, hợp thời, với giao diện Metro đầy mới
lạ, gần giống như một tờ tạp chí, và cực kỳ dễ sử dụng mặc dù cách xử lý mọi việc rất khác Windows Phone 7 cũng đã tạo ra một sức hấp dẫn mới cho làng công nghệ Kho ứng dụng Marketplace tuy có khiêm tốn nhưng rất nhiều phần mềm hữu ích và được kiểm soát bởi Microsoft
1.1.3 Sysbian
Symbian, hệ điều hành di động được đánh giá là thân thiện, dễ sử dụng Symbian rất mạnh đối với các dòng điện thoại sử dụng màn hình cứng, bàn phím T9 cơ bản Và kho ứng dụng của Symbian trong 10 năm qua không phải là ít Những ứng dụng này đáp ứng không nhỏ trong công việc, đời sống hằng ngày của mọi người
Trang 9Từ bản Symbian^3, giao diện đã thay đổi rất nhiều Nhưng chưa rõ rệt cho lắm Cho đến bản Symbian Anna, Symbian Belle toàn bộ đã khác: Biểu tượng trau chuốt hơn, giao diện mượt mà hơn, loại bỏ nhiều thứ không cần thiết Mọi sự cố gắng của Symbian khi thuộc về Nokia có vẻ như đang có sự tiến bộ rõ rệt Có điều năm 2012 không phải là năm của Symbian khi chính Nokia cũng đang xuống dốc
1.1.4 BlackBerry
Là dòng máy Smartphone cao cấp và nổi tiếng trên thế giới do hãng Research In Motion cung cấp Ngoài những tính năng thông thường, điểm tạo nên sự khác biệt của máy BlackBerry là kiểu thiết kế rất đặc trưng; pin tốt và hơn cả là dịch vụ Push Mail nổi tiếng và thương hiệu BlackBerry được xây dựng rất thành công
BlackBery OS 6 được RIM công bố tại sự kiện Wireless Enterprise Symposium (diễn ra từ 27 đến 29/4 tại Mỹ) RIM chưa đưa ra chi tiết về hệ điều hành mới, ngoài một đoạn video quảng cáo khá ấn tượng Theo những thông tin đầu tiên, nhiều cải tiến từ giao diện, màn hình Home mới, menu pop-up, khả năng chuyển dịch, trình duyệt web mới dựa trên nền tảng WebKit tương thích HTML5 Ngoài ra, BlackBerry OS 6 hỗ trợ khả năng điều khiển trên màn hình cảm ứng đa điểm tốt hơn
1.2 Hệ điều hành Android
1.2.1 Giới thiệu
Android là hệ điều hành trên điện thoại di động (và hiện nay là cả trên một số đầu phát HD, HD Player, TV) phát triển bởi Google và dựa trên nền tảng Linux Trước đây, Android được phát triển bởi công ty liên hợp Android ( sau đó được Google mua lại vào năm 2005)
Trang 10Các nhà phát triển viết ứ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 của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai
1.2.2.2 Tầng Applycation Famework
Trang 11Tầng này của hệ điều hành Android 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ú Các nhà phát triển ứng dụng được tự do sử dụng các tính năng cao cấp của thiết bị phần cứng như: thông tin định vị địa lý, khả năng chạy dịch vụ dưới nền, thiết lập đồng hồ báo thức, thêm notification vào status bar của màn hình thiết bị…
Người phát triển ứng dụng được phép sử dụng đầy đủ bộ API được dùng trong các ứng dụng tích hợp sẳn của Android Kiến trúc ứng dụng của Android được thiết kế nhằm mục đích đơn giản hóa việc tái sử dụng các component Qua đó bất kì ứng dụng nào cũng có thể công bố các tính năng
mà nó muốn chia sẻ cho các ứng dụng khác (VD: Ứng dụng email có muốn các ứng dụng khác có thể sử dụng tính năng gởi mail của nó) Phương pháp tương tự cho phép các thành phần có thể được thay thế bởi người sử dụng
Tầng này bao gồm một tập các services và thành phần sau:
1. Một tập phong phú và có thể mở rộng bao gồm các đối tượng View được dùng để xây dựng ứng dụng như: list, grid, text box, button và thậm chí là một trình duyệt web có thể nhúng vào ứng dụng
2. Content Provider: Cho phép các ứng dụng có thể truy xuất dữ liệu
từ các ứng dụng khác hoặc chia sẽ dữ liệu của chúng
3. Resource Manager: Cung cấp khả năng truy xuất các tài nguyên
non-code như hình ảnh hoặc file layout
4. Notification Manager: Cung cấp khả năng hiển thị custom alert
trên thanh status bar
5. Activity Manager: Giúp quản lý vòng đời của một ứng dụng 1.2.2.3 Tầng Library
Trang 12System C library: một thể hiện được xây dựng từ BSD của bộ thư viện
hệ thống C chuẩn (libc), được điều chỉnh để tối ưu hóa cho các thiết bị chạy trên nền Linux
Media libraries: Bộ thư viện hổ trợ trình diễn và ghi các định dạng âm
than và hình ảnh phổ biến
Surface manager: Quản lý hiển thị nội dung 2D và 3D
LibWebCore: Một web browser engine hiện đại được sử dụng trong
trình duyệt của Android lần trong trình duyệt nhúng web view được sử dụng trong ứng dụng
SGL: Engine hổ trợ đồ họa 2D
3D libraries: Một thể hiện được xây dựng dựa trên các APIs của
OpenGL ES 1.0 Những thư viện này sử dụng các tăng tốc 3D bằng phần cứng lẫn phần mềm để tối ưu hóa hiển thị 3D
FreeType: Bitmap and vector font rendering
SQLite: Một DBMS nhỏ gọn và mạnh mẽ
1.2.2.4 Android Runtime
Hệ điều hành Android tích hợp sẳn một tập hợp các thư viện cốt lõi cung cấp hầu hết các chức năng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java Mọi ứng dụng của Android chạy trên một tiến trình của riêng nó cùng với một thể hiện của máy ảo Dalvik Máy ảo Dalvik thực tế là một biến thể của máy ảo Java được sửa đổi, bổ sung các công nghệ đặc trưng của thiết bị di động Nó được xây dựng với mục đích làm cho các thiết bị
di động có thể chạy nhiều máy ảo một cách hiệu quả Trước khi thực thi, bất kì ứng dụng Android nào cũng được convert thành file thực thi với định dạng nén Dalvik Executable (.dex) Định dạng này được thiết kế để phù hợp với các thiết bị hạn chế về bộ nhớ cũng như tốc độ xử lý Ngoài ra máy ảo Dalvik sử dụng bộ nhân Linux để cung cấp các tính năng như
thread, low-level memory management
1.2.2.5 Linux Ken
Trang 13Hệ đ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ư: security, memory management, process management, network stack, driver model Bộ nhân này làm nhiệ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.2 Mô hình hợp tác giữa máy ảo Dalvik và Navite code JNI: Java Native Interface (Tương tự khái niệm Application Programming Interface)
Java Native Interface: là một bộ framework cho phép mã lệnh viết bằng Java chạy trên máy ảo java có thể gọi hoặc được gọi bởi một ứng
dụng viết bằng native code (Ứng dụng được viết cho một phần cứng cụ
thể và trên một hệ điều hành cụ thể) 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 những phương thức được viết bằng các 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 viết bằng C, C++,
Assembly nhằm tăng tốc độ thực thi của ứng dụng hoặc sử dụng những 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 các bộ thư viện này
Trang 141.3 Ngôn ngữ lập trình JAVA
1.3.1 Giới thiệu
Java là một công nghệ xây dựng các ứng dụng phần mềm có vị trí rất lớn trong những năm cuối thế kỉ 20, đầu thế kỉ 21 Nó được coi là công nghệ mang tính cách mạng và khả thi nhất trong việc tạo ra các ứng dụng có khả năng chạy thống nhất trên nhiều nền tảng mà chỉ cần biên dịch một lần
Lần đầu tiên xuất hiện vào năm 1992 như là một ngôn ngữ dùng trong nội bộ tập đoàn Sun Microsystems để xây dựng ứng dụng điều khiển các
bộ xử lý bên trong máy điện thoại cầm tay, lò vi sóng, các thiết bị điện tử dân dụng khác Không chỉ là một ngôn ngữ, Java còn là một nền tảng phát triển và triển khai ứng dụng trong đó máy ảo Java
Sun, công ty đã phát minh ra ngôn ngữ Java, chính thức ban hành bản Java Development Kit 1.0 vào năm 1996 hoàn toàn miễn phí để các nhà phát triển có thể tải về, học Java, xây dựng các ứng dụng Java và triển khai chúng trên các hệ điều hành có hỗ trợ Java Ban đầu, Java chủ yếu dùng để phát triển các Applet, các ứng dụng nhúng vào trình duyệt, góp phần làm sinh động các trang web tĩnh vốn hết sức tẻ nhạt hồi đó Tuy nhiên, cùng với sự phát triển của công nghệ thông tin và nhu cầu của xã hội, Java Applet đã dần mất đi vị trí của nó và thay vào đó, các công ty, cộng đồng ủng hộ Java đã phát triển nó theo một hướng khác
1.3.2 Đặc trưng
6. Đơn giản
Những người thiết kế mong muốn phát triển một ngôn ngữ dễ học và quen thuộc với đa số người lập trình Do vậy Java loại bỏ các đặc trưng phức tạp của C và C++ như thao tác con trỏ, thao tác định nghĩa chồng
Trang 15toán tử (operator overloading),… Java không sử dụng lệnh “goto” cũng như file header (.h) Cấu trúc “struct” và “union” cũng đượcloại bỏ khỏi
Java
7. Hướng đối tượng
Java được thiết kế xoay quanh mô hình hướng đối tượng Vì vậy trong Java, tiêu điểm là dữ liệu và các phương pháp thao tác lên dữ liệu
đó Dữ liệu và các phương pháp mô tả trạng thái và cách ứng xử của một đối tượng trong Java
8. Độc lập phần cứng và hệ điều hành
Đây là khả năng một chương trình được viết tại một máy nhưng có thể chạy được bất kỳ đâu Chúng được thể hiện ở mức mã nguồnvà mức nhị phân
Tính độc lập ở mức nhị phân, một chương trình đã biên dịch có thể chạy trên nhiều nền (phần cứng, hệ điều hành) khác mà không cần dịch lại mã nguồn Tuy vậy cần có phần mềm máy ảo Java (JVM) hoạt động như một trình thông dịch tại máy thực thi
Môi trường phát triển của Java được chia làm hai phần: Trình biên dịch và trình thông dịch Không như C hay C++, trình biên dịch của Java chuyển mã nguồn thành dạng bytecode độc lập với phần cứng mà có thể chạy trên bất kỳ CPU nào
Nhưng để thực thi chương trình dưới dạng bytecode, tại mỗi máy cần phải có trình thông dịch của Java hay còn gọi là máy ảo Java Máy ảo Java chuyển bytecode thành mã lệnh mà CPU thực thi được
Java là ngôn ngữ yêu cầu chặt chẽ về kiểu dữ liệu.Phải khai báo kiểu
dữ liệu tường minh khi viết chương trình Java kiểm tra lúcbiên dịch và
cả trong thời gian thông dịch vì vậy Java loại bỏ một một số loạilỗi lập