Bài giảng Lập trình di động - Bài 1: Giới thiệu về lập trình Java trên Android OS

pdf 64 trang Gia Huy 17/05/2022 3090
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình di động - Bài 1: Giới thiệu về lập trình Java trên Android OS", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_lap_trinh_di_dong_bai_1_gioi_thieu_ve_lap_trinh_ja.pdf

Nội dung text: Bài giảng Lập trình di động - Bài 1: Giới thiệu về lập trình Java trên Android OS

  1. LẬP TRÌNH DI ĐỘNG Bài 1: giới thiệu về lập trình javatrên Android OS 1
  2. Nội dung 1. Giới thiệu môn học 2. Thiết bị di động vs thiếtbị cố định 3. Thị trường ứng dụng cho di động 4. Hệ điều hànhAndroid 5. Lập trình trên android 6. Môi trường lậptrình ▪ Android Studio ▪ Máy ảo Genymotion 7. Chương trình đầu tiên 2
  3. Phần 1 Giới thiệu môn học 3
  4. Tài liệu học tập ▪ Bài giảng môn học + demo + tài liệu đọc thêm ▪ Tài liệu tham khảo: ▪ Raymond Gallardo, Scott Hommel, Sowmya Kannan, Joni Gordon, Sharon Biocca Zakhour. The Java Tutorial: A Short Course on the Basics, 6th edition. Online version: ▪ Dave MacLean, Satya Komatineni, Grant Allen. Pro Android 5. Apress, 2015 4
  5. Kiến thức yêu cầu / nên biết ▪ Kiến thức về ngôn ngữ lập trình java ▪ Kiến thức về lập trình hướng đối tượng (cơbản) ▪ Kiến thức về SQL (cơbản) ▪ Kiến thức về XML (cơ bản) ▪ Kiến thức về kiến trúc máy tính (đặc biệtlà của thiết bị diđộng) ▪ Kiến thức về hệ điều hành ▪ Đã từng sử dụng một thiết bị diđộng nào đó 5
  6. Đánh giá kết quả ▪ Điểm môn học = ĐQT x 50% + ĐTCK x50% ▪ Điểm quá trình: ▪ Điểm danh ▪ Thảo luận ▪ Bài tập ▪ Mini project (dự kiến) ▪ Điểm thi cuối kỳ: ▪ Trắc nghiệm ▪ Không có giới hạn nội dung thi 6
  7. Học môn này có lợi gì? ▪ Có kiến thức về lập trình cho thiết bị di động ▪ Có hiểu biết sâu sắc hơn về hoạt động của các thiết bị di động và phần mềm trên các thiết bị đó, khai thác tốt hơn các thiếtbị đó ▪ Có khả năng viết chương trình đơn giản chocác thiết bị diđộng ▪ Có thêm lựa chọn cho đề tài làm tốt nghiệp ▪ Có điểm môn học và được ratrường 7
  8. Nội dung môn học ▪ Giới thiệu về lập trình di động vàAndroid ▪ Activity, layout và các điều khiển cơ bản ▪ Xử lý sựkiện ▪ Intent, Notification và Menu ▪ Lưu trữ, SQLite và content provider ▪ Dịch vụ và Broadcast Receiver ▪ Khai thác các dịch vụ di động ▪ Các chủ đề nângcao 8
  9. Công cụ học tập ▪ Công cụ đề xuất: Android Studio ▪ Công cụ được Google khuyến cáo ▪ Miễn phí, mạnh mẽ, tương thíchtốt ▪ Yêu cầu cấu hìnhcao ▪ Một số công cụ khác có thể thử ▪ Eclipse, NetBeans, Xamarin, Unity, ▪ Tất cả các công cụ trên đều cần bộ phát triển ứng dụng java: JDK (java developmentkit) ▪ Đề xuất sử dụng phiên bản 8, 64 bit 9
  10. Phần 2 Thiết bị di động vs thiết bị cố định 10
  11. Di động vs Cố định ▪ Thiết bị di động (với ý nghĩa là giao tiếp không dây) đã xuất hiện từ rấtlâu ▪ Tăng trưởng mạnh về số lượng khi xuất hiện thiết bị dành cho cá nhân (nhỏ, gọn, nhiều kháchhàng) ▪ Bùng nổ khi giá thiết bị giảm (nhiềukhách hàng có khả năng mua) ▪ Thiết bị di động dần thay thế cho thiết bị cố định do việc mua để thay thế thiết bị cũ ▪ Xuất hiện những chức năng mới, dịch vụ mớivà cuối cùng là những loại thiết bịmới 11
  12. Chức năng mới ▪ Giao tiếp kiểu chạm-vuốt (bàn phím hạn chế) ▪ Tích hợp chụp ảnh, máy chơi nhạc, máy điện thoại và thêm nhiều thiết bị nữa trong tươnglai ▪ Tích hợp các cảm biến, thiết bị có khả năng tương tác tốt hơn do “nhận ra”môi trường xung quanh ▪ Ghi nhận được độ nghiêng của thiết bị ▪ Ghi nhận được gia tốc và hướng di chuyển của thiết bị ▪ Ghi nhận được âm thanh, nhiệt độ, ánh sáng xungquanh ▪ Nhiều giao tiếp không dây: bluetooth, wifi, nfc, ▪ Khai thác tốt các dịch vụ online (GPS,OTT, ) 12
  13. Dịch vụ mới ▪ Tổng hợp tiếng nói (ví dụ: đọc email raloa) ▪ Nhận dạng âm thanh, hình ảnh ▪ Dịch vụ vị trí, bản đồ và dichuyển ▪ Các dịch vụ sáng tạo trên nền giao thức mạng: ▪ Chat, nhắn tin ▪ Video thoại ▪ Mạng xã hội ▪ Đặt hàng online ▪ Thông tin tứcthời ▪ 13
  14. Loại thiết bị mới 14
  15. Phần 3 Thị trường ứng dụng cho di động 15
  16. Bối cảnh ▪ Sự phát triển của các thiết bị di động thôngminh ▪ Nhu cầu giải trí qua thiết bị di động tăng cao ▪ Cần các ứng dụng giải trí cho di động ▪ Cần nhiều dịch vụ giải tríhỗ trợ di động ▪ Xuất hiện nhu cầu làm việc qua thiết bị di động ▪ Cần các ứng dụng hỗ trợ công việc ▪ Hệ thống hiện tại cần mở rộng để hỗ trợ di động ▪ Các tương tác kiểu mới xuất hiện ▪ Sự phát triển của kênh phânphối ▪ Sự phát triển của kênh thanhtoán 16
  17. Cơ hội cho lập trình viên ▪ Thị trường ứng dụng cho di động tăng trưởngnóng ▪ Chuyển đổi các ứng dụng đã có lên di động ▪ Chuyển đổi các ứng dụng di động sang loại thiết bịmới ▪ Phát triển những ứng dụng mới hoàn toàn, khaithác khả năng đặc biệt của di động ▪ Nhu cầu nhân lực viết phần mềm cho di độngcao ▪ Tăng trưởng về lương cho người làm di động ▪ Đỡ nhàm chán vì xuất hiện những công nghệ mới ▪ Cơ hội thực hiện các ý tưởngmới ▪ Tự viết và bán ứng dụng: không còn quá khó như trước 17
  18. Các nền tảng dùng cho di động ▪ (1973) embedded OS ▪ (2009) webOS (Palm) ▪ (1996) Palm OS ▪ (2009) Bada (Samsung) ▪ (1996) Windows CE ▪ (2010) Windows Phone ▪ (1999) Nokia S40 ▪ (2011) MeeGo ▪ (2000) Symbian ▪ (2012) Firefox OS ▪ (2002) BlackBerry ▪ (2013) Ubuntu Touch ▪ (2005) Maemo OS (Nokia) ▪ (2013) Sailfish OS ▪ (2007) iOS ▪ (2013) Tizen ▪ (2008) Android 18
  19. Thị phần các nền tảng toàn cầu 19
  20. Thị phần các nền tảng toàn cầu ▪ Nền tảng android thống trị về sốlượng ▪ Nền tảng iOS giảm nhưngchậm ▪ Không có nhiều cơ hội cho các tay chơi khác ngoại trừ xuất hiện một loại thiết bị có tính đột phá (như iPhone trước kia) 20
  21. Thị phần các nền tảng tại Mỹ 21
  22. Thu nhập trên mỗi app/month 22
  23. So sánh 3 chợ ứng dụng 23
  24. Phần 4 Hệ điều hành Android 24
  25. Android ▪ Hệ điều hành tốiưu cho di động, dựa trên nhân linux, dòng vi xử lýARM ▪ Có thể được tùy biến cho thiếtbị di động và những hệ thống nhúng ▪ Android được phát triển và hỗ trợ bởi liên minh OHA (Open Handset Allien) gồm nhiều công ty phần cứng, phần mềm và dịch vụ: Google, HTC, LG, Samsung, Motorola, Sprint, T-Mobile, NVIDIA,Intel, Broadcom, Qualcom, ▪ Có 2 phiên bản song song: Android & GoogleAPI 25
  26. Android: đặc điểm nổi bật ▪ Đa luồng (multithread) ▪ Web ready (html5, css3, javascript, flash) ▪ Open GL ▪ Java ▪ Đa chạm (multitouch) ▪ Media (full HD video, mpeg4, H.264, mp3, ) ▪ Network ready (wifi, 3g, bluetooth, ) ▪ GPS ▪ Sensors 2726
  27. Android: lịch sử phát triển ▪ Google mua Android Inc 17-8-2005 ▪ Ra mắt cộng đồng tháng 11-2007, thành lập OHA ▪ Phiên bản 1.0 ra mắt tháng9-2008 ▪ Phiên bản 1.1 ra mắt tháng2-2009 ▪ Phiên bản 1.5 (Cupcake) ra mắt tháng 4-2009 ▪ ▪ Phiên bản 5.0 (Lollipop) ra mắt tháng10-2014 ▪ Phiên bản 6.0 (Marshmallow) ra mắt tháng11-2015 ▪ Phiên bản 7.0 (Nougat) ra mắt tháng3-2017 27
  28. Android: nâng cấp & mở rộng 28
  29. Android: phân mảnh (3/4/2017) 29
  30. Phần 5 Lập trình trên android 30
  31. Lập trình android: Kiến trúc OS ▪ Android OS chia thành tầng ứng dụng và các tầng trung gian để LTVcó thể mở rộng hoặc tùy chỉnh theo mục đích ứng dụng họ viết ▪ Có 4 tầng trong HDH Android gồm: ▪ Application Framework ▪ Android Runtime ▪ Native Libraries ▪ Linux Kernel ▪ Tầng cao hơn sử dụng API của các tầng bên dưới ▪ Về lý thuyết thì LTV can thiệp được vào mọitầng 31
  32. Lập trình android: Kiến trúc OS Dev Dev or Google Google 32
  33. Lập trình android: Kiến trúc OS ▪ Linux Kernel: thấp nhất ▪ Mọi xử lý của hệ thống đều phải thông qua tầng này ▪ Cung cấp các trình điều khiển thiết bị phầncứng • Camera • USB • Wifi / Bluetooth • Display • Power Management • ▪ Quản lý CPU và điều phối hoạt động các tiến trình ▪ Quản lý bộ nhớ ở mức vật lý 33
  34. Lập trình android: Kiến trúc OS ▪ Native Libraries: thư viện các hàm lậptrình ▪ System C library: có nguồn gốc từ hệ thống thư viện chuẩn C (libc), điều chỉnh các thiết bị nhúng trênLinux ▪ Media Libraries (mở rộng từ PacketVideo'sOpenCORE) thư viện hỗ trợ playback và recording của nhiều định dạng video, audio và image phổ biến • MPEG4 • H.264 • MP3 • AAC • JPG/PNG/GIF 34
  35. Lập trình android: Kiến trúc OS ▪ Native Libraries (tiếp): ▪ Surface Manager: quản lý việc hiển thịvà kết hợp đồ họa 2D và 3D ▪ OpenGL: thư viện đồ họa tiêuchuẩn ▪ 3D libraries: thư viện 3D dựa trên OpenGL ES, có nâng cấp tăng tốc "hardware 3D acceleration“ ▪ SSL: thư viện hỗ trợ mã hóa kết nối mạng ▪ SQLite: động cơ cơ sở dữ liệu của ứng dụng ▪ Webkit: bộ diễn dịch HTML, CSS & Javascript ▪ 35
  36. Lập trình android: Kiến trúc OS ▪ Android Runtime: hỗ trợ việc chạy ứngdụng ▪ Máy ảo Dalvik: giúp thực thi các ứng dụng android,mỗi ứng dụng chạy trên một tiến trình riêng của Dalvik VM ▪ Máy ảo Dalvik thực thi các file mang định dạng .dex (Dalvik Excutable), định dạng này là định dạng đãđược tối ưu hóa để chỉ chiếm một vùng nhớ vừa đủ dùng và nhỏ nhất có thể ▪ Máy ảo ART, xuất hiện trong các phiên bản Android mới, sử dụng kĩ thuật biên dịch tức thời để có thể giúp ứng dụng chạy nhanh hơn, không hoàn toàn tương thích với mọi ứng dụng Android hiệnthời 36
  37. Lập trình android: Kiến trúc OS ▪ Application Framework ▪ Nơi cung cấp các API có sẵn để sử dụng các tính năng của phần cứng mà không cần hiểu cấu trúc bên dưới ▪ CácAPI được chia thành các nhóm: View UI, Content Providers, Resource Manager, Notification Manager, Activity Manager, ▪ Cung cấp các thành phần cơ bản để tạo nên ứng dụng Android mà ta thườngthấy ▪ Các thành phần của tầng này gần như tương đương 1-1 với các gói thư viện java trong Android SDK do Google cung cấp cho các nhà phát triển ứng dụngAndroid 37
  38. Lập trình android: Ưu điểm ▪ Mã nguồn mở ▪ Miễn phí ▪ Đơngiản ▪ Mạnh mẽ ▪ Phổ biến (tài liệu, mã minh họa, thưviện) ▪ Sử dụng JAVA + XML để viết ứngdụng ▪ Thị phần lớn ▪ Kênh phân phối sẵn có ▪ Cộng đồng phát triển đông đảo 38
  39. Lập trình android: SDK vs NDK ▪ Có thể viết ứng dụng android bằng nhiều ngôn ngữ và nhiều cách khác nhau ▪ Viết bằng Java, chạy trên máy ảo: dùng SDK ▪ Viết bằng C/C++ chạy trực tiếp trên CPU: dùng NDK ▪ SDK: viết nhanh, chạy chậm, chi phí thấp, tương thích cao, bảo trì dễ ▪ NDK: viết lâu, chạy nhanh, chi phí cao, tươngthích thấp, bảo trì khó ▪ Ngoài ra có thể dùng các ngôn ngữ lập trình khác hoặc các framework của nhà phát triển thứba 39
  40. Phần 6 Môi trường lập trình 40
  41. Môi trường lập trình ▪ Android có thể phát triển trên hầu hết các hệ điều hành phổ biến hiện nay: ▪ Windows 32 bit: từ Windows XP trở lên ▪ Windows 64 bit:từ Windows Vista trở lên ▪ Mac OS X 10.4.8 or later (x86only) ▪ Ubuntu ▪ Môi trường phát triển: ▪ JDK (Java Development Kit) 1.6 or higher ▪ Android SDK ▪ IDE (Android Studio, Eclipse, Netbean, ) 41
  42. Môi trường lập trình ▪ Android SDK (Android Software Development Kit): công cụ phát triển ứng dụng cho Android OS, chỉ gồm tài liệu, máy ảo và các công cụ dịch, không có giao diện phát triển tích hợp(IDE) ▪ Các thành phần chính của AndroidSDK: ▪ Bộ công cụ giúp dịch mã java thành ứngdụng ▪ Các công cụ tiện ích cho lập trình viên để có thể dễdàng tìm hiểu và xử lý các vấn đề đặt ra khi viết ứng dụng ▪ Nhóm các tài nguyên ứng với từng bản AndroidOS ▪ Thư viện bổ sung cho phép LTV dễ dàng khai thác các dịch vụ của Google (Maps, AdMod,YouTube, ) 42
  43. Môi trường lập trình ▪ Với một phiên bản Android OS, SDK cung cấp: ▪ Tài liệu lập trình ứng với phiên bảnđó ▪ Thư viện các gói lập trình cơ bản cho phiên bảnđó ▪ Thư viện các gói lập trình bổ sung cho phép khai thác dịch vụ của Google (Google APIs) ứng với phiên bản đó ▪ Các file ảnh để tạo máy ảo cho phiên bản hiệntại ▪ Mã nguồn của phiên bản hiệntại ▪ Chú ý: Android SDK có thể tải về từng phần liên quan tới nội dung cần phát triển,bản đầy đủ kích thước khá lớn (vài chục GB) 43
  44. IDE cho phát triển android app Android Studio 44
  45. IDE cho phát triển android app Eclipse + Android SDK 45
  46. IDE cho phát triển android app Xamarin + Visual Studio 46
  47. Phần 6.1 Cài đặt Android Studio 47
  48. Cài đặt Android Studio ▪ Android Studio là bộ công cụ phát triển riêng cho android, được google tự xây dựng, giới thiệu chính thức vào tháng 5/2013 ▪ Dựa trên bộ IDE khá nổi tiếng IntelliJ IDEA ▪ Ưu điểm: ▪ “Hàng chính chủ” ▪ Hỗ trợ android tốt hơn so vớiEclipse ▪ Nhược điểm: ▪ Chạy khá chậm ▪ Không ổn định khi làm việc trênWindows 48
  49. Cài đặt Android Studio ▪ Cài đặt theo hướng dẫn trên trangchủ ▪ ▪ Hỗ trợ cả Windows, Mac OS và Linux ▪ Yêu cầu phải có Java SDK cài đặt sẵn từ trước ▪ Bản thông dụng đã tích hợp sẵn Android SDK ▪ Vẫn có thể sử dụng lại Android SDK từ trước (chẳng hạn như tình huống dùng chung Android SDKvới eclipse hoặc IDEkhác) 49
  50. Phần 6.2 Máy ảo genymotion 50
  51. Máy ảo genymotion ▪ Mộttrong những công đoạn quan trọng trong phát triển phần mềm là chạy thử sảnphẩm ▪ Sử dụng thiết bịthật: ▪ Bật chế độ usbdebug ▪ Bật chế độ developer ▪ Cho phép sử dụng app từ “unknown source” ▪ Sử dụng thiết bị ảo: chạy giả lập trên máy tính,hỗ trợ hạn chế, chậm, chi phí thấp ▪ Máy ảo genymotion: nhanh, giống với máythật ▪ 51
  52. Phần 7 Chương trình đầu tiên 52
  53. Khởi động Android Studio 53
  54. Đặt tên ứng dụng, tên package, 54
  55. Chọn phiên bản hệ điều hành 55
  56. Chọn giao diện ban đầu 56
  57. Đặt tên cho giao diện 57
  58. Android Studio thiết đặt project 58
  59. Giao diện của Android Studio 59
  60. Chọn thiết bị chạy thử 60
  61. Kết quả chạy thử 61
  62. Thêm 2 nút bấm vào giao diện 62
  63. Viết mã xử lý sự kiện 63
  64. Chạy lại chương trình mới 64