VIỆN ĐẠI HỌC MỎ HÀ NỘI KHOA CÔNG NGHỆ ĐIỆN TỦ THÔNG TIN JVIff ft ĐỒ ÁN TỐT NGHIỆP • Đề tài Xây Đụng Kho úng Dụng Thông Tin Tổng Họp Trên Nen Tảng Android Giảng viên hướng dẫn TS Đặng Hải Đăng Sinh viê.
Trang 1VIỆN ĐẠI HỌC MỎ HÀ NỘI KHOA CÔNG NGHỆ ĐIỆN TỦ - THÔNG TIN
JVIff ft
Đề tài:
Xây Đụng Kho úng Dụng Thông Tin Tổng Họp
Trên Nen Tảng AndroidGiảng viên hướng dẫn: TS Đặng Hải Đăng
Sinh viên thực hiện: Trần Ngọc Hiếu
Lóp: K16
Trang 2LỜI NÓI ĐẦU
Thế giới ngày nay đã có nhiều tiến bộ mạnh mẽ về công nghệ thôngtin(CNTT) từ một tiềm năng thông tin đã trở thành một tài nguyên thực sự,trởthành sàn phẩm hàng hóa trong xã hội tạo ra một sự thay đồi to lớn trong lựclượng sản xuất,cơ sở hạ tang, cấu trúc kinh tế, tính chất lao động và cà cách thứcquản lí trong các lĩnh vực xã hội
Trong những năm gần đây, nền công nghệ thông tin nước ta cũng đã cóphát triển trên mọi lĩnh vực trong cuộc sống cũng như lĩnh vực quản lí xã hội.Một trong những lĩnh vực mà công nghệ thông tin sử dụng pho biến hiện nay làsàn xuất và phát triển phần mềm trên điện thoại di động Rất nhiều các dòngđiện thoại thông minh được phát triển một cách mạnh mẽ Chúng ta có thể sửdụng điện thoại đề lên internet, xem phim, nghe nhạc, chơi game và rất nhiềuviệc giải trí khác Từ lí do này em đã lên ý tưởng và xây dựng một app thông tintrên nền tảng android
Do kiến thức và kinh nghiệm cùa bản thân còn hạn che nên đồ án khôngtránh khỏi những thiếu xót Rất mong được sự đóng góp cúa quý thầy cô và cácbạn Cuối cùng xin cảm ơn thầy giáo TS Đặng Hài Đăng và bạn bè đã giúp emthực hiện đồ án này
Trang 3MỤC LỤC
Trang 4PHỤ LỤC HÌNH ẢNH
Trang 5CHƯƠNG I: GIỚI THIỆU CHUNG
Android là hệ điều hành miễn phí, mã nguồn mờ, được phát triền bời "gã khốnglồ" Google Android 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.Phiên bảnmới nhất của Android có hỗ trợ thêm các thiết bị khác như ô-tô, đồng hồ thông minh
và TV Ban đầu, Android được phát triền bởi Android Corporation, với sự hồ trợ tàichính từ Google và sau này được chính Google mua lại vào năm 2005 Android ra mắtvà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ở (OpenHandset Alliance -http://www.openhandsetalliance.com/), 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ở chocá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 10năm 2008
Android có mã nguồn mở và Google đã phát hành mã nguồn theo Giấy phépApache 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 tùy biến 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 trinh 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ị bang ngôn ngữ lập trình Java có sửa đối.Vào tháng 7 năm 2013, có hơn một triệu ứng dụng cho thiết bị Android được công bố,
và số lượt tài ứng dụng từ Google Play, cừa hàng ứng dụng chính của Android, ướctính đạt khoảng 50 tý Một cuộc khảo sát các nhà phát triền vào tháng 4 - 5 năm 2013cho thấy hơn 71% lập trình viên cho di động đã phát triến ứng dụng cho Android Tại
sự kiện Google I/O 2014(https://www.google com/events/io), "gã khống lồ" công bố
đà có hơn một ti người dùng Android hàng tháng, trong khi con số này vào tháng 6năm 2013 mới chi là 538 triệu
Trang 6Những yếu tố trên đã 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 (chiếm 33%), và được cáccô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ăngtinhchinh, giá rẽ đế chạy trèn các thiết bị công nghệ cao thay vì xây dựng từ đầu Kctquả là mặc dù được thiết kế đế chạy trên điện thoại và máy tính báng, Android đã xuấthiện trên TV, máy chơi game, đồng hồ thông minh, ô-tô và các thiết bị điện tử khác.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ữngngười dam 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 tim tòihoặ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 750 triệu thiết bị đã được kích hoạt Vào tháng 4năm 2013 đã có 1,5 triệu lượt kích hoạt mồi ngày và tống số thiết bị Android đượckích hoạt lên đến 1 tý vào tháng 9 năm 2013 Sự thành công của hệ điều hành nàycũ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ópmặ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ệ
Trang 7CHƯƠNG II: CO SỞ LÝ THUYÉT
Mô hình sau thế hiện 1 cách tổng quát các thành phần của hệ điều hànhandroid.Mỗi 1 phan sẽ được đặc tả chi tiết dưới đây
Bluetooth / NFC I
WI-FI Direct
Window Manager
Notifications
Activity Manager
Views
Package Manager
Resource Manager
Trang 81.1 Tầng ứng dụng(Application Layer)
Android được tích hợp sẵn 1 số ứng dụng cần thiết cơ bản như: contacts , browser,camera, Phone, Tất cả các ứng dụng chạy trên hệ điều hành android đều được viếtbằng ngôn ngữ Java
Bằng cách cung cấp 1 nền tăng mở Android cung cấp các nhà phát triến khã năngxây dựng ứng dụng cực ki phong phú và sáng tạo Nhà phát triển được tự do tận dụngcá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 thông báo, thêm các thông báo để các thanh trạng thái,nhiều và nhiều hơn nữa.Nhà phát triến có thế truy cập vào các API cùng 1 khuôn khố sử dụng bời các ứngdụ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ànhphần; bất ki ứng dụng có the xuất bân khá năng của minh 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à 1 bộ các dịch vụ và các hệ thong bao gồm:
• Một tập họp rất nhiều các View có khá năng thừa kế lần nhau dùng để thiết kếphần giao diện ứng dụng như: gridVicw, tablcvicw, lincarLayout
• Một “context Provider” cho phép các ứng dụng có thế truy xuất dữ liệu từ cácứng dụng khác(chắng hạn như contacts) hoặc là chia sẻ dữ liệu giữa các ứngdụ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 customalerts trong status bar
Activity Manager được dùng đề quán lí chu trình sống cúa các ứng dụng và điềuhướng activity
Trang 91.3 Library
Android bao gồm 1 tập hợp các thư viện C/C++ được thực hiện bời nhiều thànhphần khác nhau trong hệ điều hành Android.Điều này được thể hiện qua các 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 standrad c systemlibrary(libc),tuned for embedded Linux-based devices
playback and recording of many of popular audio and video formats, as well asstatic image flies, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
• LibWebCore - a modem web browser engine which powers both and androidbrowser and an embcdbablc web view
• 3D Libraries -an implementation based on OpcnGL ES 1.0 APIs;librarics useeither hardware 3D acceleration (where avaiable) or the included, highlyoptimized 3D software rasterizer
• FreeType-bitmap and vector font rendering
SQLite -a powerful and lightweight relational database engine available to allapplications
1.4 Android runtime
Trang 10Android bao gồm I tập hợp các thư viện cơ bản mà cung cấp hầu hết các chứcnăng có sẵn trong các thư viện lỗi của ngôn ngữ lập trinh Java Tất cả các ứng dụngAndroid đều chạy trong tiến trình riêng Máy ảo Dalvik đã được viết để cho 1 thiết bị
có thế chạy nhiều máy ảo 1 cách hiếu quá Các VM Dalvik thực thi các tập tin thực thiDalvik(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 1 trình biên dịch Java đế chuyến thành cácđịnhdạng dex.Các VM Dalvik dựa vào nhân Linux cho các chức năng cơ bán như bộnhờ luồng và quán lí bộ nhớ thấp
7.5 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ư dịch vụsecurity, memory management , process management, network stack, and drivermodel.Kernel Linux hoạt động như một lớp trìu tượng hóa giữa phần cứng và phầncòn lại của phần mềm stack
•Dựa trên phần mem IntelliJ IDEA của JetBrains, Android Studio được thiết ke
bạn cài đặt thì bạn sẽ có một folder có tên "Android-sdk-xxx", hãy nhớ đườngdẫn của nó nhé Với những bạn xài Mac với Linux thi không can cài, chì cầngiải nén đế có được một folder giống như trên Neu vẫn còn lủng túng thì mờianh em xem qua bài viết hướng dần về Android SDK
•Trình máy ảo VirtualBox mói nhất, hãy lựa chọn cho phù hợp với hệ điều
Trang 11hành minh đang sử dụng Tải về xong thi cài VirtualBox như cài phần mềmbỉnh thường rồi chạy lên một lần.
Trang 12•Tải về Genymotion, cũng lựa bàn phù họp với hệ điều hành trên máy tính cùamình Tài xong thì cài vào máy luôn Trong lúc chờ tài thi hãy đăng kí chomình một tài khoăn Genymotion miễn phí ở đây Nhớ kiểm tra email saukhiđăng kí để kích hoạt tài khoản Android Nó hỗ trợ các hệ điềuhành Windows, Mac OS Xvà Linux,và là IDE chính thức cúa Googlc để pháttriển ứng dụng Android gốc đế thay thế cho Android DevelopmentTools (ADT) dựa trên Eclipse.
IILMáy ảo Genemotion
Đê sử dụng Genymotion, trước hết các hạn cần tai những công cụ sau:
Khi đã tải và cài đặt xong Gcnymotion, hãy chạy ứng dụng này lên Chúng ta sẽ điqua một số bước thiết lập như sau:
trên
nhiều máy ào, ví dụ như HTC One, Xperia z, Samsung Galaxy S4 cho đến cácmáy
Nexus, có cả một so tablet ớ đây nữa Chọn lấy máy nào đó bạn thích, rồi tiếp
chạy Chờ một lát là máy sẽ xuất hiện lên như hình bên dưới Tiếp đó bạn có thếdùng
chuột để tương tác với máy ảo Android, đăng nhập tài khoản Google, thiết lậpmàn
hình, tải app, nghịch app, vào phần settings
Trang 135 Đừng quên là bạn có thêm một loạt nút ảo giả lập ở bên cạnh màn hình đấy nhé.
Có cá nút đe truy cập vào webcam với dừ liệu địa điểm nữa
Trang 14Hình 2:Hình ánh giao diện chính cùa máy áo Genymotion
Genyroõon for personal ựse - Samsung GaSaxy S6 - 5.0 a ® s
Hình 3: Hình ảnh máy dư Samsung Galaxy S6- 5.0.0-APJ21
Trang 15IV.Các thành phần chính trong Android Project
Trong bất kì một project Android nào khi tạo ra đều có một fileAndroidManifest.xml, file này được dùng đề định nghĩa các screen sứ dụng, cácpermission cũng như các theme cho ứng dụng Đồng thời nó cũng chứa thông tin vềphiên bán SDK cũng như main activity sẽ chạy đầu tiên
File này được tự động sinh ra khi tạo một Android project Trong file manifestbao
giờ cũng có 3 thành phần chính đó là: application, permission và version
Action android: name="android.intent.action.MAlN" />
Aategory android: nanie="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifcst>
Trang 164.2 File R.java
File R.java là một file tự động sinh ra ngay khi tạo ứng dụng, file này được sử dụng
đề quản lý các thuộc tính được khai báo trong file XML của ứng dụng và các tàinguyên hình ănh
Mã nguồn của file R.java được tự động sinh khi có bat kì một sự kiện nào xãy xalàm thay đối các thuộc tính trong ứng dụng Chẳng hạn như, bạn kéo và thả một filehình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính đường dẫn den file đócũng sẽ được hình thành trong file R.java hoặc xoá một file hình ảnh thì đường dẫntưorng ứng đến hình ảnh đó cũng tự động bị xoá
Có thế nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cả quá trìnhxây dựng ứng dụng
package dtu.kl2tpm.pbs.activity;
public final class R Ị
public static final class array ị
public static final int array_timcout-0x71050000;
1
public static final class attr i
1
public static final class drawable Ị
public static final int add=0x71020000;
public static final int backup_icon=0x71020001:
public static final int checkall=0x7f020002:
}
public static final class id {
public static final int Button01=0x71070006;
public static final int Button02=0x71070007;
public static final int CheckBox01=0x71070017;
Trang 17public static final class layout J
public static final int contact_list=0x7f030000;
public static final int content_sender=0x7f03000l:
public static final int friend list=0x71030002;
}
public static final class menu {
public static final int context_menu=0x71060000;
public static final int menu_options=0x71060001;
public static final int options_menu=0x7f060002;
}
public static final class string {
public static final int app_name=0x71040001 ;
public static final int contcxt_mcnu_itcm_dcletc-0x7f04000b:
public static final int contcxt_mcnu_itcm_cdit-0x7f04000a:
• 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 biệt và đặc tính cơ bản của Android là thời gian sống cùa tiến trinhứ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 địnhbởi hệ thống qua 1 kết hợp cúa :
Trang 18• Những phần cùa ứng dụng mà hệ thống biết đang chạy.
• Những phần như the nào quan trọng với người dùng, bao nhiêu vùng chiếm nhớtrong hệ thống
Hình 5: Activity Stack
Trang 195.3 Các trạng thái của chu trình sống
Hình 6: Mô tá vòng đòi của Activity
Mồi activity là một lớp (class) ke thừa từ lớp android.app Activity hoặc các lớp kethừa từ nó Ta xem lại Activity trong ví dụ ở chương trước:
package vn edu humg android'course.Hello World;
import android, app A cti vi ty;
import android.os.Bundle;
public class HelloWorldActivity extends Activity {
/** Called when the activity is first created */
@Override
public void onCreatefBundle savedlnstanceState) {
super.onCreate(savedlnstanceState);
Trang 20setContent Vìew(R layout.main);
Vòng đời của mồi Activity trải qua các trạng thái nhất định Tại mồi trạng thái sẽ
có sự kiện tương ứng được gọi đến Các sự kiện này được khai báo trong lớp cơ sở (android.app.Activity ) Chúng ta có thề nạp chồng các sự kiện này đế theo dõi vòngđời cùa Activity và có những tác động thích họp Các sự kiện như vậy bao gồm:
onCreateO - được gọi khi Activity được khởi tạo
onStartO - được gọi khi Activity bắt đầu hiện ra (chúng ta bắt đầu nhìn thấy giaodiện)
onResume() - bắt đầu nhận các tương tác với người dùng
onPause() - được gọi khi activity bi dừng lại đế chuyến qua activity khác
onStopO - được gọi khi activity biến mất khỏi màn hình
onDestroyO - được gọi khi activity bị húy (hủy chú động hoặc bị hủy bời hệ thốngtrong trường hợp hệ điều hành xác nhận thiếu RAM)
onRestartO - được gọi khi activity được khởi động lại sau khi đã bị dừng
Theo mặc định, Android studio sẽ tạo sằn hàm onCreateO cho mỗi Activity mớiđược tạo ra Thông thường người lập trinh sê viết mã nguồn (code) liên quan đến việckhởi tạo giao diện đồ họa trong thân hàm này
Trang 21VI Các thành phần của giao diện
6.1 Đon vị đo kích thước trong Android
Các đơn vị đo kích thước trong Android bao gồm:
• dp (hoặc dip) - Density-independent pixel (điếm ảnh không phụ thuộc vào mật
độ màn hình) Một dp tương đương với một pixel trên màn hình có mật độ 160dpi (160 điếm ánh trên mỗi inch màn hình) Đây là đơn vị dược khuyến nghịdùng trong hầu hết các trường hợp đặt kích thước của view trong layout Chitiết hơn về mật độ màn hình được đề cập ờ phần sau của giáo trình
• sp - Scalc-indcpcndcnt pixel, đơn vị này tương tự dp, được dùng khi mô tà kíchthước font chữ (font size)
• pt - Point 1 point = 1/72 inch, dựa trên kích thước vật lý thật của màn hình
• px - Pixel - một pixel vật lý trên màn hình, đơn vị này không được khuyêndùng trong thiết kế giao diện ứng dụng vigiao diện sẽ hiền thị không đồngnhất trên các màn hình có độ phân giãi khác nhau
Android định nghĩa 4 loại mật độ màn hình như sau:
Trang 22Hình 7: Hình lính kích thước đo thực tế 6.2 View và ViewGroup
Hình 8 :MÔ hình sử dụng View.
Như đã đề cập ờ trên, mỗi Activity muốn hiển thị giao diện đồ họa cần chứa cácthành phần giao diện khác như nút bấm, các nhãn, các ô nhập liệu, checkbox, radiobutton Những thành phần như vậy trong Android được gọi chung là các View Tất câ
các View đều được kế thừa từ lớp android.view.View
Trang 23Một hoặc nhiều View có the được nhóm lại với nhau thành một ViewGroup MồiViewGroup cũng là một View, được dùng để nhóm các View con bên trong nó vàhiến thị chúng theo một thứ tự hay quy luật nào đó Mọi ViewGroup đều được kế thừa
từ lóp android.view.ViewGroup Các loại ViewGroup phố biến nhất trong Androidbao gồm:
layout marginTop Chíèu rộng khoảng trống (lẽ) phía trên cúa View
layout_marginBotto« Chiêu rộng khoảng trống (lẽ) phía dưới cùa View
layout_marginLeft Chièu rộng khoảng trống (lẽ) phía bên trái cùa View
layout_marginRight Chiêu rộng khoảng trống (lẽ) phía bên phái cùa View
layout_gravity Cách xẽp đặt View (trái, phải, trên, dưới, giữa theo chiêu dọc, giữa theo chiêu ngang)
Hình 9:1 số thuộc tính chung của View và VtewGroup