Xây dụng ứng dụng cung cấp các chức năng theo dõi, giám sát, định vị điện thoại, các máy tính bảng, các thiết bị di động khác có kết nối mạng.oTự sao lưu danh bạ của thiết bị bị theo dõi về server.oTheo dõi vị trí thiết bị di động theo ngày hiện tại và lịch sử vị trí trước đó.oTheo dõi lịch sử tin nhắn gửi và nhận theo ngày hiện tại và lịch sử tin nhắn các ngày trước đó với thông tin đầy đủ về nội dung, người gởi, tên lưu trong danh bạ, thời gian.oTheo dõi cuộc gọi đi và cuộc gọi đến.Đối tượng sử dụng: tất cả những người có nhu cầu giám sát, giúp phụ huynh giám sát con nhỏ, hỗ trợ tìm lại thiết bị khi bị mất.Chức năng nâng cao: Chương trình phải chạy ẩn trong thiết bị.Thông tin về vị trí, tin nhắn và cuộc gọi ( nếu có ) sẽ tự động gởi về server sau 30 phút và tự động bật 3G nếu thiết bị chưa bật và tắt khi gởi đi thành công.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM
KHOA CÔNG NGHỆ THÔNG TIN
LUẬN VĂN TỐT NGHIỆP
XÂY DỰNG ỨNG DỤNG CHO PHÉP THEO DÕI, GIÁM SÁT NGƯỜI DÙNG
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM
KHOA CÔNG NGHỆ THÔNG TIN
LUẬN VĂN TỐT NGHIỆP
XÂY DỰNG ỨNG DỤNG CHO PHÉP THEO DÕI, GIÁM SÁT NGƯỜI DÙNG
TRÊN THIẾT BỊ DI ĐỘNG
Lê Đăng Tỉnh
TP.HỒ CHÍ MINH, tháng 9 năm 2014
CÔNG TRÌNH HOÀN TẤT TẠI TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM
Trang 3Cán bộ hướng dẫn: Thạc Sĩ Phạm Công Thiện
Cán bộ phản biện: Tiến Sĩ Phạm Văn Tính
Luận văn cử nhân được bảo vệ tại:
HỘI ĐỒNG CHẤM LUẬN VĂN CỬ NHÂN TRƯỜNG ĐẠI HỌC NÔNG LÂM
TP HCM ngày 5 tháng 9 năm 2014
NHIỆM VỤ LUẬN VĂN CỬ NHÂN
Họ tên sinh viên: Lê Đăng Tĩnh
Ngày tháng năm sinh: 05/03/1992
Chuyên ngành: Công nghệ phần mềm
Phái: Nam
Nơi sinh: Lâm Đồng
Ngành: CNTT
Họ tên sinh viên: NGUYỄN ĐỨC DUY
Bộ Giáo Dục và Đào Tạo
Trường ĐH NÔNG LÂM TpHCM
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập-Tự Do-Hạnh Phúc
Trang 4Ngày tháng năm sinh: 16/08/1992
II NHIỆM VỤ VÀ NỘI DUNG
Mục đích và nhiệm vụ nghiên cứu đề tài:
thoại, các máy tính bảng, các thiết bị di động khác có kết nối mạng
o Tự sao lưu danh bạ của thiết bị bị theo dõi về server
o Theo dõi vị trí thiết bị di động theo ngày hiện tại và lịch sử vị trí trước đó
o Theo dõi lịch sử tin nhắn gửi và nhận theo ngày hiện tại và lịch sử tin nhắn các ngày trước đó với thông tin đầy đủ về nội dung, người gởi, tên lưu trong danh bạ, thời gian
o Theo dõi cuộc gọi đi và cuộc gọi đến
giám sát con nhỏ, hỗ trợ tìm lại thiết bị khi bị mất
- Chức năng nâng cao: Chương trình phải chạy ẩn trong thiết bị.Thông tin về vị trí, tin nhắn và cuộc gọi ( nếu có ) sẽ tự động gởi về server sau 30 phút và tự động bật 3G nếu thiết bị chưa bật và tắt khi gởi đi thành công
Nội dung nghiên cứu:
Công nghệ sẽ được tìm hiểu và sử dụng trong quá trình thực hiện đề tài:
- Lập trình trên thiết bị di động
- GPS
- Kiểm thử tự động trên thiết bị di động
Kết quả sẽ là bộ giải pháp sử dụng tất cả các công nghệ trên đê thực hiện được đề tài
III NGÀY GIAO NHIỆM VỤ:
IV NGÀY HOÀN THÀNH NHIỆM VỤ:
V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: Thạc Sĩ Phạm Công Thiện
Ngày / /
CÁN BỘ HƯỚNG
DẪN
Ngày / /CHỦ NHIỆM CHUYÊN NGÀNH
Ngày / /KHOA CNTT
Trang 6Nhận xét của giáo viên hướng dẫn
Nhận xét của giáo viên phản biện
Trang 7
Mục Lục
Trang 8Danh Mục Hình
Danh Mục Bảng
Trang 9CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
1 Đặt vấn đề
Trong sự phát triển nhanh chóng của lĩnh vực truyền thông nói chung thì Công nghệ thông tin đã và đang đóng vai trò hết sức quan trọng trong đời sống kinh tế, xã hội của nhiều quốc gia trên thế giới, là một phần không thể thiếu trong một xã hội ngày càng hiện đại hóa Chúng ta không thể không nhắc đến sự ra đời một cách nhanh chóng của nhiều thiết bị công nghệ Trong đó các điện thoại di động đã trở thành những công cụ tiện ích không thể thiếu trong đời sống của chúng ta
Cùng với sự phát triển mạnh mẽ của thị trường điện thoại di động là sự phát triển mạnh mẻ của xu hướng lập trình phần mềm ứng dụng cho thiết bị di động Phần mềm ứng dụng cho điện thoại di động hiện nay rất đa đạng phong phú Các hệ điều hành cho điện thoại di động cũng đang phát triển mạnh mẽ và thay đổi từng ngày Các hệ điều hành Android, IOS, WinPhone… đã phát triển hết sức mạnh mẽ trên thị trường thiết bị di động
Trong vài năm trở lại đây,nhà phát triển công nghệ Google đã cho ra đời hệ điều hành Android với sự kế thừa những ưu việt của các hệ điều hành ra đời trước nó và
sự kết hợp của nhiều công nghệ tiên tiến nhất hiện nay Android đã nhanh chóng là đối thủ cạnh tranh mạnh mẽ với các hệ điều hành trước đó và đang là hệ điều hành
di động của tương lai và được nhiều người ưa chuộng nhất
Bên cạnh đó sự cạnh tranh phát triển giữa các công ty sản xuất điện thoại di động đã
là cho mẫu mã, tính năng, tiện ích ngày càng hiện đại Giá thành sản phẩm ngày càng rẻ, đa dạng chủng loại, và mức giá khác nhau phù hợp với thị hiếu của mọi đối tượng sử dụng Chính vì vậy ngay cả với những người nhỏ tuổi cũng đã được tiếp súc và sở hữu chúng
Chính vì vậy, hiện nay việc giám sát, theo dõi các thiết bị điện thoại di động nhằm giúp phụ huynh giám sát việc sử dụng điên thoại của các con nhỏ hoặc quản lý lưu trữ thông tin điện thoai của mình, tìm lại thiết bị khi bị mất dựa vào thông tin lưu trữ
là một nhu cầu cần thiết
Từ những luận điểm, chúng tôi đã quyết định chọn đề tài “Xây dựng ứng dụng cho phép theo dõi, giám sát người dùng trên thiết bị di động” với mục đích nghiên cứu
Trang 10tìm hiểu hệ điều hành Android và các công nghệ đi kèm để xây dựng đề tài trên để đáp ứng nhu cầu hiện nạy của người dùng.
2 Mục đích, đối tượng và phạm vi nghiên cứu
2.1 Mục đích nghiên cứu
Xây dựng ứng dụng cho phép theo dõi, giám sát người dùng trên thiết bị di động trên hệ điều hành Android
2.2 Đối tượng và phạm vi nghiên cứu
Nghiên cứu về hệ điều hành Android và các kỹ thuật công nghệ để xây dựng một ứng dụng Android hoàn chỉnh
2.3 Kết quả, mục tiêu cần đạt được.
Hiểu rõ về hệ điều hành Android và các công nghệ hỗ trợ khác để xây dựng được ứng dụng Android
Áp dụng các công nghệ cần thiết để xây dựng nên ứng dụng trên
CHƯƠNG 2: TỔNG QUAN VỀ ANDROID
1 Giới thiệu về hệ điều hành Android
Hình 2 Logo 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
Trang 11từ Google và sau này được chính Google mua lại vào năm 2005.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ộ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.Chiếc điện thoại đầu tiên chạy Android được bán vào tháng 10 năm 2008.
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
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ệ
2 Kiến trúc Android.
Những tính năng mà nền tảng Android hổ trợ:
có của Android
• Dalvik virtual macine: Máy ảo java được tối ưu hóa cho thiết bị di động
trên WebKit engine
1.0
Trang 12• SQLite: DBMS dùng để lưu trữ dữ liệu có cấu trúc.
ARM, JPG, PNG, GIF
• Hổ trợ thoại trên nền tảng GSM (Phụ thuộc vài phần cứng thiết bị)
• Camera, GPS, la bàn và cảm biến (Phụ thuộc vài phần cứng thiết bị)
Hình 2 Mô hình kiến trúc Android
Trang 13Hình 2 Mô hình kiến trúc Android mở rộng
2.1 Linux Kernel
Hệ điều hành Android được phát triển dựa trên hạt nhân Linux phiên bản 2.6, kể từ Android 4.0 Ice Cream Sandwich (bánh ngọt kẹp kem) trở về sau, là phiên bản 3.x, điều đó được thể hiện ở tầng dưới cùng này Tất cả mọi hoạt động của điện thoại muốn thi hành được thì đều phải được thực hiện ở mức cấp thấp ở tầng này bao gồm quản lý bộ nhớ (memory management), giao tiếp với phần cứng (driver model),
Trang 14thực hiện bảo mật (security), quản lý tiến trình (process) Bộ nhân Linux 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 2 Các thành phần của nhân Linux
2.2 Library
Hình 2 Android Libraries
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
2.3 Android Runtime
Chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có thể hoạt động Phần này có 2 bộ phận tương tự như mô hình chạy Java trên máy tính thường Thứ nhất là các thư viện lõi (Core Library), chứa các lớp như JAVA IO, Collections, File Access Thứ hai là một máy ảo java (Dalvik Virtual Machine)
Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệ điều hành android không được chạy bằng JRE(Java Runtime Environment) của Sun (nay
là Oracle) (JVM) mà là chạy bằng máy ảo Dalvik
Trang 152.4 Application framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp 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 độ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
Hình 2 Application Framework
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
từ điển, các widget các ứng dụng của bên thứ 3…
3 Android Emulator
Android SDK và Plugin Eclipse được gọi là một Android Deverloper Tool (ADT) Các Android coder sẽ cần phải sử dụng công cụ IDE (Integrated Development Enveronment) này để phát triển, debugging và testing cho ứng dụng Tuy nhiên, các
Trang 16coder cũng có thể không cần phải sử dụng IDE mà thay vào đó là sử dụng command line để biên dịch và tất nhiên là vẫn có Emulator như thường.
Android Emulator được trang bị đầy đủ hầu hết các tính năng của một thiết bị thật Tuy nhiên, một số đã bị giới hạn như là kết nối qua cổng USB, camera và video, nghe phone, nguồn điện giả lập, Bluetooth, lag và chậm Tuy nhiên ta có thể sài Emulator bên thứ 3 tốt hơn là Genymotion (xem phụ lục)
4 Các thành phần tạo nên 1 ứng dụng Android
Việc hiểu được các thành phần (component) tạo nên một ứng dụng Android là rất cần thiết cho việc lập trình Các thành phần này được chia làm các loại bao gồm:
4.1 Activity
Là một thành phần của ứng dụng cung cấp một giao diện màn hình mà người dùng
có thể tương tác vào đó để thực hiện một hành động nào đó ví dụ như: gọi điện, gửi email, gửi sms …
Một ứng dụng có thể gồm chỉ một activity hay nhiều activity Thông thường, một trong số các activity được đánh dấu như là activity đầu tiên phải được trình diễn tới người dùng khi ứng dụng được khởi động Chuyển từ một activity sang activity khác được hoàn thành bằng cách cho activity hiện thời gọi khởi động activity kế tiếp.Mỗi activity đảm nhận việc tạo ra một cửa sổ (window) để người lập trình đặt lên đó một giao diện UI với setContentView(View) Một activity có thể mang nhiều dạng khác nhau:
Để có thể sử dụng trong ứng dụng, mọi activity đều phải được khai báo trong tệp AndroidManifest.xml với một thẻ <activity>
Trang 17Hình 2 Khai báo activity trong file AndroidManifest.xml
Các Activity được quản lí trong một stack chứa activity (Cơ chế vào trước ra sau) Khi ứng dụng được mở lên thi activity chính sẽ được tạo ra, nó sẽ được thêm vào stack Khi một activity mới được khởi tạo, nó sẽ được đặt lên trên cùng của stack Lúc này chỉ có duy nhất Activity trên cùng là hiển thị nội dung đến người dùng Tất
cả các Activity còn lại đều chuyển về trạng thái dừng hoạt động Khi một
Activity bị đóng nó sẽ bị loại khỏi stack Lúc này Activity nằm dưới đó sẽ chuyển từ trạng thái tạm dừng sang trạng thái hoạt động
Trang 18Hình 2 Sơ đồ trạng thái của một Activity
Với mỗi Activity thường vòng đời có 4 trạng thái sau:
cùng ứng dụng và cho phép người sử dụng tương tác)
Activity này (Ví dụ bạn mở một Activity mới lên dưới dạng Dialog)
thấy được (ví dụ bạn mở một Activity mới lên mà Full màn hình chẳng hạn)
còn quá ít
Trang 19Hình 2 Vòng đời của một Activity
Ba vòng đời quan trọng trong Activity:
• Entire Lifetime: Diễn ra từ lần gọi onCreate(Bundle) đầu tiên và kéo dài tới lần gọi onDestroy() cuối cùng
• Visible Lifetime: Diễn ra từ khi gọi onStart() và kéo dài tới khi gọi onStop()
Ở vòng đời này, activity được hiển thị trên màn hình mặc dù có thể nó không thể tương tác với người dùng (Activity có thể bị đè bởi một Activity trong suốt hoặc một Activity không chiếm toàn bộ màn hình thiết bị(non-full-sized))
• Foreground Lifetime: Diễn ra từ khi gọi onResume() và kéo dài tới khi gọi onPause() Ở vòng đời này, activity nằm trên mọi activity khác và tương tác được với người dùng Một activity có thể liên tục thay đổi giữa hai trạng thái Paused và Resumed
Trang 204.2 Intent
Là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một Activity 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 các Activity có thể triệu gọi cũng như truyền các dữ liệu cần thiết tới một Activity khác
Hình 2 Truyền dữ liệu giữa 2 Activity
Dữ liệu của Intent:
Intent về cơ bản là một cấu trúc dữ liệu, được mô tả trong lớp android.content.Intent
Action
- Tên (string) của action mà Intent sẽ
yêu cầu thực hiện
- Có thể là action được Android được
- Khi được xác định, các thuộc tính khác
sẽ trở thành không bắt buộc (optional)
Extras
- Chứa tất cả các cặp (key, value) do ứng dụng thêm vào để truyền qua Intent (cấu trúc Bundle)
Bảng 2 Các thuộc tính của một đối tượng Intent
Các Action được định nghĩa sẵn:
Dưới đây là những hằng String đã được định nghĩa sẵn trong lớp Intent Đi kèm với
nó là các Activity hay Application được xây dựng sẵn sẽ được triệu gọi mỗi khi Intent tương ứng được gửi (tất nhiên khi được cung cấp đúng data)
Trang 21VD: Gọi tới một số điện thoại:
Intent dialIntent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:123456")); startActivity(dialIntent);
Hình 2 Các Action đã được định nghĩa sẵn trong Intent
4.3 Service
Một service không có giao diện trực quan, nó chạy ẩn trong hệ thống Ví dụ một service có thể upload dữ liệu lên sever hoặc tính toán sử lý các tác vụ ẩn như tracker SMM, Call
Giống như các activity và các thành phần khác khác, service chạy trong thread chính của tiến trình ứng dụng Vì thế chúng không thể chặn những thành phần khác hay giao diện người dùng, chúng thường tạo ra các thead khác cho các nhiệm vụ hao tốn thời gian
Trang 22Hình 2 Chu trình sống của một Service
Khi có một context nào đó gọi startService() để start service mong muốn Nếu
service đó chưa được tạo thì sẽ gọi onCreate() rồi gọi tiếp onStart() và khi đó service chạy nền bên dưới
Nếu sau đó lại có một context muốn start service này mà service đã đang chạy, chỉ
có phương thức onStart() của service được gọi
Dù service có được gọi start bao nhiêu lần thì cũng chỉ có 1 instance của service và chỉ cần gọi stopService() một lần để kết thúc service
Có 2 kiểu để start Service:
hành động đơn và có thể không return lại kết quả (ví dụ như chơi nhạc)
• Sử dụng bindService(): cung cấp một interface dạng client-server cho phép apps có thể “conversation” (nói chuyện, tương tác) với service
Tương tự như activity muốn startService thì app cần phải khai báo trong
AndroidManifest.xml
Trang 23Hình 2 Khai báo service trong file AndroidManifest.xml
4.4 Broadcast Receiver
Broadcast Receiver là một trong các thành phần chính của android có thể hiểu nó như một bộ thu các bản tin cần thiết cho apps Các bản tin được thu ở đây chính là các intent Các bạn có thể thu các Intent sẵn có của hệ điều hành ví dụ như: tin nhắn đến, cuộc gọi đến, trạng thái của điện thoại, trạng thái của pin… Ngoài ra các bạn cũng có thể thu Intent của chính các bạn gửi ra để làm một nhiệm vụ gì đó (có thể dùng để start service khi cần)
Ta có 2 cách đăng ký Broadcast Receiver:
Đăng ký trong coding: Lắng nghe mọi thứ trong Intent- filter (nếu tắt ứng dụng sẽ không lắng nghe) bằng cách sử dụng hàm registerReceiver(receiver, filter)
Hình 2 Code đăng ký Broadcast Receiver lắng nghe cuộc gọi
Đăng ký trong Manifest: Nó trở thành dịch vụ, tự động lắng nghe mọi thứ trong Intent – filter (kể cả khi đã đóng ứng dụng)
Hình 2 Manifest đăng ký Broadcast Receiver lắng nghe việc boot điện thoại
Trang 24nó Một ContentResolver có thể nói chuyện với bất cứ content provider nào, chúng cộng tác với provider để quản lý giao tiếp liên tiến trình.
4.6 Manifest File
Trước khi Android có thể khởi động một thành phần ứng dụng, nó phải biết rằng thành phần đó tồn tại Vì vậy, ứng dụng khai báo những thành phần của mình trong một manifest file được gắn vào Android package, file apk này cũng giữ chứa mã của ứng dụng và các tài nguyên
Manifest file là một file XML có cấu trúc và thường được đặt tên là
AndroidManifest.xml cho mọi ứng dụng Nó thực hiện một số bổ sung để khai báo các thành phần của ứng dụng, như là nêu tên các thư viện ứng dụng cần đến, và xác định các quyền hạn của ứng dụng muốn được cấp
Ví dụ như nó khai báo các Activity trong chương trình của chúng ta, khi khởi động chương trình thì Activity nào sẽ được thực hiện đầu tiên, các quyền truy cập
Internet, SDCard, hay các vấn đề về gửi nhận tin nhắn, cuộc gọi, v.v…
4.7 Các thành phần giao diện Layout, Widget
Có rất nhiều cách bố trí giao diện Mỗi giao diện được thế kế trong một file xlm gọi
là layout Có nhiều loại layout như LinearLayout, RelativeLayout, TableLayout, GridLayout và khác Mỗi cung cấp một bộ duy nhất của các thông số bố trí được sử dụng để xác định vị trí của views con và cơ cấu layout
Widget là một đối tượng View phục vụ như một giao diện để tương tác với người dùng Android cung cấp một tập các widgets thực hiện đầy đủ, giống như các button, Checkbox,TextView,… do đó bạn có thể nhanh chóng xây dựng giao diện người
Trang 25dùng một cách dễ dàng Ngoài ra còn có một số widgets phức tạp hơn như date picker, clock, và zoom controls.
4.8 Bắt sự kiện trong Android
Khi đã thêm một số Views/widgets đến giao diện Để bắt sự kiện người dùng tương tác với giao diện ta cần phải xác định một sự kiện lắng nghe và đăng ký nó với các View
Ví dụ:
View.OnClickListener (để xử lý "nhấp chuột" trên một View)
View.OnTouchListener (để xử lý các sự kiện màn hình cảm ứng trong một View)
Vì vậy nếu muốn bắt sự kiện "clicked" (chẳng hạn như khi một nút được chọn), ta cần xác định OnClickListener của nó gọi method onClick() (nơi thực hiện các hành động sau khi nhấp chuột), và đăng ký nó vào Xem với setOnClickListener()
4.9 Android SQLite Database
4.9.1 SQLite là gì
SQLite là một cơ sở dữ liệu mã nguồn mở được nhúng vào Android SQLite hỗ trợ các tính năng cơ sở dữ liệu quan hệ tiêu chuẩn như cú pháp SQL, transactions và prepared statements Ngoài ra nó chỉ đòi hỏi bộ nhớ ít khi chạy (khoảng 250 Kbyte).SQLite hỗ trợ các loại dữ liệu TEXT (tương tự như String trong Java), INTEGER (tương tự như Long trong Java) và REAL (tương tự như Double trong Java)
4.9.2 SQLite trong Android
SQLite có sẵn trên tất cả các thiết bị Android Để sử dụng cơ sở dữ liệu SQLite trong Android ta không cần thiết lập hay cài đặt thêm gì cả Bạn chỉ việc sử dụng SQL để làm việc với database và database sẽ được tự động quản lý cho bạn
Làm việc với database có thể chậm vì thế nên thực hiện các công việc với database thông qua AsyncTask
Nếu ứng dụng của bạn tạo ra một cơ sở dữ liệu cơ sở dữ liệu này được lưu trong đường dẫn data/ data/<package_name>/database/FILENAME.DATA
Trang 264.9.3 Thao tác với SQLite trong Android
SQLiteOpenHelper cung cấp các phương thức getReadableDatabase() và
getWriteableDatabase() để lấy quyền truy cập vào một SQLiteDatabase
4.9.3.3 SQLiteDatabase
SQLiteDatabase là lớp cơ sở để làm việc với một cơ sở dữ liệu SQLite trong
Android và nó cung cấp các phương thức để open, query, update và close
databse Cụ thể hơn SQLiteDatabase cung cấp các phương thức insert(),
update() và delete() Phương thức execSQL() cho phép để thực hiện trực tiếp các lệnh SQL
4.9.3.4 Cursor
Một câu query được thực hiện luôn trả về một Cursor Cursor đại diện cho kết quả truy vấn dữ liệu, về cơ bản nó là các dòng dữ liệu truy vấn được
Cursor cung cấp các hàm để thao tác với dữ liệu truy vấn được như:
• Để đưa con trỏ tới các dòng dữ liệu khác nhau ta có thể dùng
moveToFirst() và moveToNext()
getString(columnIndex),…
Trang 27CHƯƠNG 3: TỔNG QUAN VỀ CLOUD
COMPUTING
1 Giới thiệu về điện toán đám mây (Cloud computing)
Hình 3 Cloud Computing
Ngày nay, cộng nghệ phát triển nhanh chóng và được ứng dụng rộng rãi ở các
nghành nghề khác nhau Các doanh nghiệp đã chuyển dần từ việc quản lý dữ liệu riêng của doanh nghiệp cũng như dữ liệu khách hàng, đối tác bằng sổ sách, tài liệu thành lưu trữ dữ liệu trên máy tính Tuy nhiên để quản lý được tốt nguông dữ liệu đó đòi hỏi doanh nghiệp phải đầu tư tính toán chi phí cho phần cứng, phần mềm, mạng, chi phí cho quản trị viên, chi phí bảo trì, sửa chữa, … Ngoài ra họ còn phải tính toán khả năng mở rộng, nâng cấp thiết bị; phải kiểm soát việc bảo mật dữ liệu cũng như tính sẵn sàng cao của dữ liệu
Chính vì thế, họ cần có một nơi tin cậy giúp các doanh nghiệp quản lý tốt nguồn dữ liệu đó, các doanh nghiệp sẽ không còn quan tâm đến cơ sở hạ tầng, công nghệ mà chỉ tập trung chính vào công việc kinh doanh của họ thì sẽ mang lại cho họ hiệu quả
và lợi nhuận ngày càng cao hơn
Vì thế Thuật ngữ “cloud computing” ra đời Nó bắt nguồn từ ý tưởng đưa tất cả mọi thứ như dữ liệu, phần mềm, tính toán… lên trên mạng Internet Chúng ta sẽ không còn trông thấy các máy PC, máy chủ của riêng các doanh nghiệp để lưu trữ dữ liệu, phần mềm nữa mà chỉ còn một số các “máy chủ ảo” tập trung ở trên mạng Các
Trang 28“máy chủ ảo” sẽ cung cấp các dịch vụ giúp cho doanh nghiệp có thể quản lý dữ liệu
dễ dàng hơn, họ sẽ chỉ trả chi phí cho lượng sử dụng dịch vụ của họ, mà không cần phải đầu tư nhiều vào cơ sở hạ tầng cũng như quan tâm nhiều đến công nghệ Xu hướng này sẽ giúp nhiều cho các công ty, doanh nghiệp vừa và nhỏ mà không có cơ
sở hạ tầng mạng, máy chủ để lưu trữ, quản lý dữ liệu tốt
2 Khái niệm điện toán đám mây (Cloud computing)
Theo Wikipedia:
Điện toán đám mây (tiếng Anh: cloud computing), còn gọi là điện toán máy chủ ảo,
là mô hình điện toán sử dụng các công nghệ máy tính và phát triển dựa vào mạng Internet Thuật ngữ "đám mây" ở đây là lối nói ẩn dụ chỉ mạng Internet (dựa vào cách được bố trí của nó trong sơ đồ mạng máy tính) và như một liên tưởng về độ phức tạp của các cơ sở hạ tầng chứa trong nó Ở mô hình điện toán này, mọi khả năng liên quan đến công nghệ thông tin đều được cung cấp dưới dạng các "dịch vụ", cho phép người sử dụng truy cập các dịch vụ công nghệ từ một nhà cung cấp nào đó
"trong đám mây" mà không cần phải có các kiến thức, kinh nghiệm về công nghệ
đó, cũng như không cần quan tâm đến các cơ sở hạ tầng phục vụ công nghệ đó Theo tổ chức Xã hội máy tính IEEE "Nó là hình mẫu trong đó thông tin được lưu trữ thường trực tại các máy chủ trên Internet và chỉ được được lưu trữ tạm thời ở các máy khách, bao gồm máy tính cá nhân, trung tâm giải trí, máy tính trong doanh nghiệp, các phương tiện máy tính cầm tay, v.v…" Điện toán đám mây là khái niệm tổng thể bao gồm cả các khái niệm như phần mềm dịch vụ, Web 2.0 và các vấn đề khác xuất hiện gần đây, các xu hướng công nghệ nổi bật, trong đó đề tài chủ yếu của
nó là vấn đề dựa vào Internet để đáp ứng những nhu cầu điện toán của người dùng
Ví dụ, dịch vụ Google AppEngine cung cấp những ứng dụng kinh doanh trực tuyến thông thường, có thể truy nhập từ một trình duyệt web, còn các phần mềm và dữ liệuđều được lưu trữ trên các máy chủ
Trang 29Hình 3 Mọi thứ đều tập trung vào đám mây
3 Mô hình tổng quan
Hình 3 Layers of Cloud Computing
Mô hình “điện toán đám mây” được chia ra thành 5 lớp riêng biệt, có tác động qua lại lẫn nhau:
Trang 30• Client (Lớp Khách hàng): Lớp Client của điện toán đám mây bao gồm phần cứng và phần mềm, để dựa vào đó, khách hàng có thể truy cập và sử dụng các ứng dụng/dịch vụ được cung cấp từ điện toán đám mây Chẳng hạn máy tính
và đường dây kết nối Internet (thiết bị phần cứng) và các trình duyệt web (phần mềm)…
nhiệm vụ phân phối phần mềm như một dịch vụ thông qua Internet, người dùng không cần phải cài đặt và chạy các ứng dụng đó trên máy tính của mình, các ứng dụng dễ dàng được chỉnh sữa và người dùng dễ dàng nhận được sự
hỗ trợ Các đặc trưng chính của lớp ứng dụng bao gồm:
phía khách hàng (lớp Client), cho phép khách hàng truy cập các ứng dụng từ
xa thông qua Website
bản vá lỗi, download phiên bản mới… bởi chúng sẽ được thực hiện từ các
“đám mây”
• Platform (Lớp Nền tảng): Cung cấp nền tảng cho điện toán và các giải pháp của dịch vụ,chi phối đến cấu trúc hạ tầng của “đám mây” và là điểm tựa cho lớp ứng dụng, cho phép các ứng dụng hoạt động trên nền tảng đó Nó giảm nhẹ sự tốn kém khi triển khai các ứng dụng khi người dùng không phải trang
bị cơ sở hạ tầng (phần cứng và phần mềm) của riêng mình
• Infrastructure (Lớp Cơ sở hạ tầng): Cung cấp hạ tầng máy tính, tiêu biểu là môi trường nền ảo hóa Thay vì khách hàng phải bỏ tiền ra mua các server, phần mềm, trung tâm dữ liệu hoặc thiết bị kết nối… giờ đây, họ vẫn có thể có đầy đủ tài nguyên để sử dụng mà chi phí được giảm thiểu, hoặc thậm chí là miễn phí Đây là một bước tiến hóa của mô hình máy chủ ảo (Virtual Private Server)
mềm máy tính, được thiết kế và xây dựng đặc biệt để cung cấp các dịch vụ của đám mây Các server phải được xây dựng và có cấu hình đủ mạnh (thậm chí là rất mạnh) để đám ứng nhu cầu sử dụng của số lượng đông đảo các người dùng và các nhu cầu ngày càng cao của họ
Trang 314 Đặc điểm của cloud computing
Nhanh chóng cải thiện với người dùng có khả năng cung cấp sẵn các tài nguyên cơ
sở tính toán theo nhu cầu thì tốt đối với những tùy chọn dựa trên việc sử dụng và các
kỹ năng IT được đòi hỏi tối thiểu (hay không được đòi hỏi) cho việc thực thi
Sự độc lập giữa thiết bị và vị trí làm cho người dùng có thể truy cập hệ thống bằng cách sử dụng trình duyệt web mà không quan tâm đến vị trí của họ hay thiết bị nào
mà họ đang dùng, ví dụ như PC, mobile Vì cơ sở hạ tầng off-site (được cung cấp bởi đối tác thứ 3) và được truy cập thông qua Internet, do đó người dùng có thể kết nối từ bất kỳ nơi nào
Việc cho thuê nhiều để có thể chia sẻ tài nguyên và chi phí giữa một phạm vi lớn người dùng, cho phép:
Tập trung hóa cơ sở hạ tầng trong các lĩnh vực với chi phí thấp hơn (chẳng hạn như bất động sản, điện, v.v.)
Khả năng chịu tải nâng cao (người dùng không cần kỹ sư cho các mức tải cao nhất
Tính co giãn linh động (“theo nhu cầu”) cung cấp tài nguyên trên một cơ sở mịn, tự bản thân dịch vụ và gần thời gian thực, không cần người dùng phải có kỹ sư cho chịu tải
Trang 32Hiệu suất hoạt động được quan sát và các kiến trúc nhất quán, kết nối lỏng lẽo được cấu trúc dùng web service như giao tiếp hệ thống.
Việc bảo mật cải thiện nhờ vào tập trung hóa dữ liệu, các tài nguyên chú trọng bảo mật, v.v… nhưng cũng nâng cao mối quan tâm về việc mất quyền điều khiển dữ liệu nhạy cảm Bảo mật thường thì tốt hay tốt hơn các hệ thống truyền thống, một phần bởi các nhà cung cấp có thể dành nhiều nguồn lực cho việc giải quyết các vấn đề bảo mật mà nhiều khách hàng không có đủ chi phí để thực hiện Các nhà cung cấp sẽ ghi nhớ (log) các truy cập, nhưng việc truy cập vào chính bản thân các audit log có thể khó khăn hay không thể.CLOUD COMPUTING
Khả năng chịu đựng xảy ra thông qua việc tận dụng tài nguyên đã được cải thiện, các hệ thống hiệu quả hơn Tuy nhiên, các máy tính và cơ sở hạ tầng kết hợp là những thứ tiêu thụ năng lượng chủ yếu
5 Xu hướng phát triển
Thuật ngữ “cloud computing” ra đời từ giữa năm 2007, cho đến nay đã không ngừng phát triển mạnh mẽ và được hiện thực bởi nhiều công ty lớn trên thế giới như IBM, Sun, Amazon, Google, Microsoft, Yahoo, SalesForce, …
Hình 3 Một số nhà cung cấp dịch vụ cloud computing
Với mục tiêu giải quyết các bài toán về dữ liệu, tính toán, dịch vụ, … cho khách hàng, cloud computing đã và đang mang lại lợi nhuận lớn, đem đến một sân chơi,
Trang 33một thị trường rộng lớn cho các nhà cung cấp dịch vụ, nên sự phát triển nhanh chóng của nó có thể được tính bằng từng ngày.
6 Các khó khăn, thách thức
Trong quá trình hiện thực cloud computing, người ta nhận thấy một số khó khăn, thách thức sau:
• Sở hữu trí tuệ (Intellectual property)
• Tính riêng tư (Privacy)
và chạy bất kỳ unit test nào có bên trong Nếu mọi thứ được kiểm tra ổn thoả, code
sẽ được triển khai trên cloud của AppHarbor
AppHarbor cho phép các developer dành nhiều thời gian của họ để lên những ý tưởng và phát triển ứng dụng mà không cần phải lo lắng về việc triển khai, cài đặt với các tập tin cấu hình…
Ở AppHarbor việc phát triển và triển khai các ứng dụng NET sẽ rất đơn giản AppHarbor sẽ chạy hầu hết các ứng dụng ASP.NET mà không cần chỉnh sửa code Việc di chuyển một ứng dụng sang nền tảng của Appharbor không yêu cầu phải sửa đổi code, cũng không cần cài đặt các plugin hoặc phần mềm tùy chỉnh nào khác
Trang 34AppHarbor được thành lập vào tháng 9 năm 2010 bởi Rune Sørensen, Troels
Thomsen và Michael Friis
Hình 3 AppHarbor Architecture
7.2 Điểm mạnh của AppHarBor
AppHarbor cho phép bạn ngay lập tức triển khai và ứng dụng NET một cách nhanh chóng và dễ dàng
Không cần phải chỉnh sửa code theo một chuẩn project bắt buộc như GAE (Google App Engine)
Việc cấu hình hoặc thêm một cở sở dữ liệu hay các các thư viện khác một cách dễ dàng Chỉ việc vào mục add-ons lựa chọn và thêm những gì mà mình cần
Trang 35Hình 3 Thêm add-ons trên Appharbor
Đưa code lên sever một cách dễ dàng bằng Git hoặc Mercurial.Auto deploy AppHarBor thông qua Bitbucket, CodePlex, GitHub
Hình 3 Appharbor AutoDelop
Hỗ trợ quản lý phiên bản deploy
Trang 36Hình 3 Quản lý phiên bản deploy ở AppHarbor
7.3 Các add-ons AppHarbor hỗ trợ
• Airbrake (error logging)
• Mailgun (email send / receive)
Trang 378 Google cloud messaging (GMC)
8.1 Giới thiệu về GMC
Hình 3 Google cloud messaging logo
GCM hay Google Cloud Messaging là một dịch vụ cho phép gửi dữ liệu từ máy chủ của bạn đến các thiết bị Android của người dùng, và ngược lại GCM là hoàn toàn miễn phí và không giới hạn băng thông Dịch vụ hoạt động trên các gói dữ liệu có dung lượng nhỏ hơn 4kb và tin nhắn tới thiết bị Android là tức thời (Push-
notification)
GCM là phù hợp cho việc xây dựng các ứng dụng nhắn tin tức thời hoặc tương tác giữa người dùng và nhà phát triển ứng dụng
Ví dụ:
Web của họ
công ty, học sinh hoặc phụ huynh của một trường học với chi phí thấp nhất và hiệu quả nhất
• Gửi lệnh điều khiển app từ xa
Trang 388.2 Mô hình tổng quan về GMC
Hình 3 Sơ đồ hoạt động của GMC
1 Đầu tiên thiết bị Android sẽ gửi sender id, application id lên GCM để đăng
ký
2 Sau khi đăng ký thành công GCM sẽ gửi registration id cho thiết bị Android
3 Sau khi nhận được registration id thiết bị Android sẽ gửi nó lên server
4 Server lưu registration id để sử dụng về sau
a Bất cứ khi nào server muốn gửi dữ liệu đến điện thoại, server sẽ gửi dữ liệu đến máy chủ GCM cùng với registration id của thiết bị cần gửi (registration
id được lưu trữ trước đó trong cơ sở dữ liệu)
b Máy chủ GCM sẽ sát định chính sát thiết bị cần nhận dữ liệu sau đó đánh thức chúng và gửi dữ liệu cho thiết bị đó
8.3 Đặc điểm chính của GMC
Cho phép các máy chủ ứng dụng của bên thứ 3 gửi tin nhắn đến các ứng dụng Android
Trang 39Ứng dụng Android trên một thiết bị Android không cần phải luôn chạy để nhận tin nhắn.
Hệ thống sẽ tự động đánh thức ứng dụng Android thông qua Intent broadcast khi tin nhắn đến Điều này đòi khỏi phải thiết lập broadcast receiver thích hợp và cung cấp một số quyền nhất định
GCM chỉ đơn giản là gửi đi thông điệp dữ liệu thô vào ứng dụng Android, ứng dụng
có toàn quyền kiểm soát như thế nào để xử lý dữ liệu
Đòi hỏi thiết bị phải sử dụng Android 2.2 hoặc cao hơn và phải có cài đặt Google Play Store
8.4 Tóm lại
GMC là một dich vụ free, tốt được cung cấp để gửi các gói dữ liệu nhỏ từ sever hay một thiết bị thứ 3 đến điện thoại Android
CHƯƠNG 4: TỔNG QUAN VỀ WEB MVC
1 Giới thiệu về mô hình MVC
1.1 Xuất xứ
Vào những năm 70 của thế kỷ 20, tại phòng thí nghiệm Xerox PARC ở Palo Alto, sự
ra đời của giao diện đồ họa (Graphical User Interface) và lập trình hướng đối tượng (Object Oriented Programming) đã cho phép lập trình viên làm việc với những thành phần đồ họa như những đối tượng đồ họa có thuộc tính và phương thức riêng của nó Không dừng lại ở đó, những nhà nghiên cứu ở Xerox PARC còn đi xa hơn nữa khi cho ra đời kiến trúc MVC (viết tắt của Model – View – Controller)
MVC được phát minh tại Xerox Parc vào những năm 70, bởi TrygveReenskaug MVC lần đầu tiên xuất hiện công khai là trong Smalltalk-80 Các giấy tờ quan trọng đầu tiên được công bố trên MVC là “A Cookbook for Using the Model-View-
Controller User Interface Paradigm in Smalltalk - 80”, bởi Glenn Krasner và
Stephen Pope, xuất bản trong tháng 8 / tháng 9 năm 1988
Trang 401.2 Kiến trúc của mô hình MVC
Trong kiến trúc MVC, một đối tượng đồ họa người dùng (GUI Component) bao gồm 3 thành phần cơ bản: Model, View, và Controller Model có trách nhiệm đối với toàn bộ dữ liệu cũng như trạng thái của đối tượng đồ họa View chính là thể hiện trực quan của Model, hay nói cách khác chính là giao diện của đối tượng đồ họa Và Controller điều khiển việc tương tác giữa đối tượng đồ họa với người sử dụng cũng như những đối tượng khác
Hình 4 Các thành phần chính của mô hình MVC
Khi người sử dụng hoặc những đối tượng khác cần thay đổi trạng thái của đối tượng
đồ họa, nó sẽ tương tác thông qua Controller của đối tượng đồ họa Controller sẽ thực hiện việc thay đổi trên Model Khi có bất kỳ sự thay đổi nào ở xảy ra ở Model,
nó sẽ phát thông điệp (broadcast message) thông báo cho View và Controller biết Nhận được thông điệp từ Model, View sẽ cập nhật lại thể hiện của mình, đảm bảo rằng nó luôn là thể hiện trực quan chính xác của Model Còn Controller, khi nhận được thông điệp từ Model, sẽ có những tượng tác cần thiết phản hồi lại người sử dụng hoặc các đối tượng khác