Phát triển ứng dụng baby learn to spell trên nền tảng android | Đồ an tốt nghiệp cho sinh viên ngành CNTT. Đồ án trình bày các nội dung: phát biểu bài toán, phân tích và thiết kế hệ thống, giới thiệu công nghệ sử dụng để phát triển phần mềm, cài đặt và kiểm thử phần mềm, kết luận và hướng phát triển. Đồ án tốt nghiệp là tài liệu hữu ích dùng để sinh viên ngành CNTT tham khảo để phát triển xây dựng cuốn đồ án của mình có chất lượng tốt hơn.
Trang 2TÊN ĐỒ ÁN ĐĂNG KÝ:
Phát triển ứng dụng "Baby learn to spell" trên nền tảng Android
Trang 3MỤC LỤC
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 9
1.1 Mục tiêu đề tài 9
1.2 Mục tiêu đề tài 10
1.3 Giới hạn phạm vi nghiêm cứu 10
1.4 Ý nghĩa khoa học thực tiễn 10
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 11
2.1 Giới thiệu hệ điều hành Android 11
2.1.1 Android là gì ? 11
2.1.2 Lịch sử phát triển 12
2.1.3 Cộng đồng mã nguồn mở 14
2.1.4 Kiến trúc hệ điều hành Android 15
2.2 Các thành phần trong 1 ứng dụng android 18
2.2.1 Activities 18
2.2.2 Services 20
2.2.3 Content Providers 21
2.2.4 Broadcast Receivers 21
2.2.5 Intent 21
2.2.6 File Manifest 22
2.2.7 Resources 26
2.3 Các thành phần giao diện trong Android 27
2.3.1 View 27
2.3.2 ViewGroup 28
2.3.3.Button 28
2.3.5 ImageView 29
2.3.6 ListView 29
2.3.7 TextView 30
2.3.8.EditText 30
2.3.9.CheckBox 31
CHƯƠNG 3 : PHÂN TÍCH THIẾT KẾ HỆ THỐNG 32
3.1 Biểu đồ use – case 32
3.1.1 Xác định các actor và use – case chính 32
3.1.2 Biểu đồ use-case tổng quát 33
3.1.3 Biểu đồ use-case học chữ cái và chữ số 34
Trang 43.1.4 Biểu đồ use-case chức năng nhận biết các vật 34
3.1.5 Biểu đồ usecase chức năng tập viết 35
3.1.6 Biểu đồ use-case chức năng trò chơi 36
3.2 Biểu đồ lớp 37
3.3 Biểu đồ tuần tự 37
3.3.1 Biểu đồ tuần tự cho chức năng học chữ cái và chữ số 37
3.3.2 Biểu đồ tuần tự cho trò chơi tìm chữ cái 38
3.3.3 Biểu đồ tuần tự cho trò chơi trí tuệ (trẻ 4-6 tuổi) 38
3.4 Cơ sở dữ liệu 39
CHƯƠNG 4: GIAO DIỆN CHƯƠNG TRÌNH 40
4.1 Màn hình chính của chương trình 40
4.2 Chức năng dạy bé học chữ cái và chữ số 41
4.3 Chức năng nhận diện đồ vật 42
4.4 Chức năng tập viết 43
4.5 Chức năng trò chơi 44
4.5.1 Trò chơi tìm chữ cái 45
4.5.2 Trò chơi chọn ảnh ghép chữ 46
4.5.3 Trò chơi trí tuệ cho trẻ 4-6 tuổi 47
4.6 Đăng nhập và tạo tài khoản 48
4.7 Cập nhật thông tin 49
4.8 Đổi mật khẩu 50
CHƯƠNG 5: KẾT LUẬN 51
5.1 Kết quả đạt được 51
5.1.1 Về cá nhân 51
5.1.2 Về chương trình 51
5.2 Hạn chế 52
5.3 Hướng phát triển 52
TÀI LIỆU THAM KHẢO 53
Trang 5Danh sách hình
Trang 6CÔNG TY CP CÔNG NGHỆ
NOTA VIỆT NAM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
GIẤY XÁC NHẬN THỰC TẬP
Họ tên cán bộ hướng dẫn:………
Đơn vị thực tập:………
Địa chỉ thực tập:………
Điện thoại liên hệ:………
Họ tên sinh viên thực tập: Đặng Thị Thu Quỳnh Lớp: DCCNTT9.10.IT2 Ngày sinh: 24/11/2021 Điện thoại: 0868172697 Thời gian thực tập: từ ngày……….…… đến ngày:………
Bảng đánh giá nhận xét của công ty: TT Nội dung đánh giá Tốt Khá Trung bình Kém 1 Thực hiện nội quy của công ty 2 Thái độ thực tập 3 Ý thức kỷ luật 4 Tác phong 5 Kiến thức chuyên môn 6 Khả năng hoàn thành công việc 7 Khả năng hòa nhập và thích nghi công việc 8 Tính năng động và sáng tạo trong công việc Nhận xét chung:………
………
………
Đánh giá:………
……, ngày…… tháng…… năm 20…
Xác nhận của công ty
(Ký và ghi rõ họ tên)
Cán bộ hướng dẫn
(Ký và ghi rõ họ tên)
Trang 7LỜI CẢM ƠN
Với sự phát triển nhanh chóng của khoa học công nghệ và đặc biệt là ngành côngnghệ thông tin, làm từng bước thay đổi cuộc sống của con người bởi các ứng dụng sảnphẩm của công nghệ Đi cùng với sự phát triển của ngành công nghệ thông tin là sự rađời ngày càng nhiều thiết bị cầm tay, smartphone Nhu cầu của con người về việc sửdụng và giải trí trên các thiết bị di động cũng ngày càng cao và đa dạng Một trong những
bộ phận ứng dụng công nghệ thông tin chính là thay đổi và giúp đỡ việc sinh hoạt hàngngày của mọi người trong cuộc sống Vì vậy em đã lựa chọn đề tài “Phát triển phần mềm
“Baby learn to spell” trên nền tảng Android” để làm đồ án với ý nghĩa mang tính thực tế
Với mong muốn người dùng có thể ôn lại những kiến thức mình đã học một cáchtốt nhất, những kiến thức quan trọng và sẽ làm bài đạt kết quả cao trong các kỳ thi
Trong thời gian làm đồ án em đã gặp không ít khó khăn nhưng được sự giúp đỡhướng dẫn tận tình Em xin chân thành cảm ơn thầy…– người trực tiếp hướng dẫn đã tậntình hướng dẫn và giúp đỡ em hoàn thành đồ án
Trang 8CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1 Mục tiêu đề tài
Các sản phẩm Smartphone hay Tablet là các thiết bị giải trí, tương tác thông tinđang được tiêu thụ và sử dụng rộng rãi trong cuộc sống hiện đại ngày nay Không chỉnhững người lớn tuổi, yêu thích công nghệ đều sở hữu máy tính bảng để phục vụ chonhu cầu của mình mà ngay cả các trẻ em nhỏ tuổi cũng được cha mẹ trang bị cho thiết bịnày để học tập và giải trí Nhiều nghiên cứu khoa học đã chứng minh sử dụng các thiết
bị Smartphone hay Tablet thường xuyên sẽ gây tác động tích cực lẫn tiêu cực lâu dài vềnhận thức của trẻ em Một số ứng dụng về giáo dục trên máy tính bảng có khả năng ảnhhưởng tích cực tới trí nhớ và khả năng tiếp thu kiến thức của trẻ trong giai đoạn pháttriển
Nghiên cứu về các ứng dụng giáo dục trên iPod touch mới đây đã cho thấy trẻ em ởtầm 5 tuổi có thể nhớ và nắm bắt vốn từ vựng nhanh hơn 27% khi sử dụng các ứng dụngnày, trong khi trẻ có ở độ tuổi 3 tuổi - độ tuổi các khớp thần kinh não bộ đã phát triển tối
đa - nắm bắt được nhanh hơn 17%
Tương tự như vậy, với các chương trình giảng dạy hay tự học dành cho trẻ trên máytính bảng mà điển hình là iPad có mức độ tương tác cao hơn nhiều so với các chươngtrình trên tivi Thông thường trong 1 giờ theo dõi các chương trình trên tivi, thống kê chothấy trẻ mất tập trung khỏi màn hình đến hơn 100 lần Trong khi đó,với các ứng dụngtrên ipad, đứa trẻ sẽ tập trung sự chú ý vào những gì trên màn hình cho đến khi hoànthành bài tập hay trò chơi
Ra đời đã thấm thoắt 5 năm kể từ ngày 05/11/2007, mặc dù phải đối mặt với vô sốthách thức trên con đường phát triển Android hiện đang lớn mạnh và có ưu thế hơn baogiờ hết trên thị trường hệ điều hành dành cho điện thoại thông minh
Với sự lớn mạnh và phát triển vượt bậc trong những năm gần đây, hệ điều hànhAndroid đã cho thấy được thế mạnh của mình trong các thiết bị Smartphone Các ứngdụng, phần mềm phát triển trên Android ngày càng nhiều, và mục đích của các ứng dụng
Trang 9ngày càng đáp ứng được yêu cầu của người dùng Vì vậy nhóm chúng tôi đã quyết địnhlấy Android làm nền tảng cho đề tài của nhóm Qua quá trình tìm hiểu về các ứng dụngdạy học cho trẻ em trên điện thoại sử dụng hệ điều hành Android và những xu hướng mới
về sự tiếp cận công nghệ thông tin của các bé (4 đến 5 tuổi), cũng như được sự giúp đỡ
của cô giáo hướng dẫn thì nhóm chúng em đã chọn đề tài “Phát triển ứng dụng "Baby
learn to spell" trên nền tảng Android” làm đề tài tốt nghiệp.
1.2 Mục tiêu đề tài
Xây dựng ứng dụng hỗ trợ dạy học cho trẻ em trên HĐH Android
- Giao diện thân thiện dễ sử dụng
- Đầy đủ chức năng theo yêu cầu
- Phát triển ứng dụng với nhiều các tính năng hơn nữa
1.3 Giới hạn phạm vi nghiêm cứu
Ứng dụng hỗ trợ dạy học cho trẻ em khoảng từ 2- 6 tuổi, Sử dụng ngôn ngữ Java, ,phần mềm Android Studio, cơ sở dữ liệu SQLite, Firebase
1.4 Ý nghĩa khoa học thực tiễn
Nhận biết 1 số đồ vật bằng cách gọi tên các đồ vật đó dựa vào hình ảnh
Viết chữ cái trên chính màn hình của chiếc SmartPhone chạy hệ điềuhành Android
Chơi các trò chơi, giúp bé học và nhớ chữ cái, nâng cao tư duy hiểu biết
và trí thông minh
Trang 10CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 Giới thiệu hệ điều hành Android
2.1.1 Android là gì ?
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ácthiế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 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áccô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 10năm2008
Android là 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ácnhà 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ìnhviê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ộtloạ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 ứngdụ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ủaAndroid, ướ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ôngnghệ 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 Kết quả 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ất hiện trên TV,máy chơi game 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ững người đam mê sử dụng mã nguồn mở để tạo ranhữ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
Trang 11nhữ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ềuhà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ượtkí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êutrong các vụ kiện liên quan đến bằng phát minh
2.1.2 Lịch sử phát triển
Tổng công ty Android (Android, Inc.) được thành lập tại Palo Alto, California vàotháng 10 năm 2003 bởi Andy Rubin (đồng sáng lập công ty Danger),[20] Rich Miner(đồng sáng lập Tổng công ty Viễn thông Wildfire), Nick Sears (từng là Phó giám đốc T-Mobile), và Chris White (trưởng thiết kế và giao diện tại WebTV) để phát triển, theo lờicủa Rubin, "các thiết bị di động thông minh hơn có thể biết được vị trí và sở thích củangười dùng" Dù những người thành lập và nhân viên đều là những người có tiếng tăm,Tổng công ty Android hoạt động một cách âm thầm, chỉ tiết lộ rằng họ đang làm phầnmềm dành cho điện thoại di động Trong năm đó, Rubin hết kinh phí Steve Perlman,một người bạn thân của Rubin, mang cho ông 10.000 USD tiền mặt nhưng từ chối thamgia vào công ty
Google mua lại Tổng công ty Android vào ngày 17 tháng 8 năm 2005, biến nóthành một bộ phận trực thuộc Google Những nhân viên của chủ chốt của Tổng công tyAndroid, gồm Rubin, Miner và White, vẫn tiếp tục ở lại công ty làm việc sau thương vụnày Vào thời điểm đó không có nhiều thông tin về Tổng công ty, nhưng nhiều ngườiđồn đoán rằng Google dự tính tham gia thị trường điện thoại di động sau bước đi này.Tại Google, nhóm do Rubin đứng đầu đã phát triển một nền tảng thiết bị di động pháttriển trên nền nhân Linux Google quảng bá nền tảng này cho các nhà sản xuất điện thoại
và các nhà mạng với lời hứa sẽ cung cấp một hệ thống uyển chuyển và có khả năng nângcấp Google đã liên hệ với hàng loạt hãng phần cứng cũng như đối tác phần mềm, bắn tincho các nhà mạng rằng họ sẵn sàng hợp tác với các cấp độ khác nhau
Trang 12Ngày càng nhiều suy đoán rằng Google sẽ tham gia thị trường điện thoại di độngxuất hiện trong tháng 12 năm 2006 Tin tức của BBC và Nhật báo phố Wall chú thíchrằng Google muốn đưa công nghệ tìm kiếm và các ứng dụng của họ vào điện thoại diđộng và họ đang nỗ lực làm việc để thực hiện điều này Các phương tiện truyền thôngtruyền thống lẫn online cũng viết về tin đồn rằng Google đang phát triển một thiết bị cầmtay mang thương hiệu Google Một vài tờ báo còn nói rằng trong khi Google vẫn đangthực hiện những bản mô tả kỹ thuật chi tiết, họ đã trình diễn sản phẩm mẫu cho các nhàsản xuất điện thoại di động và nhà mạng Tháng 9 năm 2007, InformationWeek đăng tảimột nghiên cứu của Evalueserve cho biết Google đã nộp một số đơn xin cấp bằng sángchế trong lĩnh vực điện thoại di động.
Ngày 5 tháng 11 năm 2007, Liên minh thiết bị cầm tay mở (Open HandsetAlliance), một hiệp hội bao gồm nhiều công ty trong đó có Texas Instruments, Tập đoànBroadcom, Google, HTC, Intel, LG, Tập đoàn Marvell Technology, Motorola, Nvidia,Qualcomm, Samsung Electronics, Sprint Nextel và T-Mobile được thành lập với mụcđích phát triển các tiêu chuẩn mở cho thiết bị di động Cùng ngày, Android cũng được ramắt với vai trò là sản phẩm đầu tiên của Liên minh, một nền tảng thiết bị di động đượcxây dựng trên nhân Linux phiên bản 2.6 Chiếc điện thoại chạy Android đầu tiên đượcbán ra là HTC Dream, phát hành ngày 22 tháng 10 năm 2008 Biểu trưng của hệ điềuhành Android mới là một con rôbốt màu xanh lá cây do hãng thiết kế Irina Blok tạiCalifornia vẽ
Từ năm 2008, Android đã trải qua nhiều lần cập nhật để dần dần cải tiến hệ điềuhành, bổ sung các tính năng mới và sửa các lỗi trong những lần phát hành trước Mỗi bảnnâng cấp được đặt tên lần lượt theo thứ tự bảng chữ cái, theo tên của một món ăn trángmiệng; ví dụ như phiên bản 1.5 Cupcake (bánh bông lan nhỏ có kem) tiếp nối bằng phiênbản 1.6 Donut (bánh vòng) Phiên bản mới nhất hiện nay là 5.0 Lollipop Vào năm 2010,Google ra mắt loạt thiết bị Nexus-một dòng sản phẩm bao gồm điện thoại thông minh vàmáy tính bảng chạy hệ điều hành Android, do các đối tác phần cứng sản xuất HTC đãhợp tác với Google trong chiếc điện thoại thông minh Nexus đầu tiên, Nexus One Kể từ
đó nhiều thiết bị mới hơn đã gia nhập vào dòng sản phẩm này, như điện thoại Nexus 4 và
Trang 13máy tính bảng Nexus 10, lần lượt do LG và Samsung sản xuất Google xem điện thoại vàmáy tính bảng Nexus là những thiết bị Android chủ lực của mình, với những tính năngphần cứng và phần mềm mới nhất của Android
Năm 2014, Google công báo Android Wear, hệ điều hành dành cho các thiết bịđeo được
2.1.3 Cộng đồng mã nguồn mở
Android có một cộng đồng các lập trình viên và những người đam mê rất năngđộng Họ sử dụng mã nguồn Android để phát triển và phân phối những phiên bản chỉnhsửa của hệ điều hành Các bản Android do cộng đồng phát triển thường đem những tínhnăng và cập nhật mới vào nhanh hơn các kênh chính thức của nhà sản xuất/nhà mạng,tuy không được kiểm thử kỹ lưỡng cũng như không có đảm bảo chất lượng; cung cấp sự
hỗ trợ liên tục cho các thiết bị cũ không còn nhận được bản cập nhật chính thức; hoặcmang Android vào những thiết bị ban đầu chạy một hệ điều hành khác, như HPTouchpad Các bản Android của cộng đồng thường được root sẵn và có những điều chỉnhkhông phù hợp với những người dùng không rành rẽ, như khả năng ép xung hoặctăng/giảm áp bộ xử lý của thiết bị CyanogenMod là firmware của cộng đồng được sửdụng phổ biến nhất, và hoạt động như một tổ chức của số đông khác
Trước đây, nhà sản xuất thiết bị và nhà mạng tỏ ra thiếu thiện chí với việc pháttriển firmware của bên thứ ba Những nhà sản xuất còn thể hiện lo ngại rằng các thiết bịchạy phần mềm không chính thức sẽ hoạt động không tốt và dẫn đến tốn tiền hỗ trợ Hơnnữa, các firmware đã thay đổi như CyanogenMod đôi khi còn cung cấp những tính năng,như truyền tải mạng (tethering), mà người dùng bình thường phải trả tiền nhà mạng mớiđược sử dụng Kết quả là nhiều thiết bị bắt đầu đặt ra hàng rào kỹ thuật như khóabootloader hay hạn chế quyền truy cập root Tuy nhiên, khi phần mềm do cộng đồngphát triển ngày càng trở nên phổ biến, và sau một thông cáo của Thư viện Quốc hội Hoa
Kỳ cho phép "jailbreak" (vượt ngục) thiết bị di động, các nhà sản xuất và nhà mạng đã tỏ
ra mềm mỏng hơn với các nhà phát triển thứ ba, thậm chí một số hãng như HTC,Motorola, Samsung và Sony, còn hỗ trợ và khuyến khích phát triển Kết quả của việcnày là dần dần nhu cầu tìm ra các hạn chế phần cứng để cài đặt được firmware không
Trang 14chính thức đã bớt đi do ngày càng nhiều thiết bị được phát hành với bootloader đã mởkhóa sẵn hoặc có thể mở khóa, tương tự như điện thoại dòng Nexus, tuy rằng thôngthường họ sẽ yêu cầu người dùng từ bỏ chế độ bảo hành nếu họ làm như vậy Tuy nhiên,tuy được sự chấp thuận của nhà sản xuất, một số nhà mạng tại Mỹ vẫn bắt buộc điệnthoại phải bị khóa.
Việc mở khóa và "hack" điện thoại thông minh và máy tính bảng vẫn còn là tácnhân gây căng thẳng giữa cộng đồng và công nghiệp Cộng đồng luôn biện hộ rằng sự hỗtrợ không chính thức ngày càng trở nên quan trọng trước việc nền công nghiệp khôngcung cấp các bản cập nhật thường xuyên và/hoặc ngưng hỗ trợ cho chính các thiết bị củahọ
2.1.4 Kiến trúc hệ điều hành Android
Hình 2.1 Kiến trúc hệ điều hành Android
Trang 15Linux Kernel
Dưới cùng là lớp Linux – Linux 3.6 cùng với khoảng 115 bản vá Lớp này cungcấp 1 cấp độ trừu tượng giữa phần cứng của thiết bị và các thành trình điều khiển phầncứng thiết yếu như máy ảnh, bàn phím, màn hình hiển thị… Đồng thời, hạt nhân (kernel)còn xử lý tất cả các thứ mà Linux có thể làm tốt như mạng kết nối và 1 chuỗi các trìnhđiều khiển thiết bị, giúp cho giao tiếp với các thiết bị ngoại vi dễ dàng hơn
Các thư viện
Ở trên lớp nhân Linux là tập các thư viện bao gồm WebKit – trình duyệt Web mãnguồn mở, được biết đến như thư viện libc, cơ sở dữ liệu SQLite – hữu dụng cho việc lưutrữ và chia sẻ dữ liệu ứng dụng, các thư viênj chơi và ghi âm audio, video, hay các thưviện SSL chiụ trách nhiệm bảo mật Internet…
Các thư viện Android
Đây là các thư viện dựa trên Java phục vụ cho việc phát triển Android Ví dụ củacác thư viện này bao gồm các thư viện ứng dụng dùng để xây dựng giao diện người dùng,
vẽ đồ họa hay truy cập cơ sở dữ liệu 1 số thư viện chính của Android:
android.app – Cung cấp quyền truy cập vào ứng dụng và là nền tảng của tất cả ứng dụngAndroid
android.content – Cung cấp quyền truy cập nội dung (content), truyền tải thông điệp giữacác ứng dụng hay các thành phần của ứng dụng
android.database – Đựoc sử dụng để truy cập dữ liệu của content provider và cơ sở dữliệu SQLite
android.opengl – giao diện các phuơng thức Java để sử dụng OpenGL ES
android.os – Cung cấp các ứng dụng với quyền truy cập vào các dịch vụ của hệ điều hànhbao gồm thông điệp, các dịch vụ hệ thống và các giao tiếp nội tại
android.text – Đựoc sử dụng để hiển thị và điều chỉnh chữ trên màn hình thiết bị
android.view – Các thành phần cơ bản trong việc xây dựng giao diện người dùng của ứngdụng
android.widget – Tập các thành phần giao diện người dùng đã được xây dựng sẵn nhưcác nút, các nhãn (label), list view,…
Trang 16android.webkit – Tập các lớp cho phép xây dựng khả năng duyệt web.
Android Runtime
Đây là phần thứ 3 của kiến trúc và nằm ở lớp thứ 2 từ dưới lên Phần này cung cấp
1 bộ phận quan trọng là Dalvik Vỉtual Machine – là 1 loại Java Virtual Machine đượcthiết kế đặc biệt để tối ưu cho Android
Dalvik VM sử dụng các đặc trưng của nhân Linux như quản lý bộ nhớ và đaluồng, những thứ mà đã có sẵn trong Java Dalvik VM giúp mọ ứng dụng Android chạytrong tiến trình riêng của nó, với các thể hiện (instance) riêng của Dalvik virtual Machine.Android Runtime cũng cung cấp 1 tập các thư viện chính giúp các nhà phát triển ứngdụng Android có thể viết ứng dụng Android bằng Java
Application Framework
Lớp Android Framework cung cấp các dịch vụ cấp độ cao hơn cho các ứng dụngdưới dạng các lớp Java Các nhà phát triển ứng dụng được phép sử dụng các dịch vụ nàytrong ứng dụng của họ
Android Framework bao gồm các dịch vụ chính sau:
Activitty Manager – Kiểm soát tất cả khía cạnh của vòng đời ứng dụng và ngănxếp các Activity
Content Providers – Cho phép các ứng dụng chia sẽ dữ liệu với các ứng dụngkhác
Resource Manager – Cung cấp quyền truy cập vào các tài nguyên như các chuỗi,màu sắc, các layout giao diện người dùng…
Notifications Manager – Cho phép các ứng dụng hiển thị cảnh báo và các thôngbáo cho người dùng
View System – Tập các thành phần giao diện (view) được sử dụng để tạo giaodiện người dùng
Application
Lớp trên cùng của kiến trúc là Application Các ứng dụng bạn tạo ra sẽ được càiđặt trên lớp này Ví dụ như: Danh bạ, nhắn tin, trò chơi…
Trang 172.2 Các thành phần trong 1 ứng dụng android
Một ứng dụng Android được tạo thành bởi một trong các Thành phần (trong kỹthuật ta gọi là Application Components) Mỗi thành phần cung cấp một cách thức khácnhau để hệ điều hành làm việc với ứng dụng Mỗi thành phần tồn tại như một thực thểriêng và đóng một vai trò nhất định giúp xác định hành vi tổng thể của ứng dụng củabạn Có 4 loại thành phần khác nhau trong Android:
có và khai báo các yêu cầu của ứng dụng Manifest cũng sẽ được nói cụ thể hơn ở phầnsau Cuối cùng, ứng dụng Android không thể thiếu Resources, resources là phẩn táchbiệt với source code của ứng dụng, cho phép ứng dụng sử dụng các hình ảnh, âm thanh,font chữ,… làm phong phú thêm các yêu cầu của ứng dụng Chúng ta sẽ làm rõ từngphần kể trên ở các định nghĩa sau đây
2.2.1 Activities
Activity đại diện cho một màn hình duy nhất với một giao diện người dùng mà ở
đó người dùng có thể quan sát và tương tác Ví dụ như một ứng dụng email cómột Activity hiển thị danh sách các email, một Activity khác cung cấp một giao diện đểsoạn thảo email, và một Activity khác nữa cung cấp một giao diện để đọc email,…
Mặc dù các Activity này liên kết chặt chẽ với nhau trong ứng dụng email như ví dụ trênnhằm đem lại trải nghiệm tốt nhất cho người dùng nhưng thực tế chúng hoàn toàn độc lậpvới nhau
Trang 18Các ứng dụng khác (có thể không phải ứng dụng của ta xây dựng) hoàn toàn cóthể khởi chạy các Activity mà chúng ta định nghĩa, dĩ nhiên trong trường hợp ứng dụngemail của chúng ta cho phép.
Mỗi một ứng dụng đều có một “main activity”, đây là Activity sẽ được hiển thịđầu tiên khi ứng dụng được khởi chạy, một ứng dụng sẽ có một main activity và thôngthường sẽ phải có thêm nhiều Activity khác
Một Activity có thể khởi chạy các Activity khác Mỗi lần một Activity mới đượckhởi chạy thì Activity trước đó bị stop và hệ thống sẽ lưu Activity stop này vào một backstack Việc quay lại các Activity trước đó (khi người dùng nhấn vào nút back trên thiết bịchẳng hạn) thì hệ thống chỉ đơn giản lấy các Activity đã lưu trữ trong back stack,
và Activity được lấy trong back stack này tiếp tục sẽ được hiển thị lên màn hình ngườidùng Back stack kể trên được tổ chức theo đúng tiêu chí của một stack, đó là “vào sau, ratrước” (last in, first out), chúng ta có thể tìm hiểu thêm về stack bằng cách search trênGoogle hoặc ở nguồn này http://en.wikipedia.org/wiki/Stack_(abstract_data_type)
Để hình dung rõ ràng hơn về việc back stack làm việc với các Activity như thế nào, tahãy xem sơ đồ sau
Hình 2.2 Vòng đời hoạt động của Android
Ở sơ đồ trên, khi ứng dụng được khởi chạy, một main activity sẽ được kích hoạtban đầu, ví dụ như trên ta thấy main activity chính là Activity 1, Activity 1 sẽ được tựđộng chứa trong back stack và đang ở dạng foreground, tức là đang được hiển thị lên mànhình Sau đó Activity 1 này sẽ start một Activity khác (do hành vi người dùng nhấn vào
Trang 19một button nào đó, hoặc Activity 1 tự động start Activity 2 theo timer được định sẵn theokịch bản chẳng hạn), như hình ta thấy Activity 2 được hiển thị ở foreground, tức là lúcnày Activity 2 sẽ thay Activity 1 hiển thị lên màn hình, Activity 1 sẽ không mất đi mà chỉtạm stop lại rồi được lưu giữ ở back stack Sau đó Activity 2 lại start Activity 3, và cũngnhư trên, Activity 3 sẽ giữ vai trò foreground, còn Activity 2 và Activity 1 thì tiếp tụcđược lưu giữa trong back stack Đến lúc này nếu người dùng nhấn nút back trên thiết bị,thì Activity 3 sẽ bị lấy ra khỏi stack, chính lúc này Activity 3 mới bị destroy, tức là bị hủyluôn không thuộc diện quản lý của back stack, vai trò foreground hiển thị lên màn hìnhđược nhường lại cho Activity kế đó bị đưa vào back stack lúc trước đó là Activity 2 Cứnhư vậy nếu người dùng tiếp tục nhấn nút back thì Activity 1 lại tiếp tục được hiển thị
ra foregroud còn Activity 2 bị hủy Nếu người dùng lại tiếp tục nhấn back nữathì Activity 1 cũng bị hủy khỏi back stack, lúc này ứng dụng xem như bị đóng lại (ngừnghoạt động) Để hiểu rõ hơn hoạt động của back stack, có thể xem thêm thông tin ởtrang http://developer.android.com/guide/components/tasks-and-back-stack.html
Trang 20Một bound service cung cấp một giao diện client-server để cho phép các thànhphần có thể tương tác được với nhau.
Thời gian sống của một bound service phụ thuộc vào thành phần liên kết (bound)với nó, tức là thành phần liên kết còn tồn tại thì bound service còn tồn tại và ngược lại
Nhiều thành phần có thể liên kết với một bound service tại một thời điểm, nhưngkhi tất cả các thành phần này đều ngưng liên kết (unbind) thì service loại này cũng bị hủytheo
Service sẽ được đề cập chi tiết hơn ở các bài học buổi khác
2.2.3 Content Providers
Content Provider quản lý một tập hợp các dữ liệu được chia sẻ của ứng dụng.Thông qua Content Provider, các chương trình khác có thể truy xuất hoặc thậm chíthay đổi các dữ liệu của một ứng dụng (nếu Content Provider cho phép)
Ví dụ hệ điều hành Android cung cấp một Content Provider quản lý danh bạ điệnthoại Thông qua Content Provider này mà các ứng dụng (có các quyền thích hợp) có thểđọc hoặc thêm thông tin vào danh bạ điện thoại này
Content Provider dĩ nhiên còn hữu ích cho cả việc đọc và ghi dữ liệu private của ứngdụng và không chia sẻ ra ngoài
2.2.4 Broadcast Receivers
Broadcast Reveiver là một thành phần dùng để trả lời các thông điệp được phát ra
từ hệ thống
Trong quá trình thiết bị di động vận hành có rất nhiều thông điệp khác nhau được
hệ thống thông báo như: màn hình đã tắt, pin yếu, đã chụp xong một tấm hình,…
Một Broadcast Receiver không tạo một giao diện người dùng nhưng nó có thể tạomột thông báo (notification) trên thanh trạng thái (status bar) để báo động người dùng khimột sự kiện nào đó xảy ra
2.2.5 Intent
Ba trong số bốn loại thành phần của ứng dụng (activity, service, broadcastreceiver) đều được khởi chạy bởi một lời gọi bất đồng bộ, ta gọi là Intent
Trang 21Intent tạo nên một cơ sở gắn kết giữa các thành phần trong ứng dụng lại với nhau.Intent cũng sẽ được đề cập chi tiết hơn nữa ở bài sau.
Chỉ định Minimum Required SDK, là hệ điều hành thấp nhất của Android mà ứngdụng của ta hỗ trợ, thông số này được tạo ra khi chúng ta tạo một ứng dụng mới ở Bài 2,khi đó chúng ta đã chỉ ra Minimum Requied SDK và thông số chúng ta chỉ định đó sẽđược lưu vào thuộc tính này của file Manifest
Chỉ định các tính năng phần cứng và phần mềm mà ứng dụng của ta muốn sử dụngđến, như camera, bluetooth, hay ngay cả tính năng multitouch
Một số các thư viện bên ngoài (bên ngoài ở đây có thể hiểu là các thư viện không
có sẵn trong các API Framework của chúng ta) mà ứng dụng của ta có sử dụng đến, nhưthư viện Google Maps, Google Play,…
Khi tạo mới một ứng dụng, ADT sẽ tự động tạo cho chúng ta mộtfile AndroidManifest.xml, chúng ta có thể làm theo các bước sau để xem cụ thể một fileManifest sẽ trông như thế nào
Trong Eclipse, tìm đến cửa sổ Package Explorer, tìm đến project Reminder củachúng ta đã tạo trước đó, ta tìm file Manifest trong cây thư mục của project Reminder nàynhư hình sau, click đúp vào file Manifest để mở nó lên (lưu ý là click đúp, vì một số bạnnếu đã lập trình iOS trước đó sẽ quen với việc click đơn để mở một file trong Xcode,trong Eclipse thì khác, khi muốn mở một file ta phải click đúp)
Trang 22Hình 2.3 Thư mục Android Manifest
Bất cứ một file xml nào, kể cả file Manifest.xml lẫn các file resource xml cũngđều mặc định ban đầu được mở lên với một màn hình có nhiều tab bên dưới, mục đíchcủa màn hình này là sẽ cung cấp cho chúng ta có được nhiều tùy chọn hơn trong việcreview và tùy chỉnh nội dung của file xml Thường thì các tab đầu sẽ cung cấp một số cácgiao diện chỉnh sửa, còn tab cuối sẽ là các đoạn code xml cho chúng ta chỉnh sửa thủcông bằng tay Trong các bài này và các bài sau chúng ta tập chung chủ yếu vào việcreview và chỉnh sửa các file xml một cách thủ công bằng tay, vừa chính xác lại dễ quản
lý sau này, hơn là các giao diện tự động sẽ làm rối file xml của chúng ta hơn nữa, bởi
vì Eclipse không phải là một công cụ chuyên biệt cho Android, nên các giao diện tự độngcủa Eclipse (có cả của ADT nhúng vào) sẽ không đảm bảo và dễ gây ra các lỗi ngớ ngẩnkhó chịu sau này
Trang 23Như đã nói ở trên, chúng ta nhìn vào dãy tab bên dưới và click vào tabAndroidManifest.xml để mở code xml ra review Tôi khuyên bạn nên chọn lần lượt từngtab và có cái nhìn tổng quan trước mỗi tab như thế nào, vì tùy thuộc mỗi người sẽ chọncho mình một phong cách làm việc sau này, đối với tôi thì tôi thích sửa code xml, nhưngbạn có thể sử dụng các cách thức khác hiệu quả hơn đối với bản thân bạn thì càng tốt.
Hình 2.4 File AndroidManifest.xml
Dưới đây sẽ giải thích một số ý nghĩa và cách sử dụng của các tagtrong AndroidManifest.xml
<manifest> là thẻ gốc Thuộc tính quan trọng mà bạn cần quan tâm trong thẻ này
là package Cũng như Minimum Required SDK, package xuất hiện sau khi bạn tạo mộtứng dụng mới ở Bài 2, khi đó bạn đã khai báo một package name và cái tên chúng ta đãchỉ chỉ định khi đó sẽ được lưu vào trường này của file Manifest Ngoài ý nghĩacủa package name đã được giải thích ở Bài 2, package còn chỉ ra đây là tên gốc của ứngdụng, để đến khi bạn cần cung cấp một class mới ở bất cứ nơi nào khác trong fileManifest này, bạn chỉ việc đặt một dấu chấm (.) đằng trước thay cho cả đường dẫncủa package gốc Như ví dụ trên thay vì cung cấp tên đầy đù cho MainActivity
Trang 24là android:name=”com.example.reminder.MainActivity” thì ta chỉ cần ghi vắn tắt
là android:name=”.MainActivity”
<uses-sdk> xác định phiên bản hệ điều hành để chạy được chương trình Cũng như cácthuộc tính trên, thuộc tính của trường này cũng được tạo ra sau khi ta chỉ định các giátrị Minimum Requires SDK và Target SDK khi tạo project mới ở Bài 2
<application> là thẻ quan trọng nhất trong file này Nó chỉ định ra các thành phần cótrong một ứng dụng
android:icon là thuộc tính chỉ định hình ảnh dùng làm icon cho ứng dụng của chúng ta,bạn có thể thay đổi đường dẫn cho icon của ứng dụng bằng cách thay đổi tên hình trongtrường này
android:label là thuộc tính chỉ ra dòng text nào sẽ được dùng làm tên của ứng dụng, cả 2thuộc tính kể trên đây đều tùy thuộc vào bạn tạo mới một ứng dụng ở Bài 2, khi bạn chỉđịnh một Application Name và một icon cho nó
<activity> khai báo một Activity, nó bao gồm các thuộc tính cơ bản sau:
android:name khai báo tên và đường dẫn đến một Activity, tất nhiên đường dẫn nàychính là package mà Activity đó nằm trong, và chúng ta có thể không cần khai báo fullpackage name mà chỉ cần đại diện bằng dấu (.) nếu package name của Activity này trùngvới trường package đã khai báo ở tag <manifest> như đã nói ở trên
android:label chỉ định tên cho Activity, tên này sẽ xuất hiện trên title bar của ứng dụngkhi Activity này hiển thị, như hình bên dưới
Hình 2.5 Ví dụ về Label
<intent-filter> xác định xem trong điều kiện khi nào thì Activity mà thẻ này đangnằm trong đó được hiển thị Như hình trên kia, thẻ này xác định Activity chứa nó
Trang 25là Activity chính của chương trình và sẽ là Activity xuất hiện đầu tiên khi người dùngstart ứng dụng.
Dĩ nhiên những gì đã đề cập trên đây chỉ là một phần của file Manifest, vì đượcdùng để định nghĩa tất cả những gì có trong ứng dụng nên file Manifest rất quan trọng, sẽđược đề cập nhiều hơn nữa ở bài sau
2.2.7 Resources
Một ứng dụng không thể thiếu các resource, đó là các hình ảnh, font chữ, màu sắc,
âm thanh… dùng để tăng thêm sự phong phú và tính thẩm mỹ cho ứng dụng Ở bài tổngquan này chúng ta tìm hiểu một các sơ lược về resource, cụ thể như thế nào sẽ được làm
rõ hơn trong các bài sau
Thông thường khái niệm resource trong Android được hiểu như là một cái gì
đó tách biệt với source code, source code là nơi chứa đựng java code và các logic của ứngdụng, trong khi resource là những gì còn lại của ứng dụng không phải là source code
Resource được chứa đựng trong thư mục res/ (bạn có thể nhìn vào PackageExplorer để thấy thư mục Resource này), trong thư mục này còn có rất nhiều thư mụckhác giúp nhóm các resource theo loại và theo các tính năng mà resource đó hỗ trợ
Cụ thể từng loại và tính năng của resource được nói rõ hơn ở bài sau, ở đây ta chỉnhắc đến 2 loại resource lớn
Default resources: là tất cả các resource mà chúng ta không cần quan tâm đến việchiển thị khác nhau như thế nào trong các thiết bị, resource này sẽ hiển thị default nhưnhững gì nó được cung cấp ở tất cả các thiết bị
Alternative resources: là các resosurce sẽ phụ thuộc vào cụ thể thiết bị mà ta đã chỉđịnh, chẳng hạn ta muốn ứng dụng chạy trên thiết bị có ngôn ngữ mặc định là tiếng Việt
sẽ phải load các text tiếng Việt, hình ảnh cờ Việt, còn nếu ứng dụng chạy trên thiết bị cóngôn ngữ mặc định là tiếng Anh sẽ load các text tiếng Anh, hình ảnh cờ Anh,…
Trang 262.3 Các thành phần giao diện trong Android
2.3.1 View
View là gì? View đơn giản là một thành phần hiển thị trên màn hình.
Một cái nút (Button) là một View
Một cái thanh kéo (SeekBar) cũng là một “View”: Vậy chúng ta có thể phán chắc
nịch luôn: Cái gì hiển thị trên màn hình thì nó là View.
Trong Android có rất nhiều loại View, phù hợp nhiều nhu cầu Bản thân lập trình
viên cũng có thể tự tạo ra view của riêng mình bằng cách code các lớp Java extends từ
lớp View Tí nữa ở cuối bài biết đâu sẽ có ví dụ, hí hí Một số loại View tiêu biểu là
(mình lấy ví dụ ở bản Android 6.0 mới):
TextView: Hiển thị chữ Có thể thay đổi nội dung chữ, màu sắc, kích cỡ, kiểu
đậm/gạch chân,…
Button: Nút Có thể thay đổi độ rộng, cao, màu nền nút, kiểu viền, đổ bóng,… Switch: Công tắc Có 2 chế độ gạt qua gạt lại như chơi điện tử, nhưng mà chỉ trái-
phải thôi
EditText: Trường nhập văn bản Là một ô nhập văn bản Văn bản ở EditText có
thể là 1 hay nhiều dòng, có thể cài đặt đầu vào chỉ được nhập số, nhập chữ hay nhập dạngmật khẩu
SeekBar: Thanh kéo Sử dụng khi người dùng muốn thao tác gì đó về biên độ / độ
lớn bằng tay Các View có những thuộc tính khác nhau, gọi là các attributes Ví dụ
như EditText thì có attributes là maxLength (số ký tự tối đa) và maxLines (số dòng tối đa) TextView thì có fontSize (cỡ chữ) và inputType (kiểu nhập: số / chữ / email,…).
Tuy nhiên các View đều có một số attributes chung như:
Layout_width: Độ dài chiều ngang của View Có thể là con số cụ thể hoặc là
wrap_content (Bao đủ nội dung bên trong thì thôi), hay match_parent (bằng với chiềungang của View chứa nó)
Layout_height: Độ dài chiều dọc của View Có thể là con số cụ thể hoặc là
wrap_content (Bao đủ nội dung bên trong thì thôi), hay match_parent (bằng với chiều dọccủa View chứa nó)