HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG ĐỒ ÁN MÔN HỌC Phát Triển Ứng Dụng Trên Thiết Bị Di Động Đề tài: ỨNG DỤNG “DỰ BÁO THỜI TIẾT” TRÊN Ngày na
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
ĐỒ ÁN MÔN HỌC
Phát Triển Ứng Dụng Trên Thiết Bị Di Động
Đề tài: ỨNG DỤNG “DỰ BÁO THỜI TIẾT” TRÊN
Ngày nay, nhu cầu đi lại, tổ chức sự kiện của con người ngày càng tăngcao.Vì vậy, nếu ta nắm bắt được tình hình thời tiết như lượng mưa, độ ẩm,nhiệt độ … thì sẽ dễ dàng sắp xếp cũng như tổ chức sự kiện, cuộc vui chơi mộtcách tốt nhất.Hiểu được nhu cầu cần thiết đó, nhóm đã quyết định xây dựngứng dụng “Dự báo thời tiết” để giúp người dùng có thể cập nhật tình hình thờitiết một cách nhanh nhất, mới nhất và chính xác nhất để người dùng có thể dễdàng có những quyết định tốt nhất cho những dự định sắp đến của mình
Đồ án “Dự báo thời tiết” gồm 5 chương:
Chương 1: Giới thiệu chung: Giới thiệu phạm vi đề tài và mục đích thực
Trang 3LỜI CẢM ƠN
NHẬN XÉT CỦA GIẢNG VIÊN
Trang 4
Mục lục Chương1: GIỚI THIỆU CHUNG 5
1.1 Phạm vi đề tài 5
1.2 Mục tiêu thực hiện đề tài 5
Chương2: TÌM HIỂU MỘT SỐ ỨNG DỤNG ĐÃ CÓ TRONG THỰC TẾ 6
2.1 Ứng dụng “Thời Tiết-Weather” 6
2.2 Ứng dụng “Dự Báo Thời Tiết Việt Nam 360” 7
2.3 Ứng dụng “Thời tiết Việt Nam Widget” 8
Chương3: CÁC CÔNG NGHỆ SỬ DỤNG TRONG ĐỀ TÀI 9
3.1 Tổng quan về hệ điều hành android 9
3.1.1 Lịch sử android 9
3.1.2 Delving với máy ảo Dalvik 10
3.1.3 Kiến trúc của android 10
3.1.4 Chu kỳ ứng dụng android 13
3.2 Tổng quan về ngôn ngữ Json 18
3.2.1 Tổng quan về ngôn ngữ Json 18
Chương4: THIẾT KẾ VÀ HIỆN THỰC CHƯƠNG TRÌNH 19
4.1 Đặc tả hệ thống 19
Trang 54.2 Giao diện của ứng dụng 19
Chương5: TỔNG KẾT VÀ KẾT LUẬN 23
5.1 Kết quả xây dựng ứng dụng 23
5.1.1 Tổng kết các chức năng trên thiết bị di động android 23
5.2 Hạn chế 23
5.3 Hướng phát triển 24
5.4 Kết luận 24
Chương1: GIỚI THIỆU CHUNG
1.1 Phạm vi đề tài
Tìm hiểu về lập trình trên hệ điều hành android.Cách chuyển tiếp giữa các layout trong một ứng dụng, tìm hiểu về SQLite tren Adroid
Áp dụng những kiến thực tìm hiểu được để xây dựng một ứng dụng cung cấp những thông tin trên thiết bị di động Adroid, cung cấp tình hình thời tiết thời điển hiện tại, xem tình hình thời tiết tại một địa điểm bất kỳ, xem thời tiết các ngày kế tiếp và xem thời tiết tại một địa điểm bất kỳ trên Google Maps
1.2 Mục tiêu thực hiện đề tài.
Ngày nay, nhu cầu đi lại, tổ chức sự kiện của con người ngày càng tăng cao.Vì vậy, nếu ta nắm bắt được tình hình thời tiết như lượng mưa, độ ẩm, nhiệt độ … thì sẽ dễ dàng sắp xếp cũng như tổ chức sự kiện, cuộc vui chơi một cách tốt nhất.Hiểu được nhu cầu cần thiết đó, nhóm đã quyết định xây dựng ứng dụng “Dự báo thời tiết” để giúp người dùng có thể cập nhật tình hình thời tiết một cách nhanh nhất, mới nhất và chính xác nhất để người dùng có thể dễ dàng có những quyết định tốt nhất cho những dự định sắp đến của mình
Tốc độ phát triển nhanh chóng của các công nghệ di động hiện nay đã tạo ra các cơ hội cho những lập trình viên tự do thể hiện những ý tưởng sáng tạo của mình.Làm cho các ứng dụng ngày càng thân thiện để đáp ứng nhu cầu cuộc sống của mỗi cá nhân
Trang 6Chương2: TÌM HIỂU MỘT SỐ ỨNG DỤNG ĐÃ CÓ TRONG
THỰC TẾ
2.1 Ứng dụng “Thời Tiết-Weather”
“Thời tiết” là ứng dụng rất dễ sử dụng giúp bạn luôn cập nhật điều kiện thờitiết Ứng dụng “Thời tiết’ được đặc biệt thiết kế để trở nên đơn giản và trựcquan nhất có thể Chỉ với một cú nhấp, bạn sẽ nhận được thông báo điều kiệnthời tiết trên thanh trạng thái ứng với vị trí hiện tại của bạn
Trạng thái khí hậu được đồ họa một cách đẹp mắt để bạn có thể trải nghiệm tối
đa, hình dung được thời tiết thực tế sẽ như thế nào
Ứng dụng này sử dụng Weather Underground làm nguồn dữ liệu và các cậpnhật trực tuyến chiếm dung lượng rất nhỏ nhờ đó bạn sẽ không tốn nhiều dữliệu
ĐẶC TÍNH
- “Thời tiết” hỗ trợ định vị địa lý, xem điều kiện thời tiết mới nhất ứng với vịtrí hiện tại của bạn
- “Thời tiết” là một trong những ứng dụng thời tiết nhẹ nhất trên Google Play!
- Điều kiện thời tiết được đồ họa đẹp mắt - hình dung thực tế thời tiết sẽ ra sao!
- Dự báo hàng giờ và hàng tuần
- Giao diện sử dụng trực quan, liền mạch
- Hỗ trợ cho widget màn hình khóa mới trên hệ điều hành Android 4.2
- “Thời tiết” tương thích với mọi độ phân giải màn hình hiện có
- Hỗ trợ tốt cho các thiết bị Android - từ Android 1.5 đến Android 4.3
- Chạm vào nhiệt độ để chuyển đổi giữa độ C và độ F
- Bạn có thể bật và tắt các thông báo
- Chọn tính năng tiếp theo sẽ có trên “Thời tiết”! Ghi nhận xét hoặc gửi emailcho chúng tôi để giúp chúng tôi phát triển “Thời tiết” thành ứng dụng tốt nhất.Hình ảnh trong ứng dụng:
Trang 72.2 Ứng dụng “Dự Báo Thời Tiết Việt Nam 360”
Ứng dung Dự Báo Thời Tiết Weather 360 Live cho Việt Nam và mọi khu vựckhác trên thế giới đã có mặt và hoàn toàn miễn phí Dễ sử dung, tiết kiệm dữliệu bang thông, Đẹp nhất từ trước tới nay
TP Hà nội, TP Hồ Chí Minh, Đà Nẵng hoặc bất cứ vị trí nào trên thế giới nhận thông tin chính xác dù bạn đang ở bất cứ đâu Đừng để thời tiết xấu bấtngờ đến với bạn! Hãy cài đặt ngay những hình nền, widget đẹp để theo dõi thờitiết
-Bạn có thể nhận được thông tin thời tiết chính xác nhất, nhanh nhất, ở mọi nơi,mọi lúc, mọi hoàn cảnh
Các tính năng chính:
- Dự báo thời tiết trong 5 ngày tiếp theo
- Hỗ trợ 6 loại widget trên màn hình với giao diện cực đẹp, long lanh
- Hiển thị thời tiết trên thanh thông báo, màn hình khóa
- Dễ dàng chia sẻ thời tiết cho bạn bè thông qua : Facebook, yahoo, sms, email,instagram
- Hiển thị các thông tin quan trọng: Nhiệt độ, độ ẩm, lượng mưa, tầm nhìn, tốc
độ gió, thời gian mặt trời mọc/lặn
Tính năng cao cấp:
- Tìm kiếm theo địa điểm, vị trí, gps, location
- Cơ sở dữ liệu 15 nghìn thông tin các thành phố trên thế giới
- Hình ảnh mượt mà, hiệu ứng ấn tượng
- Không giới hạn Danh sách thời tiết các thành phố
- Không giới hạn các tính năng nâng cao
Cài đặt nâng cao:
Trang 8- Hỗ trợ đa ngôn ngữ: Anh, Pháp, Nhật, Mỹ
- Sử dung Đơn vị C hay F
- Tắt mở thông tin thời tiết trên thanh thông báo
2.3 Ứng dụng “Thời tiết Việt Nam Widget”
- Hiển thị thời gian của điện thoại
- Cho phép hiển thị ngày dương và ngày âm lên trên Widget
- Hiển thị thông tin thời tiết theo địa điểm (tỉnh/thành phố): nhiệt độ, trạng tháithời tiết
- Hiển thị dự báo thời tiết cho 3 ngày tiếp theo
- Lựa chọn tỉnh, thành phố
Hình ảnh cho ứng dụng
Trang 9Chương3: CÁC CÔNG NGHỆ SỬ DỤNG TRONG ĐỀ TÀI.
3.1 Tổng quan về hệ điều hành android.
Texas Instruments, Broadcom Corporation, Google, HTC, Intel, LG, Marvell Technology Group, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel, T-Mobile, ARM Holdings, Atheros
Communications, Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, and Vodafone Group,…
Mục tiêu của Liên minh này là nhanh chóng đổi mới để đáp ứng tốt hơn cho nhu cầu người tiêu dùng và kết quả đầu tiên của nó chính là nền tảng Android Android được thiết kế để phục vụ nhu cầu của các nhà sản xuất thiết, các nhà khai thác và các lập trình viên thiết bị cầm tay 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
Trang 10cũ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.0 Trong tháng 10 năm 2008, Google được cấp giấy phép mã nguồn mở cho Android Platform.
Khi Android được phát hành thì một trong số các mục tiêu trong kiến trúc của nó là cho phép các ứng dụng có thể tương tác được với nhau và có thể sử dụng lại các thành phần từ những ứng dụng khác Việc tái sử dụng không chỉ được áp dụng chocho các dịch vụ mà nó còn được áp dụng cho
cả các thành phần dữ liệu và giao diện người dùng.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 vản vá lỗi 1.1 của hệ điều hành này
Ở cả hai phiên bản 1.0 và 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 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
3.1.2 Delving với máy ảo Dalvik
Dalvik là máy ảo giúp các ứng dụng java chạy được trên các thiết bị động
Android Nó chạy các ứng dụng đã được chuyển đổi thành một file thực thi Dalvik (dex) Định dạng phù hợp cho các hệ thống mà thường bị hạn chế về bộ nhớ và tốc độ xử lý Dalvik đã được thiết kế và viết bởi Dan Bornstein, người đã đặt tên cho nó sau khi đến thăm một ngôi làng đánh cá nhỏ có tên là Dalvík ở đảo Eyjafjörður, nơi mà một số tổ tiên của ông sinh sống
Từ góc nhìn của một nhà phát triển, Dalvik trông giống như máy ảo Java (Java Virtual Machine) nhưng thực tế thì hoàn toàn khác Khi nhà phát triển viết một ứng dụng dành cho Android, anh ta thực hiện các đoạn
mã trong môi trường Java Sau đó, nó sẽ được biên dịch sang các bytecode của Java, tuy nhiên để thực thi được ứng dụng này trên Android thì nhà phát triển phải thực thi một công cụ có tên là dx Đây là công cụ dùng để chuyển đổi bytecode sang một dạng gọi là dex bytecode "Dex" là từ viết tắt của "Dalvik executable" đóng vai trò như cơ chế ảo thực thi các ứng dụng Android
3.1.3 Kiến trúc của android
Mô hình sau thể hiện một cách tổng quát các thành phần của hệ điều
Trang 11 Application framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp chocá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 động, thêm các thông báo để các thanh trạng thái, và nhiều, nhiều hơn nữa
Nhà phát triển có thể truy cập vào các API cùng một khuôn khổ được
sử dụng bởi các ứng dụng lõi Các kiến trúc ứng dụng được thiết kế để đơn giản hóa việc sử dụng lại các thành phần; bất kỳ ứng dụng có thể xuất bản khả năng của mình và ứng dụng nào khác sau đó có thể sử dụng những khảnăng (có thể hạn chế bảo mật được thực thi bởi khuôn khổ) Cơ chế này cho phép các thành phần tương tự sẽ được thay thế bởi người sử dụng
Cơ bản tất cả các ứng dụng là một bộ các dịch vụ và các hệ thống, bao gồm:
* Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng
để thiết kế phần giao diện ứng dụng như: gridview, tableview, linearlayout,
…
*Một “Content Provider” cho phép các ứng dụng có thể truy xuất dữ
Trang 12liệu từ các ứng dụng khác (chẳng hạn như Contacts) hoặc là chia sẻ dữ liệu giữa các ứng dụng đó.
*Một “Resource Manager” cung cấp truy xuất tới các tài nguyên không phải là mã nguồn, chẳng hạn như: localized strings, graphics, and layout files
*Một “Notifycation Manager” cho phép tất cả các ứng dụng hiển thị các custom alerts trong status bar
Activity Maanager được dùng để quản lý chu trình sống của ứng dụng
và điều hướng các activity
Library
Android bao gồm một tập hợp các thư viên C/C++ được sử dụng bởi nhiều thành phần khác nhau trong hệ thống Android Điều này được thể hiện thông qua nền tảng ứng dụng Android Một số các thư viện cơ bản được liệt kê dưới đây:
- System C library: a BSD-derived implementation of the standard Csystem library (libc), tuned for embedded Linux-based devices
- Media Libraries - based on PacketVideo's OpenCORE; the librariessupport playback and recording of many popular audio and video formats,
as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
- Surface Manager – Quản lý việc truy xuất vào hệ thống hiển thị
- LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view
- SGL - the underlying 2D graphics engine.
- 3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer
- FreeType - bitmap and vector font rendering.
SQLite - a powerful and lightweight relational database engine
available to all applications
Android Runtime
Android bao gồm một tập hợp các thư viện cơ bản mà cung cấp hầu hếtcá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 Tất cả các ứng dụng Android đều chạy trong tiến trình riêng Máy ảo Dalvik đã được viết để cho một thiết bị có thể chạy nhiều máy ảo hiệu quả Các VM Dalvik thực thi các tập tin thực thi Dalvik (dex) Định dạng được tối ưu hóa cho bộ nhớ tối thiểu VM là dựa trên register-based, và chạy các lớp đã được biên dịch bởi một trình biên dịch Java để chuyển đổi thành cácđịnh dạng dex Các VM Dalvik dựa vào nhân Linux cho các chức năng cơ bản như luồng và quản lý bộ nhớ thấp
Linux kernel
Android dựa trên Linux phiên bản 2.6 cho hệ thống dịch vụ cốt lõi như security, memory management, process management, network stack, and driver model Kernel Linux hoạt động như một lớp trừu tượng hóa giữa
Trang 13phần cứng và phần còn lại của phần mềm stack.
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
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 Giữa đó, đôi lúc chúng có thể là active hoặc inactive, hoặc là trong trường hợp activies nó có thể visible hoặc invisible
Activity Stack
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
Trang 14Activity Stack
Các trạng thái của chu kỳ sống
Trang 15Chu kỳ sống của Activity
Một Activity chủ yếu có 3 chu kỳ chính sau:
Active hoặc running: Khi Activity 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 dùng 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ạmdừ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
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úckhi 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