Trước khi RIM trình làng dòng điện thoại mới chạy hệ điều hành BlackBerry 10, chuyên gia về thiết bị di động Sascha Segan đã điểm lại những mẫu máy mang tính bước ngoặt của hãng này, đán
QUÁT
Giới thiệu tổng quan và lý do chọn đề tài
1.1.1.Sơ lược về tiếng anh
Tiếng Anh (English) là một ngôn ngữ thuộc nhánh miền Tây của nhóm ngôn ngữ German trong ngữ hệ Ấn-Âu Đây là ngôn ngữ sử dụng rộng rãi nhất thế giới Nó được sử dụng là ngôn ngữ mẹ đẻ bởi một số lượng lớn người dân từ khắp thế giới tại Liên hiệp Anh, Mỹ, Canada, Cộng hòa Ireland, New Zealand và một số quốc đảo trong vùng Caribbean Đây là ngôn ngữ mẹ đẻ được sử dụng nhiều thứ ba trên thế giới, sau Tiếng Hoa và Tiếng Tây Ban Nha Đây là ngôn ngữ thứ hai được sử dụng rộng rãi và là ngôn ngữ chính thức trong các tổ chức lớn bao gồm Liên minh châu Âu, Khối Thịnh vượng chung Anh và đặc biệt là Liên hiệp Quốc
Tiếng Anh được sử dụng phổ biến nhờ vào ảnh hưởng của Mỹ và Anh trên các lĩnh vực quân sự, kinh tế, khoa học, tin học, chính trị và văn hóa Ở nhiều nước, trong đó có Việt Nam, người ta bắt buộc hoặc mặc định phải học tiếng Anh để đi làm
1.1.2 Sự thông dụng của tiếng Anh
Ngày nay có khoảng một tỷ người nói tiếng Anh trên khắp thế giới và con số này ngày càng tăng lên Tiếng Anh là ngôn ngữ được sử dụng rộng rãi nhưng lại không thay thế các ngôn ngữ khác, thay vào đó nó hỗ trợ các ngôn ngữ với các yếu tố sau:
+ Hơn 250 triệu người Trung Quốc học tiếng Anh
+ Trong 80 nước, tiếng Anh là ngôn ngữ thông dụng thứ hai hay được phổ biến trong việc học
+ Ở Hồng Kông, 9 trên 10 học sinh trung học đều được học tiếng Anh + Ở Pháp, để bắt đầu vào trung học các học sinh phải có ít nhất 4 năm hoc tiếng Anh hay tiếng Đức; hầu hết 85% học sinh là chọn học tiếng Anh
+ Tại Nhật Bản, các học sinh trung học được đòi hỏi là phải có 6 năm học tiếng Anh trước khi tốt nghiệp
* Trong các phương tiện truyền thông và giao thông
Tiếng Anh chiếm ưu thế trong giao thông vận tải và các phương tiện truyền thông Trong lĩnh vực du lịch và ngôn ngữ cộng đồng của hàng không quốc tế, tiếng Anh đóng vai trò chính Phi công, tiếp viên và kể cả các nhân viên kiểm soát đều nói tiếng Anh tại các phi trường quốc tế Cờ và các tình hiệu ánh sáng được sử dụng trong ngành hàng hải, nhưng “nếu các tàu lớn cần truyền tín hiệu cho nhau bằng các thông điệp thì họ sẽ tìm kiếm một ngôn ngữ chung và thông dụng và khi đó tiếng Anh chắc chắn sẽ là chọn lựa chính”, câu nói của một người bảo vệ bờ biển của tại Mỹ, Werner Siems
Năm trong số các đài phát thanh nổi tiếng là CBS, NBC, ABC, BBC và CBC được 300 triệu người chọn ra là các đài phát thanh tiếng Anh phổ biến nhất Tiếng Anh cũng là ngôn ngữ phổ biến trên các chương trình TV thuộc truyền tải vệ tinh
* Trong thời đại công nghệ thông tin
Ngôn ngữ của thời đại thông tin là tiếng Anh Hơn 80% nguồn dự trữ thông tin của hơn 100 triệu máy tính khắp thế giới là tiếng Anh 85% các cuộc trao đổi qua điện thoại quốc tế được sử dụng bằng tiếng Anh, cũng như vậy số lượng mail, các cuộc điện báo và truyền tín hiệu qua dây cáp Chương trình chỉ dẫn trên máy tính và các chương trình phần mềm thường được dùng bằng tiếng Anh
Tiếng Đức đã là một ngôn ngữ của khoa học Nhưng ngày nay, hơn 80% các bản ghi chép khoa học được trình bày với ngôn ngữ thứ nhất là tiếng Anh.Tương tự, phân nửa kỹ thuật và khoa học trên thế giới cũng được phổ biến bằng tiếng Anh và còn được dùng trong các lĩnh vực y học, điện tử và kỹ thuật không gian
*Trong lĩnh vực kinh doanh quốc tế
Tiếng Anh trong lĩnh vực kinh doanh quốc tế ảnh hưởng đến hầu hết các lĩnh vực trong nền kinh tế Châu Âu Cũng vậy tiếng Anh hầu như tham gia hầu hết vào các thành phần lãnh đạo của các doanh nghiệp
Trong nền công nghiệpthực phẩm, các biển hiệu cho sản phẩm của họ thường được dùng bằng tiếng Anh như Made in Germany, họ không dùng các câu như Hergestellt in deutschland – câu trên có nghĩa là "sản xuất tại Đức" nhưng một dùng với tiếng Anh và một dùng với tiếng Đức Các tập đoàn của nhiều quốc gia trên thế giới thường chọn tiếng Anh như lựa chọn chính của họ Các tập đoàn như Datsun và Nissan đều gửi điện báo với ngôn ngữ tiếng Anh Như những năm 1985, 80% nhân viên của tập đoàn Mitsui có thể nói, đọc và viết được tiếng Anh, tập đoàn Toyota thì mở các lớp tiếng Anh tại chức cho nhân viên của mình Các lớp tiếng Anh đã được giữ lại ở Ả Rập Saudi cho các công nhân của tập đoàn dầu hỏaAramco và trên ba lục địa thuộc Ngân hàng Chase Manhattan
Tiếng Anh dùng như là tiếng nói chung ở nhiều nước nơi mọi người nói nhiều ngôn ngữ khác nhau Tại Ấn Độ, nơi có gần 200 ngôn ngữ khác nhau được sử dụng và chỉ có 30% người nói ngôn ngữ chính là tiếng Hindi Khi Rajiv Gandhi đọc diễn văn quốc gia sau khi mẹ ông ta bị ám sát, ông ta đã nói bằng tiếng Anh Tổ chức thương mại tự do Châu Âu làm việc chủ yếu bằng tiếng Anh mặc dù 6 nước thành viên đều không trực thuộc nước Anh
Tiếng Anh là ngôn ngữ nửa chính thức của 20 nước Châu Phi bao gồm Sierra Leone, Ghana, Nigeria, Liberia và Nam Phi Các sinh viên được dạy tiếng Anh tại trường Đại học Makerere ở Uganda, trường đại học của thành phố Nairobi ở Kenya và trường đại học của thành phố Dar es Salaam ở Tanzania Tiếng Anh là ngôn ngữ thống nhất của hội đồng thế giới Thiên chúa giáo và là một ngôn ngữ chính thức của các thế vận hội và các cuộc thi hoa hậu hoàn vũ trên thế giới
1.1.3 Sự ra đời và phát triển của điện thoại thông minh
1.1.3.1 Định nghĩa Điện thoại thông minh (tiếng Anh: Smart Phone) là điện thoại tích hợp một nền tảng hệ điều hành di động, với nhiều tính năng tiên tiến về điện toán và kết nối hơn các điện thoại di động thông thường
Các ngành công nghiệp tin rằng điện thoại thông minh đa số có một màn hình độ phân giải cao hơn so với điện thoại truyền thống và điện thoại thông minh như một máy tính di dộng, vì nó có một hệ điều hành riêng biệt vì có thể hiển thị phù hợp các trang website bình thường và người dùng có thể thay đổi một giao diện và sở hữu khả năng mở ứng dụng, tiện hơn và dễ dàng cài đặt lẫn gõ bỏ ứng dụng Điện thoại thông minh có màn hình cảm ứng độ phân giải cao, và sẵn sàng để gọi bàn phím ảo và viết chữ tay Điện thoại thông minh có thể tiến hành đa tác vụ thao tác, và có một đa phương tiện mạnh mẽ, Email, truy cập Internet và hoàn toàn có thể thay đổi các thiết bị truyền thống như MP3, MP4, PDA Điện thoại thông minh có thể thay thế xử lý các vấn đề máy tính văn phòng và các vấn đề khác, nó có thể giao tiếp với mạng duy trì một thời gian kết nối liền mạch với thời gian, đồng thời có thể vô hiệu hóa mạng bất cứ lúc nào và đồng bộ hóa dữ liệu với máy tính, máy tính xách tay và các thiết bị khác
Lịch sử Lịch sử Smart Phone khởi nghiệp từ năm 1993, cùng với thời gian, nhiều thương hiệu mới ra đời, các tên tuổi cũ chìm vào dĩ vãng Và rồi, sự xuất hiện của iPhone năm 2007 đã đưa nền công nghiệp điện tử này bước sang một trang mới Sau đó, công nghệ được cải thiện với sự hiện diện của các thiết bị di động sử dụng tín hiệu vô tuyến không dây, lướt web, giải trí… Sau đây là một cái nhìn trực quan vào sự phát triển của điện thoại thông minh trong suốt bề dày lịch sử
Mục tiêu đề tài
-Nghiên cứu công cụ đồ họa như photoshop
- Nghiên cứu lập trình trên hệ điều hành android
-Nghiên cứu ngôn ngữ lập trình java
- Nghiên cứu xây dựng giao diện với html trong android
-Nghiên cứu html, css ,javascript
-Xây dựng ứng dụng gồn client, server có khả năng giao tiếp với nhau -Ứng dụng hỗ trợ học Tiếng Anh hiệu quả như nghe câu hỏi và đọc câu trả lời
-Liên kêt với mạng xã hội như facebook.
Các bước nghiên cứu
- Nghiên cứu cơ sở lý thuyết của các công nghệ đã chọn
-Áp dụng lý thuyết vào xây dựng ứng dụng thực tiễn
-Kiểm tra tham khao các ứng dụng khác để tối ưu hóa ứng dụng
+ Kết luận và hướng phát triển
CƠ SỞ LÝ THUYẾT
Khái quát về ngôn ngữ lập trình java
2.1.1.Khái niệm về ngôn ngữ lập trình java
Ngôn ngữ lập trình java là một ngôn ngữ lập trình hướng đối tượng (OOP) và dựa trên các lớp (class) Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment) chạy
Năm 1990, Sun MicroSystems thực hiện dự án Green nhằm phát triển phần mềm trong các thiết bị dân dụng James Gosling, chuyên gia lập trình đã tạo ra một ngôn ngữ lập trình mới có tên là Oak Ngôn ngữ này có cú pháp gần giống như C++ nhưng bỏ qua các tính năng nguy hiểm của C++ như truy cập trực tiếp tài nguyên hệ thống, con trỏ, định nghĩa chồng các tác tử…
Khi ngôn ngữ Oak trưởng thành, WWW cũng đang vào thời kỳ phát triển mạnh mẽ, Sun cho rằng đây là một ngôn ngữ thích hợp cho Internet Năm 1995, Oak đổi tên thành Java và sau đó đến 1996 Java đã được xem như một chuẩn công nghiệp cho Internet
Java là ngôn ngữ lập trình hướng đối tượng nên nó cũng có 4 đặc điểm chung của các ngôn ngữ hướng đối tượng
Tính trừu tượng (Abstraction): là tiến trình xác định và nhóm các thuộc tính, các hành động liên quan đến một thực thể đặc thù, xét trong mối tương quan với ứng dụng đang phát triển
Tính đa hình (Polymorphism): cho phép một phương thức có các tác động khác nhau trên nhiều loại đối tượng khác nhau Với tính đa hình, nếu cùng một phương thức ứng dụng cho các đối tượng thuộc các lớp khác nhau thì nó đưa đến những kết quả khác nhau Bản chất của sự việc chính là phương thức này bao gồm cùng một số lượng các tham số
Tính kế thừa (Inheritance): Điều này cho phép các đối tượng chia sẻ hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại
Tính đóng gói (Encapsulation): là tiến trình che giấu việc thực thi những chi tiết của một đối tượng đối với người sử dụng đối tượng ấy
Bên cạnh đó Java còn có một số đặc tính khác: Độc lập nền (Write Once, Run Anywhere): Không giống như nhiều ngôn ngữ lập trình khác như C và C ++, khi Java được biên dịch, nó không được biên dịch sang mã máy cụ thể, mà thay vào đó là mã byte code chạy trên máy ảo Java (JVM) Điều này đồng nghĩa với việc bất cứ thiết bị nào có cài đặt JVM sẽ có thể thực thi được các chương trình Java Đơn giản: học Java thật sự dễ hơn nhiều so với C/C++, nếu bạn đã quen với các ngôn ngữ lập trình hướng đối tượng thì việc học Java sẽ dễ dàng hơn Java trở nên đơn giản hơn so với C/C++ do đã loại bỏ tính đa kế thừa và phép toán con trỏ từ C/C++
Bảo mật: Java hỗ trợ bảo mật rất tốt bởi các thuật toán mã hóa như mã hóa một chiều (one way hashing) hoặc mã hóa công cộng (public key) Đa luồng: Với tính năng đa luồng Java có thể viết chương trình có thể thực thi nhiều task cùng một lúc Tính năng này thường được xử dụng rất nhiều trong lập trình game
Hiệu suất cao nhờ vào trình thu gom rác (garbage collection), giải phóng bộ nhớ đối với các đối tượng không được dùng đến
Linh hoạt: Java được xem là linh hoạt hơn C/C ++ vì nó được thiết kế để thích ứng với nhiều môi trường phát triển
Viết ứng dụng web (J2EE): Java thường được sử dụng để xây dựng các hệ thống web lớn đòi hỏi độ bảo mật cao, số lượng người dùng lớn như ngân hàng, phần mềm quản lý bệnh viện, CRM, HRM Đối với các website nhỏ thông thường rất ít viết bằng Java
Viết ứng dụng mobile (J2ME): Trước đây nền tảng J2ME thường được sử dụng để viết game và app cho di động feature phone (file jar) và giờ đây khi smartphone Android lên ngôi Java lại tiếp tục được sử dụng để viết app và game cho nền tảng Android (file apk)
Viết ứng dụng desktop (J2SE): Các ứng dụng desktop viết bằng Java thật sự không nhiều có thể kể đến một số phần mềm như JMeter hoặc Designer Vista Lợi thế lớn nhất của ứng dụng Java là bạn chỉ viết một lần và sau đó có thể đem chương trình lên Windows, Linux hay Mac để chạy mà không cần phải viết lại Tuy nhiên do chạy trên JVM nên performance của ứng dụng thấp hơn một chút so với các ngôn ngữ như C/C++, C#
Khi bắt đầu thiết kế một ứng dụng dưới ngôn ngữ Java, bạn phải chọn kiểu cho nó là Application hay Applet
Applet: Là một chương trình ứng dụng được nhúng vào các trang web
Mã của chương trình được tải về máy người dùng từ Web server khi người dùng truy xuất đến trang web chứa nó
✓ Application: Là một chương trình ứng dụng được thực thi trực tiếp trên các máy ảo của Java Để lập trình Java bạn cần đến:
JDK (Java Development KIT): bao gồm JRE (Java Runtime Enviroment) và thư viện để phát triển
IDE (Integrated Development Environment): là ứng dụng giúp lập trình viên phát triển dễ dàng và nhanh chóng hơn Bạn có thể sử dụng Netbeans, Eclipse hoặc IntellịIDEA để phát triển.
Giới thiệu về phần mềm trên android
Android hiện là hệ điều hành di động phổ biến nhất hiện nay với thị phần trung bình hơn 50% trên toàn thế giới Bạn đã biết gì về hệ điều hành này
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.[5] Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động.[6] Chiếc điện thoại đầu tiên chạy Android được bán vào tháng 10 năm
Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép Apache Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết đượ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ị, bằng một loại ngôn ngữ lập trình Java có sửa đổi Vào tháng 10 năm 2012, có khoảng 700.000 ứng dụng trên Android, và số lượt tải ứng dụng từ Google Play, cửa hàng ứng dụng chính của Android, ước tính khoảng 25 tỷ lượt Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới, vượt qua Symbian vào quý 4 năm 2010, và được các công ty công nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh chỉnh, và giá rẻ chạy trên các thiết bị công nghệ cao thay vì tạo dựng từ đầu Bản chất mở của Android cũng khích lệ một đội ngũ đông đảo lập trình viên và những người đam mê sử dụng mã nguồn mở để tạo ra những dự án do cộng đồng quản lý Những dự án này bổ sung các tính năng cao cấp cho những người dùng thích tìm tòi hoặc đưa Android vào các thiết bị ban đầu chạy hệ điều hành khác
Android chiếm 75% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm quý 3 năm 2012, với tổng cộng 500 triệu thiết bị đã được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày Sự thành công của hệ điều hành cũng khiến nó trở thành mục tiêu trong các vụ kiện liên quan đến bằng phát minh, góp mặt trong cái gọi là "cuộc chiến điện thoại thông minh" giữa các công ty công nghệ Được xây dựng trên một nền tảng mở, và một bộ thư viện đa năng, mạnh mẽ với nguyên lý mở, Android đã nhanh chóng được cộng đồng lập trình viên di động hưởng ứng mạnh mẽ Nền tảng Android tích hợp nhiều tính năng nổi bật:
* Android là một hệ điều hành nhân Linux, đảm bảo sự tương tác với các phần cứng, quản lý bộ nhớ, điều khiển các tiến trình tối ưu cho các thiết bị di động
*Bộ ứng dụng khung cho phép sử dụng lại và thay thế các thành phần riêng lẻ
*Máy ảo Dalvik được tối ưu cho các thiết bị di động, chạy các ứng dụng lập trình trên ngôn ngữ Java
*Các thư viện cho phát triển ứng dụng mã nguồn mở bao gồm SQLite, WebKit, OpenGL và trình quản lý đa phương tiện
* Hỗ trợ các chuẩn đa phương tiện phổ biến, thoại trên nền GSM, Bluetooth EDGE, 3G và Wifi
*Hỗ trợ Camera, GPS, la bàn, máy đo gia tốc…
*Bộ phát triển ứng dụng SDK đầy đủ gồm thiết bị giả lập, công cụ sửa lỗi, tích hợp với Eclipse SDK
Android cung cấp một tập hợp đầy đủ các phần mềm cho thiết bị di động bao gồm: hệ điều hành, các khung ứng dụng và các ứng dụng cơ bản.
Giao diện Error! Bookmark not defined 2.4.Đặc điểm
Giao diện người dùng của Android dựa trên nguyên tắc tác động trực tiếp, sử dụng cảm ứng chạm tương tự như những động tác ngoài đời thực như vuốt, chạm, kéo dãn và thu lại để xử lý các đối tượng trên màn hình
Hình 1.2.Giao diện người dùng android 5.0 trên điện thoại
Các thiết bị Android sau khi khởi động sẽ hiển thị màn hình chính, điểm khởi đầu với các thông tin chính trên thiết bị, tương tự như khái niệm desktop trên máy tính để bàn Màn hính chính Android thường gồm nhiều biểu tượng (icon) và tiện ích (widget) Giao diện màn hình chính của Android có thể tùy chỉnh ở mức cao, cho phép người dùng tự do sắp đặt hình dáng cũng như hành vi của thiết bị theo sở thích
Những ứng dụng do các hãng thứ ba có trên Google Play và các kho ứng dụng khác còn cho phép người dùng thay đổi "chủ đề" của màn hình chính, thậm chí bắt chước hình dáng của hệ điều hành khác như Windows Phone hay iOS Phần lớn những nhà sản xuất, và một số nhà mạng, thực hiện thay đổi hình dáng và hành vi của các thiết bị Android của họ để phân biệt với các hãng cạnh tranh
Hình 1.3 Bản cập nhật lớn mới nhất là Android 5.0 Lolipop
Android được xây dựng từ dưới đi lên cho phép người phát triển tạo các ứng dụng di động hấp dẫn với đầy đủ các điểm mạnh của các thiết bị cầm tay hiện có Android hoàn toàn mở, một ứng dụng có thể gọi tới bất kể một chức năng lõi của điện thoại như tạo cuộc gọi, gửi tin nhắn hay sử dụng máy ảnh, cho phép người phát triển tạo phong phú hơn, liên kết hơn các tính năng cho người dùng Android được xây dựng trên nhân Linux mở Thêm nữa, nó sử dụng một máy ảo mà đã được tối ưu hóa bộ nhớ và phần cứng với môi trường di động Android là một mã nguồn mở, nó có thể được mở rộng để kết hợp tự do các công nghệ nổi trội Nền tảng này sẽ tiếp tục phát triển bởi cộng đồng phát triển để tạo ra các ứng dụng di động hoàn hảo
*Tính ngang hàng của các ứng dụng
Với Android, không có sự khác nhau giữa các ứng dụng điện thoại cơ bản với ứng dụng của bên thứ ba Chúng được xây dựng để truy cập như nhau tới trên nền tảng Android, người dùng có thể đáp ứng đầy đủ các nhu cầu mà họ thích Chúng ta có thể đổi màn hình nền, kiểu gọi điện thoại, hay bất kể ứng dụng nào Chúng ta thậm chí có thể hướng dẫn điện thoại chỉ xem những ảnh mình thích
*Dễ xây dựng ứng dụng
Android cung cấp bộ thư viện giao diện lập trình ứng dụng đồ sộ và các công cụ để viết các ứng dụng phức tạp Ví dụ, Android có thể cho phép người phát triển biết được vị trí của thiết bị và cho phép các thiết bị giao tiếp với nhau để có thể tạo nên mạng xã hội chia sẻ ngang hàng rộng khắp Thêm nữa, Android còn bao gồm một bộ công cụ đầy đủ giúp cho việc phát triển trở nên dễ dàng.
So sánh vói các hệ điều hành cùng loại khác
Android Google Android là nền tảng mở,cho phép người dùng có thể tùy biến nền tảng theo ý thích, hơn nữa lại có một Liên minh thiết bị cầm tay mở hậu thuẫn, Google
Android đang là đối thủ xứng tầm của iPhone của Apple Google đang tích cực mở rộng cộng đồng phát triển các ứng dụng cho Android Bộ công cụ phát triển phần mềm (SDK) đầy đủ, hỗ trợ đa nền
(Linux, Windows hay Mac OS) do chạy trên máy ảo Java Thư viện ngày càng hoàn thiện, dễ dàng cho người lập trình
Hệ điều hành phân mảnh , không thống nhất trên các thiết bị,giới hạn về độ “mở” và nhiều lỗ hổng bảo mật là những yếu điểm của Android
Có thư viện API khá giống với API trên
Win32, các công cụ hỗ trợ lập trình đầy đủ với Visual Studio, điều này làm cho những người phát triển trên Win32 không
Sự có mặt của iPhone và Android là hai trở ngại lớn với Windows Mobile Hai nền tảng này mất công tìm hiểu lại các API và các công cụ lập trình đang hoàn thiện và được người dùng rất ưa chuộng
Iphone Màn hình cảm ứng đa điểm: iPhone sử dụng hoàn toàn bằng cảm iPhone phải thực hiện trên hệ ứng và không sử dụng các nút Với Iphone ta có thể điều khiển trên màn hình kể cả việc trượt của các ngon tay.Ta có thể phóng to ảnh bằng cách trượt hai ngón tay ra xa và thu nhỏ bằng cách ngược lại
Bộ cảm nhận gia tốc: Những điều này làm giảm tính cạnh phản ứng nhanh chóng của bộ cảm nhận gia tốc thay đổi độ phân giải màn hình từ dọc sang ngang tự động khi ta đặt điện thoại nằm ngang Điều này làm sinh động thêm cho các trò chơi Âm thanh, hình ảnh hoàn hảo
Việc lập trình trên cho iPhone phải thực hiện trên điều hành Mac, do đó không phải ai cũng có thể lập trình hình cho Iphone Hơn thế ,nếu muốn đưa chương trifng ra má thật phải lập trình phải trả một khoản phí lập trình,điều này làm giảm tính cạnh tranh so với các đối thủ khác.
Kiến trúc và các thành phần
Android bao gồm bốn thành phần sau
* Thư viện và các giao diện lập trình ứng dụng
"Understanding Android" là cách mà ta tiếp cận lập trình Android và thấu hiểu kiến trúc hệ thống của nó Chúng ta có thể không cần hiểu rõ cấu trúc của một HDH nhưng Chúng ta vẫn có thể lập trình một ứng dụng trên HDH đó, đây là điều mà nhà sản xuất muốn khi release SDK với một framework có sẵn của họ Như chúng ta biết điều này cũng có mặt tốt và xấu Framework là một tầng cao cấp dành cho lập trình viên, nó đều có giới hạn của nó, chúng ta có thể chỉ có thể lập trình những ứng dụng phổ biến nhưng không nên tiến tới những ứng dụng cao cấp đi sâu vào hệ thống của HDH Theo cách của mình, trước khi bắt đầu học Android, chúng ta nên nghiên cứu qua bản thân HDH Android, chúng ta không cần phải hiểu rõ nó như thể nào, mục đích quan trọng nhất của chúng ta là có cái nhìn chung và toàn diện nhất về Android
Bao gồm HDH Android đầy đủ tính năng, các ứng dụng và các tầng trung gian để developer có thể mở rộng, tùy chỉnh hoặc thêm vào các component của họ
Có 4 tầng cơ bản trong HDH Android: Application Framework, Android Runtime, Native Libraries, Linux Kernel Mỗi tầng làm việc đều nhờ sự giúp đỡ của tầng bên dưới
2.6.1.2 Tầng Linux Kernel Đây là nhân của HDH Android, mọi xử lý của hệ thống đều phải thông qua tầng này Linux Kernel cung cấp các trình điều khiển thiết bị phần cứng (driver) như: camera, USB, Wifi, Bluetooth, Display, Power Management Android dựa trên Linux phiên bản 2.6 lựa chọn các tính năng cốt lõi như bảo mật, quản lý bộ nhớ, quản lý tiến trình, mạng stack và các trình điều khiển phần cứng Kernel hoạt động như một lớp trừu tượng giữa phần cứng và phần mềm còn lại của hệ thống
• System C library - có nguồn gốc từ hệ thống thư viện chuẩn C (libc), điều chỉnh các thiết bị nhúng trên Linux
• Media Libraries - mở rộng từ PacketVideo's OpenCORE; thư viện hỗ trợ playback và recording của nhiều định dạng video và image 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 - Android dùng lại 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)
• 3D libraries - Thư viện 3D dựa trên OpenGL ES 1.0 API, có nâng cấp tang tốc "hardware 3D acceleration"
• FreeType - render bitmap và vector font
• SQLite - quản lý database của ứng dụng
Mỗi ứng dụng Android chạy trên một proccess riêng của Dalvik VM (máy ảo) 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ị
Máy ảo Dalvik thực thi các file mang định dạng dex (Dalvik Excutable), định dạng này là định dạng đã được tối ưu hóa để chỉ chiếm một vùng nhớ vừa đủ xài và nhỏ nhất có thể VM chạy các class (đã được compile trước đó bởi 1trình biên dịch ngôn ngữ Java), sở dĩ VM chạy được các class này là nhờ chương trình DX tool đã convert các class sang định dạng dex
2.6.1.5 Tầng Application Framework Đây là tầng mà 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 có sẵn mà Google đã viết để sử dụng các tính năng của phần cứng mà không cần hiểu cấu trúc bên dưới
Bằng cách cung cấp một nền tảng phát triển mở, Android cho các nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo
Nhà phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập, các dịch vụ chạy nền, thiết lập hệ thống báo thức, thêm các thông báo để các thanh trạng thái, và nhiều, nhiều hơn nữa
Tất cả các ứng dụng thường gồm một bộ các dịch vụ và hệ thống cơ bản sau:
• View UI dùng để xây dựng layout của ứng dụng bao gồm: list view, text field, button, dialog, form
• Content Providers cho phép các ứng dụng có thể truy cập dữ liệu từ các ứng dụng khác (như ứng dụng của ta có thể lấy thông tin Contacts của điện thoại Android), hoặc để chia sẻ dữ liệu của riêng ứng dụng
• Resource Manager cung cấp cách thức truy cập đến non-code resources như các asset, graphic, image, music, video
• Notification Manager cho phép tất cả các ứng dụng hiển thị thong báo của mình trên HDH
• Activity Manager quản lý vòng đời của các ứng dụng
2.6.2 Hệ điều hành Ở góc nhìn của người dùng ta có thêm tầng application (là ứng dụng do chúng ta viết), sau đây là sơ đồ tổng quát như hình 2.2.3:
Hình 1.4 Kiến trúc tổng quát
Android sử dụng nhân linux 2.6 làm nhân cho các dịch vụ hệ thống như bảo mật, quản lý bộ nhớ, quản lý tiến trình (xử lý tiến trình ,đa luồng), ngăn xếp mạng và trình điều khiển thiết bị ( giao tiếp USB, giao tiếp hồng ngoại , không dây,…) Nhân Linux này cũng có vai trò như một lớp trừu tượng giữa phần cứng và phần mềm
Tuy được phát triển dựa vào nhân Linux nhưng thực ra nhân Linux đã được nâng cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầm tay như hạn chế về bộ xử lý ,dung lượng bộ nhớ,kích thước màn hình, nhu ầu kết nối mạng không dây
2.6.2.1 Các thành phần của nhân Linux
Hình 1.5 Linux kemel Display Driver : Điều khiển việc hiển thị lên màn hình cũng như thu nhận những điều khiển của người dung lên màn hình( di chuyển , cảm ứng…)
Camera Driver : Điều khiển hoaky động của camera, nhận luồng dữ liệu từ camera về
Bluetooth Driver: Điều khiển thiết bị phát và thu song Bluetooth
USB Driver : Điều khiển bàn phím
Wifi Driver: Chịu trách nhiệm vè việc thu phát song wifi
Audio Driver: Điều khiển các bộ thu phí phát âm thanh ,giải mã các tín hiệu số và ngược lại
Power Management: Giám sát việt tiêu thụ điện năng
M-system Driver: Quản lý việc đọc ghi… lên các thiết bị nhớ như thẻ SD,flash
Binder IPC Driver : Chịu trách nhiệm về việc kết nối và liên lạc với mạng vô tuyến như CDMA,
GSM, 3G, 4G, E để đảm bảo những chức năng tryền thông được thực hiện
Hình 1.6 Libraries Android cung cấp một số các APIs cho phát triển ứng dụng Danh sách các API cơ bản sau được cung cấp bởi tất cả các thieestbij trên nền Android
- android.util: tiện ích cơ bản bao gồm nhiều lớp mức thấp như là các lớp quản lý (List,Stack ) lớp xử lý chuỗi, lớp xử lý XML
- android.os :Gói hệ điều hành cung cấp truy cập đến các dịch vụ cơ bản như là chuyển tin nhắn, thông tin chéo, đồng hồ và gỡ lỗi - android.graphics Cung cấp các lớp đồ họa mức thấp thực hiện các chức năng đồ họa, màu, vẽ cơ bản
- android.text :Công cụ hiển thị và xử lý văn bản
- android.database :Cung cấp các lớp mức thất bắt buộc cho việc điều khiển cursor khi làm việc với các cơ sở dữ liệu
- android.content :Các giao tiếp lập trình nội dung được dùng để quản lý truy cập dữ liệu và xuất bản bằng cách cung cấp các dịch vụ thao tác với tài nguyên, Content Provider, và các gói
Các thành phần của ứng dụng
Trong chương này sẽ giới thiệu các công cụ lập trình cho Android (Android Development Tools) Chúng ta sẽ dần làm quen với Android Studio và Android Development Tool plug-in, thông qua Android SDK và công cụ của nó, chạy một ứng dụng Android trên Emulator(tạm dịch là trình giả lập giao diện của Android trên PC) Với những kĩ năng đó trong tay, chúng ta sẽ tìm hiểu các gói Java packages được cung cấp trong SDK giúp nâng cao khả năng lập trình trên Android
2.3 Môi trường lập trình trong Android
Android SDK, viết tắt của Android Software Development Kit, có thể gọi là “công cụ phát triển phần mềm” mà cụ thể ở đây là phát triển ứng dụng cho AndroidOS Đến đây thì chắc các chúng ta cũng đã hiểu đơn giản Google Adroid SDK là bộ công cụ được chính Google xây dựng và phát hành miễn phí đến giới Developer để họ dễ dàng xây dựng và phát triển các ứng dụng chạy
TRƯỜNG LẬP TRÌNH
GIỚI THIỆU
Trong chương này sẽ giới thiệu các công cụ lập trình cho Android (Android Development Tools) Chúng ta sẽ dần làm quen với Android Studio và Android Development Tool plug-in, thông qua Android SDK và công cụ của nó, chạy một ứng dụng Android trên Emulator(tạm dịch là trình giả lập giao diện của Android trên PC) Với những kĩ năng đó trong tay, chúng ta sẽ tìm hiểu các gói Java packages được cung cấp trong SDK giúp nâng cao khả năng lập trình trên Android
2.3 Môi trường lập trình trong Android
Android SDK, viết tắt của Android Software Development Kit, có thể gọi là “công cụ phát triển phần mềm” mà cụ thể ở đây là phát triển ứng dụng cho AndroidOS Đến đây thì chắc các chúng ta cũng đã hiểu đơn giản Google Adroid SDK là bộ công cụ được chính Google xây dựng và phát hành miễn phí đến giới Developer để họ dễ dàng xây dựng và phát triển các ứng dụng chạy được trên Android OS Android SDK có các đặc tính sau:
• Được phát triển và cung cấp miễn phí
• Truy cập đến phần cứng Wi-Fi
• GSM, EDGE và tính năng mạng 3G cho phép việc chuyển dữ liệu, gọi điện hay gửi tin SMS trong mạng di động
• Gói API toàn diện cho các dịch vụ nền tảng ví dụ như GPS
• Truy cập toàn bộ phần cứng điều khiển đa phương tiện như chơi nhạc, ghi âm hay sử dụng microphone và camera
• Chia sẻ dữ liệu trong kho dữ liệu
• Tích hợp trình duyệt dựa trên bộ WebKit (mã nguồn mở)
• P2P hổ trợ sử dung Google Talk
• Hỗ trợ tốt đồ họa 3D nhờ sử dụng OpenGL ES
Android SDK cần phải được cài đặt để xây dựng các ứng dụng Android Android SDK bao gồm tài liệu tích hợp HTML_base lõi chính của Javadoc để thể hiện các gói và lớp trong Java
Một trong những thành phần quan trọng của Android là máy ảo Dalvik Thay vì sử dụng máy ảo Java như trước kia Android sử dùng máy ảo của riêng nó được thiết kế để bảo đảm rằng đa ứng dụng có thể chạy mượt mà trên một thiết bị di động
Máy ảo Dalvik sử dụng lõi Linux để xử lý các chức năng ở mức thấp bao gồm bảo mật, các tiến trình, các luồng và quản lý vùng nhớ Nó cũng có thể viết bằng ứng dụng C/C++ để chạy trực tiếp lên lõi Linux bên dưới Giữa phần cứng và các dịch vụ hệ thống được quản lý bởi máy ảo Dalvik, nó là một thành phần ở giữa Bằng cách sử dụng máy ảo này để chạy ứng dụng, các nhà phát triển hoàn toàn không phải bận tâm gì về các phần cứng bên dưới Khi máy ảo này chạy nó sẽ tạo ra tập tin có đuôi là dex, tập tin này được SDK tạo ra bởi sự chuyển đổi từ các lớp biên dịch ngôn ngữ Java
3.3 Các gói java cần thiết
• java.lang —gói chứa các lớp lõi của Java
• java.net —kết nối mạng
• java.util _ chứa các lớp tiện ích Bao gồm: Log thường được dùng đề viết LogCat
• java.text —tiện ích sử lý văn bản
• java.math —các lớp toán học
• javax.net —các lớp mạng
• javax.security —Security-related classes
• javax.xml —các lớp liên quan đến DOM-based XML
• org.apache.* — các lớp liên quan đến HTTP-related
• org.xml —các lớp liên quan đến SAX-based XML
Các gói dùng cho lập trình Android:
• Android.app—Android application model access
• Android.content—truy xuất dữ liệu trong Android
• Android.net—bao gồm Uri class dùng cho việc truy xuất các nội dung khác
• Android.opengl—các lớp OpenGL
• Android.os—truy cập ở mức độ hệ thông đến môi trường Android
• Android.provider—các lớp liên quan đến ContentProvider
• Android.telephony—khả năng truy cập Telephony
• Android.util—tập các tiện thao tác trên văn bản,bao gồm XML
• Android.view—thành phần UI (giao diện người dùng)
• Android.widget—thành phần UI mức độ cao hơn
Trong đó các gói gần như là lõi của mọi ứng dụng trên Android đó là Android.app, Android.view và Android.content
3.4 Thành phần chính của android studio khi tạo ứng dungjtreen android
• Môi trường phát triển Rich Java bao gồm trình biên dịch, class autocompletion, và tích hợp Javadoc
• Quản lý và chạy Android Emulator profile
• The Dalvik Debug Monitoring Service (DDMS)
• Khung nhìn các tiến trình (Thread and heap views)
• Quản lý Hệ thống tập tin giao diện (Emulator filesystem management)
• Điều khiển dữ liệu và hội thoại (Data and voice network control)
• Điều khiển giao diện (Emulator control)
• Ghi lỗi hệ thống và ứng dụng (System and application logging)
3.5 Thành phần quan trọng trong một android project
• Activity (Android.app.Activity): đây là lớp khởi tạo giao diện ứng dụng nội bộ trên Android tương tư như MIDlet trong J2ME
• Service (Android.app.Service): cung cấp các dịch vụ liên quan đến client/service Một Service sẽ chạy ngầm bên dưới, sau đó các client (Activity) sẽ kết nối và truy xuất các hàm trên dịch thông qua Interface class
• Broadcast receiver (Android.content.BroadcastReceiver): đây là một ứng
• dụng chạy ngầm dùng để đọc và cập nhật thông tin trên UI, ví dụ như cập nhật sự thay đỗi giờ, pin
• Content Provider: cung cấp chức năng truy vấn dữ liệu giữa các ứng dụng của Android
• 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 1 Activity hay Service để thực hiện công việc mà chúng ta mong muốn
3.6 Chu kỳ sống của ứng dujujng android
Một tiến trình Linux gói gọn một ứng dụng Android đã được tạo ra cho ứng dụng khi codes cần được xây dựng, khởi chạy và sẽ còn chạy cho đến khi:
• Hệ thống cần lấy lại bộ nhớ mà nó chiếm giữ cho các ứng dụng khác Một sự khác thường và đặc tính cơ bản của Android là thời gian sống của tiến trình ứng dụng không được điều khiển trực tiếp bởi chính nó Thay vào đó, nó được xác định bởi hệ thống qua một kết hợp của:
• Những phần của ứng dụng mà hệ thống biết đang chạy
• Những phần đó quan trọng như thế nào đối với người dùng
• Bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống
3.6.1 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
Bên trong hệ thống các activity được quản lý như một activity stack Khi một Activity mới được start, nó được đặt ở đỉnh của stack và trở thành activity đang chạy activity trước sẽ ở bên dưới activity mới và sẽ không thấy trong suốt quá trình activity mới tồn tại.Nếu người dùng nhấn nút Back thì activity kết tiếp của stack sẽ di duyển lên và trở thành active
3.6.3 Các trạng thái của chu kỳ sống
Hình 2.5 Chu kỳ sống của Activity Một Activity chủ yếu có 4 chu kỳ chính sau:
• Active hoặc running: Khi Active là được chạy trên màn hình Activity này tập trung vào những thao tác của người dùng trên ứng dụng
• Paused: Activity là được tạm dừng (paused) khi mất focus nhưng người dung vẫn trông thấy Có nghĩa là một Activity mới ở trên nó nhưng không bao phủ đầy màn hình Một Activity tạm dừng là còn sống nhưng có thể bị kết thúc bởi hệ thống trong trường hợp thiếu vùng nhớ
• Stopped: Nếu nó hoàn toàn bao phủ bởi Activity khác Nó vẫn còn trạng thái và thông tin thành viên trong nó Người dùng không thấy nó và thường bị loại bỏ trong trường hợp hệ thống cần vùng nhớ cho tác vụ khác
• 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 đó
3.6.4 Chu kỳ sống của ứng dụng
Trong một ứng dụng Android có chứa nhiều thành phần và mỗi thành phần đều có một chu trình sống riêng Và ứng dụng chỉ được gọi là kết thúc khi tất cả các thành phần trong ứng dụng kết thúc Activity là một thành phần cho phép người dùng giao tiếp với ứng dụng Tuy nhiên, khi tất cả các Activity kết thúc và người dùng không còn giao tiếp được với ứng dụng nữa nhưng không có nghĩa là ứng dụng đã kết thúc Bởi vì ngoài Activity là thành phần có khả năng tương tác người dùng thì còn có các thành phần không có khả năng tương tác với người dùng như là Service, Broadcast receiver Có nghĩa là những thành phần không tương tác người dùng có thể chạy background dưới sự giám sát của hệ điều hành cho đến khi người dùng tự tắt chúng
3.6.5 Các sự kiện trong chu kỳ sống của ứng dụng
LẬP TRÌNH TRÊN ANDROID
Intent là cầu nối giữa các Activity (ứng dụng Android thường bao gồm nhiều Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc khác nhau) Intent chính là người đưa thư, giúp chúng ta triệu gọi cũng như truyền các dữ liệu cần thiết để thực hiện một Activity từ một Activity khác
Thực ra Intent là một cấu trúc dữ liệu được mô tả trong
• Các Action định nghĩa sẵn:
Về nguyên tắc chúng ta có thể đặt tên action của một intent là bất cứ thứ gì theochuẩn đặt tên thông thường, hay thậm chí dùng luôn hằng action đã định nghĩa sẵn như ACTION_VIEW (hay “Android.intent.action.VIEW”) Cái tên VIEW thực chất chỉ là một tên gợi tả, chúng ta có thể dùng nó với mục đích thực hiện một activity để … gửi mail!
Tuy nhiên điều đó rõ ràng là rất “ngớ ngẩn” Thay vào đó ta hãy dùng ACTION_SEND hay ACTION_SENDTO
Việc đặt tên action cho intent đúng tên gợi tả còn có một ý nghĩa khác đó là app của chúng ta có thể được triệu gọi từ một app khác Ví dụ chúng ta viết một app có activity đáp ứng intent ACTION_SEND và để chia sẻ một bức ảnh lên trang web của chúng ta (giống như ta làm với Facebook, Flickr etc.)
Khi đó có thể app của chúng ta sẽ là một lựa chọn chia sẻ ảnh của người dùng điện thoại
3.1.2 Sử dụng Intents khởi động cho Activities:
Phổ biến nhất trong Intents là việc liên kết dữ liệu giữa các thành phần ứng dụng, Intents được dùng để bắt đầu, dừng lại và chuyển tiếp giữa các
Activities trong ứng dụng Để mở một ứng dụng khác trong một ứng dụng có sẵn thì chúng ta gọi startActivity như sau: startActivity(myIntent); Để theo dõi thông tin phản hồi từ phương thức mở ta sử dụng phương thức : startActivityForResult(Intent)
Hình 34 3.1.3 Intent không tường minh thực thi Activity:
Trong trường hợp này intent không chỉ định một lớp cụ thể mà thay vào đó dùng các dữ liệu khác (action, data, type, etc.) và để hệ thống tự quyết định xem lớp nào (app nào) sẽ thích hợp để đáp ứng intent đó
Thông tin action và category của activity trong một app đáp ứng intent đó phải được khai báo trong Manifest của app (AndroidManifest.xml) dưới dạng Intent-filter (tất nhiên nếu chúng ta muốn gọi một built-in action thì ta không cần quan tâm đến vấn đề này)
Ví dụ: chúng ta muốn cho phép người dùng thực hiện cuộc gọi từ một ứng dụng, hơn là thực hiện quay số mới, chúng ta có thể sử dụng một ý định ngầm yêu cầu hành động ("quay số") được thực hiện trên một điện thoại như trong đoạn mã dưới đây: if (somethingWeird && itDontLookGood) {
Intent intent newIntent(Intent.ACTION_DIAL,Uri.parse(“tel:555-2368”)); startActivity(intent);
3.1.4 Intent tường minh thực thi Activity
Như đã trình bày ở phần trên, intent có thể dùng thuộc tính phụ component để chỉ định đích danh tên lớp sẽ thực thi Activity Để thực hiện điều này, lớp Intent cung cấp các hàm đó là setComponent(ComponentName) và setClass(Context,Class) và setClassName(Context,String) setClassName(String, String)
Chỉ được dùng để gọi các Activities trong cùng một app
Intent intent = new Intent(); intent.setClassName("ten_package", "ten_lop_ben_trong_package"); startActivity(intent);
3.1.5 Sử dụng Intents gửi đi thông điệp ra ngoài ứng dụng hoặc Activity:
Là một cơ chế truyền tin cấp hệ thống, có khả năng gửi tin đến một tiến trình Chúng ta có thể sử dụng Broadcast Receivers để nhận, để trả lời hoặc phát đi các dữ liệu mà chúng ta muốn
Broadcast Intent dùng để thông báo cho các ứng dụng khác các sự kiện của hệ thống hay ứng dụng, mở ra các mô hình lập trình hướng sự kiện giữa các ứng dụng Broadcast Intent giúp cho ứng dụng của chúng ta cởi mở hơn bởi vì nó phát đi một sự kiện bằng cách sử dụng Intent
3.1.5.1 Cách thực hiện gửi dữ liệu dùng Intent trong Activity:
Broadcast Intent thực tế khá đơn giản, trong các thành phần ứng dụng của chúng ta, chúng ta xây dựng một Intent mà chúng ta muốn quảng bá bằng cách sử dụng sentBroadcast để gửi đi
Intent intent = new Intent(NEW_LIFEFORM_DETECTED); intent.putExtra(“lifeformName”, lifeformType); intent.putExtra(“longitude”, currentLongitude); intent.putExtra(“latitude”, currentLatitude); sendBroadcast(intent);
3.1.5.2 Nhận dữ liệu với Broadcast Receiver:
BroadcastReceivers được dùng để nhận dữ liệu từ Broadcast Intents, để kích hoạt BroadcastReceivers thì nó cần phải được đăng ký hoăc khai trong code hoặc trong Mainifest và chúng ta cần phải sử dụng Intents Filter để xác định Intent được phép gửi dữ liệu đến
Ví dụ: khởi tạo mới một BroadcastReceivers import Android.content.BroadcastReceiver; import Android.content.Context; import Android.content.Intent; public class MyBroadcastReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
//TODO: React to the Intent received
Thông thường thì BroadcastReceivers sẽ cập nhật nội dung, khởi động dịch vụ , cập nhật người dùng cuối, hoặc thông báo người sử dụng bằng cách sử dụng quản lý Notification Manager
Ví dụ đoan code sau đây cho thấy cách đăng ký
BroadcastReceivers trong code hoặc trong Mainifest public class LifeformDetectedBroadcastReceiver extends
BroadcastReceiver { public static final String BURN“com.paad.alien.action.BURN_IT_WITH_FIRE”;
@Override public void onReceive(Context context, Intent intent) {
// Get the lifeform details from the intent
String type = intent.getStringExtra(“type”); double lat = intent.getDoubleExtra(“latitude”, 0); double lng = intent.getDoubleExtra(“longitude”, 0);
Location loc = new Location(“gps”); loc.setLatitude(lat); loc.setLongitude(lng); if (type.equals(“alien”)) {
Intent startIntent = new Intent(BURN, data); startIntent.putExtra(“latitude”, lat); startIntent.putExtra(“longitude”, lng); context.startActivity(startIntent);
• Đăng ký Broadcast Receivers trong file Manifest:
• Đăng ký Broadcast Receivers sử dụng code:
// tạo và đăng ký broadcast receiver
Adapter là cầu nối để liên kết dữ liệu với giao diện người dùng
3.2.1 Một số Adapter : Để sử dụng được Adapter ta phải kế thừa lớp trừu tượng AdapterView, và chúng ta cũng có thể tạo ra một Adapter tùy ý bằng cách này ArrayAdapter: là một lớp chung để gắn các Adapter Views vào một mảng đối tượng, theo mặc định thì ArrayAdapter liên kết cá giá trị toString của từng đối tượng ra TextView trong layout, chúng ta có thể thay thế TextView bằng các điều khiển khác phức tạp hơn bằng cách sử dụng kỹ thuật Overriding phương thức getView() SimpleCursorAdapter : dùng để liên kết các View với con trỏ để trả về câu truy vấn cho Content Provider, nó được định nghĩa trong file XML layout và liên kết các giá trị ràng buộc bên trong mỗi cột kết quả với View trong layout
PHÂN TÍCH PHẦN MỀM VÀ XÂY DỰNG ỨNG DỤNG
Chức năng chính
Xây dựng phần mềm học tiếng anh
-Admin có quyền cao nhất ,tòan quyền đối với tất cả
-Mod có quyền thấp hơn admin mổ bậc
-Các admin thứ cấp khác như: quản lý user, quản lý liên hệ , quản lý dữ liệu có những quyền hạn nhất định
Mô hình hoạt động client- server
Biểu đồ usercse thể hiện số lượng chức năng người dung có thể tương tác trực tiếp
Khách hàng dùng tài khoản cá nhân facebook để đăng nhập vào chương trình và bắt đầu sử dụng
Hình 2.6 Mô hình biểu đồ người sử dụng
Tài khoản Có Đăng nhập
Client
Người dùng phải đăng nhập vào để có thể sử dụng được ứng dụng
Kết nối luôn được phải kiểm tra để đảm bảo ứng dụng hoạt động ổn định
4.3.1 Danh sách các màn hình
STT Tên màn hình Ý nghĩa/ Ghi chú
1 Trang login Gồm các chức năng về đăng nhập cho người dùng trước khi sử dụng chương trình
2 Trang chính Gồm: Mennu tùy chọn các chức năng khác mặc định hiển thị thông tin,cá nhân
3 Trang thông tin cá nhân
Hiển thị các thông tin cá nhân của người dùng cùng với các tùy chỉnh
4 Trang level Gồm các level hiện thị trên màn hình
5 Trang câu hỏi và trả lời Hiển thị các câu hỏi và câu trả lời trên màn hình
Bảng 4.1: Danh sách các màn hình
Trang bắt đầu đăng nhập sử dụng ứng dụng và cung cấp thông tin về ứng dụng -Giao diện
Hình 2.7 Màn hình đăng nhập Chi tiết màn hình
Sử dụng sliding layout với hai scrollview có thể ẩn hiện thay thế nhau
- scrollview tài khoản người dùng mang ý nghĩa hiển thị các tùy chọn cho người dùng như đăng ký ,đăng nhập
Khi bắt đầu vào ứng dụng và kết nối với người dùng xong sẽ màn hình chính bắt đầu để vào ứng dụng học tiếng anh
Hình 2.8 Ảnh màn hình home
Màn hình chính sử dụng để bắt đầu việc học tiếng anh của người sử dụng
Hình 2.9 Màn hình menu-left
Hình 3.1 Trang màn hình level
-Khi bắt đầu được chương trình thì:
-Hiển thị trên màn hình những level có sẵn cho người sử dụng
-Sẽ lần lượt đi từng level Ví dụ như phải bắt buộc đi từ level 1 đếm 10 …
4.4.5.Trang câu hỏi và trả lời
Hình 3.2 Trang màn hình câu hỏi và trả lời
*Mô tả màn hình câu hỏi
-Khi người dùng vào level rồi thì:
+ Hiển thị câu hỏi và câu trả lời đã cài đặt sẵn
+Phần hỏi khi bấm vào biểu tượng loa bên góc phải màn hình thì sẽ đọc câu hỏi cho người sử dụng
+ Người dùng phải bấm bào biểu tượng micro để đọc câu trả lời của mình lên
NẾU :- Đúng thì sẽ chuyển sang level tiếp theo
-Sai thì phải trả lời lại đến khi đúng mới chuyển sang level tiếp theo.
Danh sách các màn hình
Sau quá trình nghiên cứu tìm hiểu và thực hiện em đã xây dựng thành công ứng dụng phục vụ cho việc học Tiếng Anh
Về mặt lý thuyết đồ án trình bày một số nền tảng nghiên cứu về nền tảng android, so sánh về các nền tảng trên điện thoại khác để thấy được ưu nhược điểm của chúng
Về thực hiện ứng dụng đã đã có khả năng áp dụng trong thực tế ,mang lại lợi ích cho người sử dụng
-Ứng dụng đã hoàn thành các yêu cầu đặt ra
-Chương trình cung cấp tương đối đầy đủ đối với việc học Tiếng Anh -Chương trình có giao diện đẹp mắt,dễ sử dụng
- Chương trình bắt buộc người dùng phải có kết nối internet từ điện thoại
- Chương trình chưa được sử dụng offline
- Tốc độ chương trình chưa được tối ưu
- Chưa thử chạy trên hệ thống lớn
- Chương trình có hể phát triển trên nền tảng khác như windows phone, IOS
- Thêm các tính năng khác như trang từ điển,trang video …
KÊT LUẬN VÀ HƯỚNG GIẢI QUYẾT
Sau quá trình nghiên cứu tìm hiểu và thực hiện em đã xây dựng thành công ứng dụng phục vụ cho việc học Tiếng Anh
Về mặt lý thuyết đồ án trình bày một số nền tảng nghiên cứu về nền tảng android, so sánh về các nền tảng trên điện thoại khác để thấy được ưu nhược điểm của chúng
Về thực hiện ứng dụng đã đã có khả năng áp dụng trong thực tế ,mang lại lợi ích cho người sử dụng
-Ứng dụng đã hoàn thành các yêu cầu đặt ra
-Chương trình cung cấp tương đối đầy đủ đối với việc học Tiếng Anh -Chương trình có giao diện đẹp mắt,dễ sử dụng
- Chương trình bắt buộc người dùng phải có kết nối internet từ điện thoại
- Chương trình chưa được sử dụng offline
- Tốc độ chương trình chưa được tối ưu
- Chưa thử chạy trên hệ thống lớn
- Chương trình có hể phát triển trên nền tảng khác như windows phone, IOS
- Thêm các tính năng khác như trang từ điển,trang video …