Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
2,96 MB
Nội dung
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP THÁI NGUYÊN - BÁO CÁO BÀI TẬP LỚN MƠN HỌC: LẬP TRÌNH TRÊN THIẾT BỊ ANDROID Sinh viên: Trần Quang Hào Giảng viên hướng dẫn: ThS.Đỗ Duy Cốp ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ANDROID ĐỌC BÁO MẠNG QUA DỊCH VỤ RSS CHƯƠNG 1: GIỚI THIỆU HỆ ĐIỀU HÀNH ANDROID • Giới thiệu hệ điều hành Android Android hệ điu hành dựa nn tảng Linux thiết kế dành cho thiết bị di động có hình cảm ứng điện thoại thơng minh máy tính bảng Ban đầu, Android phát triển Tổng công ty Android, với hỗ trợ tài từ Google sau Google mua lại vào năm 2005 Android mắt vào năm 2007 với tuyên bố thành lập Liên minh thiết bị cầm tay mở: hiệp hội gồm công ty phần cứng, phần mm, viễn thông với mục tiêu đẩy mạnh tiêu chuẩn mở cho thiết bị di động Chiếc điện thoại chạy Android bán vào tháng 10 năm 2008 Android có mã nguồn mở Google phát hành mã nguồn theo giấy phép Apache Chính mã nguồn mở với giấy phép khơng có nhiu ràng buộc cho phép nhà phát triển thiết bị, mạng di động lập trình viên nhiệt huyết điu chỉnh phân phối Android cách tự Ngồi ra, Android cịn có cộng đồng lập trình viên đơng đảo chun viết ứng dụng để mở rộng chức thiết bị, 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 Android, số lượt tải ứng dụng từ Google Play, cửa hàng ứng dụng Android, ước tính khoảng 25 tỷ lượt Những yếu tố giúp Android trở thành nn tảng điện thoại thông minh phổ biến giới, vượt qua Symbian vào quý năm 2010, công ty công nghệ lựa chọn họ cần hệ điu hành khơng nặng n, có khả tinh chỉnh, giá rẻ chạy thiết bị công nghệ cao thay tạo dựng từ đầu Kết thiết kế để chạy điện thoại máy tính bảng, Android xuất TV, máy chơi game thiết bị điện tử khác Bản chất mở Android khích lệ đội ngũ đơng đảo lập trình viên người đam mê sử dụng mã nguồn mở để tạo dự án cộng đồng quản lý Những dự án bổ sung tính cao cấp cho người dùng thích tìm tịi đưa Android vào thiết bị ban đầu chạy hệ điu hành khác Android chiếm 75% thị phần điện thoại thơng minh tồn giới vào thời điểm quý năm 2012, với tổng cộng 500 triệu thiết bị kích hoạt 1,3 triệu lượt kích hoạt ngày Sự thành cơng hệ điu hành khiến trở thành mục tiêu vụ kiện liên quan đến phát minh, góp mặt gọi "cuộc chiến điện thoại thơng minh" cơng ty cơng nghệ [1] • Lịch sử phát triển Tổng công ty Android (Android, Inc.) thành lập Palo Alto, California vào tháng 10 năm 2003 Andy Rubin (đồng sáng lập công ty Danger), Rich Miner (đồng sáng lập Tổng công ty Viễn thơng Wildfire), Nick Sears (từng Phó giám đốc T- Mobile), Chris White (trưởng thiết kế giao diện WebTV) để phát triển, theo lời Rubin, "các thiết bị di động thơng minh biết vị trí sở thích người dùng" Dù người thành lập nhân viên đu người có tiếng tăm, Tổng cơng ty Android hoạt động cách âm thầm, tiết lộ họ làm phần mm dành cho điện thoại di động Trong năm đó, Rubin hết kinh phí Steve Perlman, người bạn thân Rubin, mang cho ông 10.000 USD tin mặt từ chối tham gia vào công ty Google mua lại Tổng công ty Android vào ngày 17 tháng năm 2005, biến thành phận trực thuộc Google Những nhân viên chủ chốt Tổng công ty Android, gồm Rubin, Miner White, tiếp tục lại công ty làm việc sau thương vụ Vào thời điểm khơng có nhiu thơng tin v Tổng cơng ty, nhiu người đồn đốn Google dự tính tham gia thị trường điện thoại di động sau bước Tại Google, nhóm Rubin đứng đầu phát triển nn tảng thiết bị di động phát triển nn nhân Linux Google quảng bá nn tảng cho nhà sản xuất điện thoại nhà mạng với lời hứa cung cấp hệ thống uyển chuyển có khả nâng cấp Google liên hệ với hàng loạt hãng phần cứng đối tác phần mm, bắn tin cho nhà mạng họ sẵn sàng hợp tác với cấp độ khác Ngày nhiu suy đoán Google tham gia thị trường điện thoại di động xuất tháng 12 năm 2006 Tin tức BBC Nhật báo phố Wall thích Google muốn đưa cơng nghệ tìm kiếm ứng dụng họ vào điện thoại di động họ nỗ lực làm việc để thực điu Các phương tiện truyn thông truyn thống lẫn online viết v tin đồn Google phát triển thiết bị cầm tay mang thương hiệu Google Một vài tờ báo cịn nói Google thực mô tả kỹ thuật chi tiết, họ trình diễn sản phẩm mẫu cho nhà sản xuất điện thoại di động nhà mạng Tháng năm 2007, InformationWeek đăng tải nghiên cứu Evalueserve cho biết Google nộp số đơn xin cấp sáng chế lĩnh vực điện thoại di động Ngày tháng 11 năm 2007, Liên minh thiết bị cầm tay mở (Open Handset Alliance), hiệp hội bao gồm nhiu cơng ty có Texas Instruments, Tập đoàn Broadcom, Google, HTC, Intel, LG, Tập đoàn Marvell Technology, Motorola, Nvidia, Qualcomm, Samsung Electronics, Sprint Nextel T-Mobile thành lập với mục đích phát triển tiêu chuẩn mở cho thiết bị di động Cùng ngày, Android mắt với vai trò sản phẩm Liên minh, nn tảng thiết bị di động xây dựng nhân Linux phiên 2.6 Chiếc điện thoại chạy Android bán HTC Dream, phát hành ngày 22 tháng 10 năm 2008 Biểu trưng hệ điu hành Android robot màu xanh hãng thiết kế Irina Blok California vẽ Từ năm 2008, Android trải qua nhiu lần cập nhật để cải tiến hệ điu hành, bổ sung tính sửa lỗi lần phát hành trước Mỗi nâng cấp đặt tên theo thứ tự bảng chữ cái, theo tên ăn tráng miệng; ví dụ phiên 1.5 Cupcake (bánh bơng lan nhỏ có kem) tiếp nối phiên 1.6 Donut (bánh vòng) Phiên 9.0 Pie Vào năm 2010, Google 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 máy tính bảng chạy hệ điu hành Android, đối tác phần cứng sản xuất HTC hợp tác với Google điện thoại thông minh Nexus đầu tiên, Nexus One Kể từ nhiu thiết bị gia nhập vào dòng sản phẩm này, điện thoại Nexus máy tính bảng Nexus 10, LG Samsung sản xuất Google xem điện thoại máy tính bảng Nexus thiết bị Android chủ lực mình, với tính phần cứng phần mm Android • Giao diện Android Giao diện người dùng Android dựa nguyên tắc tác động trực tiếp, sử dụng cảm ứng chạm tương tự động tác đời thực vuốt, chạm, kéo giãn thu lại để xử lý đối tượng hình Sự phản ứng với tác động người dùng diễn gần lập tức, nhằm tạo giao diện cảm ứng mượt mà, thường dùng tính rung thiết bị để tạo phản hồi rung cho người dùng Những thiết bị phần cứng bên gia tốc kế, quay hồi chuyển cảm biến khoảng cách số ứng dụng sử dụng để phản hồi số hành động khác người dùng, ví dụ điu chỉnh hình từ chế độ hiển thị dọc sang chế độ hiển thị ngang tùy theo vị trí thiết bị, cho phép người dùng lái xe đua xoay thiết bị, giống điu khiển vô- lăng Các thiết bị Android sau khởi động hiển thị hình chính, điểm khởi đầu với thơng tin thiết bị, tương tự khái niệm desktop (bàn làm việc) máy tính để bàn Màn hính Android thường gồm nhiu biểu tượng (icon) tiện ích (widget); biểu tượng ứng dụng mở ứng dụng tương ứng, cịn tiện ích hiển thị nội dung sống động, cập nhật tự động dự báo thời tiết, hộp thư người dùng, mẩu tin thời hình Màn hình gồm nhiu trang xem cách vuốt trước sau, giao diện hình Android tùy chỉnh mức cao, cho phép người dùng tự đặt hình dáng hành vi thiết bị theo sở thích Những ứng dụng hãng thứ ba có Google Play kho ứng dụng khác cho phép người dùng thay đổi "chủ đ" hình chính, chí bắt chước hình dáng hệ điu hành khác Windows Phone chẳng hạn Phần lớn nhà sản xuất, số nhà mạng, thực thay đổi hình dáng hành vi thiết bị Android họ để phân biệt với hãng cạnh tranh Hình 1.3.1: Giao diện hình điện thoại hệ điu hành Android 8.0 Ở phía hình trạng thái, hiển thị thơng tin v thiết bị tình trạng kết nối Thanh trạng thái "kéo" xuống để xem hình thông báo gồm thông tin quan trọng cập nhật ứng dụng, email hay tin nhắn SMS nhận, mà không làm gián đoạn khiến người dùng cảm thấy bất tiện Trong phiên đời đầu, người dùng nhấn vào thơng báo để mở ứng dụng tương ứng, v sau thơng tin cập nhật bổ sung theo tính năng, có khả gọi ngược lại có gọi nhỡ mà khơng cần phải mở ứng dụng gọi điện Thơng báo ln nằm người dùng đọc xóa • Ứng dụng Android Android có lượng ứng dụng bên thứ ba ngày nhiu, chọn lọc đặt cửa hàng ứng dụng Google Play hay Amazon Appstore để người dùng lấy v, cách tải xuống cài đặt tập tin APK từ trang web khác Các ứng dụng Cửa hàng Play cho phép người dùng duyệt, tải v cập nhật ứng dụng Google nhà phát triển thứ ba phát hành Cửa hàng Play cài đặt sẵn thiết bị thỏa mãn điu kiện tương thích Google Ứng dụng tự động lọc danh sách ứng dụng tương thích với thiết bị người dùng, nhà phát triển giới hạn ứng dụng họ dành cho nhà mạng cố định quốc gia cố định lý kinh doanh Nếu người dùng mua ứng dụng mà họ cảm thấy khơng thích, họ hoàn trả tin sau 15 phút kể từ lúc tải v, vài nhà mạng cịn có khả mua giúp ứng dụng Google Play, sau tính tin vào hóa đơn sử dụng hàng tháng người dùng Đến năm 2017, có 3,6 triệu ứng dụng dành cho Android, số lượng ứng dụng tải v từ Cửa hàng Play ước tính đạt 64 tỷ lượt Các ứng dụng cho Android phát triển ngôn ngữ Java sử dụng phát triển phần mm Android (SDK) SDK bao gồm đầy đủ cơng cụ dùng để phát triển, gồm có công cụ gỡ lỗi, thư viện phần mm, giả lập điện thoại dựa QEMU, tài liệu hướng dẫn, mã nguồn mẫu, hướng dẫn bước Môi trường phát triển tích hợp (IDE) hỗ trợ thức Eclipse sử dụng phần bổ sung Android Development Tools (ADT) Các cơng cụ phát triển khác có sẵn, gồm có Bộ phát triển gốc dành cho ứng dụng phần mở rộng viết C C++, Google App Inventor, môi trường đồ họa cho nhà lập trình bắt đầu, nhiu nn tảng ứng dụng web di động đa nn tảng phong phú • Cộng đồng mã nguồn mở Android có cộng đồng lập trình viên người đam mê động Họ sử dụng mã nguồn Android để phát triển phân phối phiên chỉnh sửa hệ điu hành Các Android cộng đồng phát triển thường đem tính cập nhật vào nhanh kênh thức nhà sản xuất/nhà mạng, không kiểm thử kỹ lưỡng khơng có đảm bảo chất lượng; cung cấp hỗ trợ liên tục cho thiết bị cũ khơng cịn nhận cập nhật thức; mang Android vào thiết bị ban đầu chạy hệ điu hành khác, HP Touchpad Các Android cộng đồng thường root sẵn có điu chỉnh không phù hợp với người dùng không rành rẽ, khả ép xung tăng/giảm áp xử lý thiết bị CyanogenMod firmware cộng đồng sử dụng phổ biến nhất, hoạt động tổ chức số đông khác Trước đây, nhà sản xuất thiết bị nhà mạng tỏ thiếu thiện chí với việc phát triển firmware bên thứ ba Những nhà sản xuất thể lo ngại thiết bị chạy phần mm không thức hoạt động khơng tốt dẫn đến tốn tin hỗ trợ Hơn nữa, firmware thay đổi CyanogenMod đơi cịn cung cấp tính năng, truyn tải mạng (tethering), mà người dùng bình thường phải trả tin nhà mạng sử dụng Kết nhiu thiết bị bắt đầu đặt hàng rào kỹ thuật khóa bootloader hay hạn chế quyn truy cập root Tuy nhiên, phần mm cộng đồng phát triển ngày trở nên phổ biến, sau thông cáo Thư viện Quốc hội Hoa Kỳ cho phép “jailbreak” (vượt ngục) thiết bị di động, nhà sản xuất nhà mạng tỏ mm mỏng với nhà phát triển thứ ba, chí số hãng HTC, Motorola, Samsung Sony, cịn hỗ trợ khuyến khích phát triển Kết việc nhu cầu tìm hạn chế phần cứng để cài đặt firmware khơng thức bớt ngày nhiu thiết bị phát hành với bootloader mở khóa sẵn mở khóa, tương tự điện thoại dịng Nexus, thơng thường họ yêu cầu người dùng từ bỏ chế độ bảo hành họ làm Tuy nhiên, chấp thuận nhà sản xuất, số nhà mạng Mỹ bắt buộc điện thoại phải bị khóa Việc mở khóa “hack” điện thoại thơng minh máy tính bảng cịn tác nhân gây căng thẳng cộng đồng công nghiệp Cộng đồng ln biện hộ hỗ trợ khơng thức ngày trở nên quan trọng trước việc nn công nghiệp không cung cấp cập nhật thường xuyên và/hoặc ngưng hỗ trợ cho thiết bị họ • Bảo mật tính riêng tư Android Các ứng dụng Android chạy "hộp cát", khu vực riêng rẽ với hệ thống không tiếp cận đến phần lại tài nguyên hệ thống, trừ người dùng trao quyn truy cập cách công khai cài đặt Trước cài đặt ứng dụng, Cửa hàng Play hiển thị tất quyn mà ứng dụng đòi hỏi: ví dụ trị chơi cần phải kích hoạt rung lưu liệu vào thẻ nhớ SD, khơng nên cần quyn đọc tin nhắn SMS tiếp cận danh bạ điện thoại Sau xem xét quyn này, người dùng chọn đồng ý từ chối chúng, ứng dụng cài đặt người dùng đồng ý Hệ thống hộp cát hỏi quyn làm giảm bớt ảnh hưởng lỗi bảo mật lỗi chương trình có ứng dụng, bối rối lập trình viên tài liệu hướng dẫn hạn chế dẫn tới ứng dụng hay địi hỏi quyn khơng cần thiết, làm giảm hiệu hệ thống Một số công ty bảo mật, Lookout Mobile Security, AVG Technologies, McAfee, phát hành phần mm diệt virus cho thiết bị Android Phần mm khơng có hiệu chế hộp cát áp dụng vào ứng dụng này, làm hạn chế khả quét sâu vào hệ thống để tìm nguycơ Một nghiên cứu cơng ty bảo mật Trend Micro liệt kê tình trạng lạm dụng dịch vụ trả tin hình thức phần mm ác ý phổ biến Android, tin nhắn SMS bị gửi từ điện thoại bị nhiễm đến số điện thoại trả tin mà người dùng không h hay biết Loại phần mm ác ý khác hiển thị quảng cáo không mong muốn gây khó chịu thiết bị, gửi thơng tin cá nhân đến bên thứ ba chưa phép Đe dọa bảo mật Android cho tăng nhanh theo cấp số mũ; nhiên, kỹ sư Google phản bác hiểm họa từ phần mm ác ý virus bị thổi phồng công ty bảo mật nhằm mục đích thương mại, buộc tội ngành công nghiệp bảo mật lợi dụng sợ hãi để bán phần mm diệt virus cho người dùng Google giữ quan điểm phần mm ác ý thật nguy hiểm hiếm, điu tra F- Secure thực cho thấy có 0,5% số phần mm ác ý Android len vào cửa hàng Google Play Google sử dụng quét phần mm ác ý Google Bouncer để theo dõi quét ứng dụng Cửa hàng Google Play Nó đánh dấu phần mm bị nghi ngờ cảnh báo người dùng v vấn đ xảy trước họ tải v máy Android phiên 4.2 Jelly Bean phát hành vào năm 2012 với tính bảo mật cải thiện, bao gồm quét phần mm ác ý cài sẵn hệ thống, hoạt động với Google Play quét ứng dụng cài đặt từ nguồn thứ ba, hệ thống cảnh báo thông báo cho người dùng ứng dụng cố gắng gửi tin nhắn vào số tính tin, chặn tin nhắn lại trừ người dùng cơng khai cho phép Điện thoại thơng minh Android có khả báo cáo vị trí điểm truy cập Wi- Fi, phát việc di chuyển người dùng điện thoại, để xây dựng sở liệu có chứa vị trí hàng trăm triệu điểm truy cập Những sở liệu tạo nên đồ điện tử để tìm vị trí điện thoại thơng minh, cho phép chúng chạy ứng dụng Foursquare, Google Latitude, Facebook Places, gửi đoạn quảng cáo dựa vị trí Phần mm theo dõi bên thứ ba TaintDroid, dự án nghiên cứu trường đại học, đơi biết thông tin cá nhân bị gửi từ ứng dụng đến máy chủ đặt xa Bản chất mã nguồn mở Android cho phép nhà thầu bảo mật lấy thiết bị sẵn có điu chỉnh để sử dụng mức độ bảo mật cao Ví dụ Samsung cộng tác với General Dynamics sau họ thâu tóm Open Kernel Labs để xây dựng lại Jellybean nn vi kiểm soát dành cho dự án "Knox" CHƯƠNG 2: MÔI TRƯỜNG LẬP TRÌNH ANDROID STUDIO • Sơ lược Android Studio Google cung cấp công cụ phát triển ứng dụng Android Website thức dựa nn tảng IntelliJ IDEA gọi Android Studio Android studio dựa vào IntelliJ IDEA, IDE tốt cho Do Android Studio môi trường phát triển ứng dụng tốt cho Android • • Cài đặt Android Studio u cầu phần cứng máy tính • Hệ điều hành Windows ã Microsoftđ Windowsđ 7/8/10 (32-bit hoc 64-bit) ã RAM tối thiểu GB, khuyến nghị sử dụng RAM GB; cộng GB cho trình giả lập Android • Tối thiểu GB dung lượng đĩa trống, GB đ xuất (500 MB cho IDE + 1.5 GB cho Android SDK hình ảnh hệ thống mơ phỏng) • Độ phân giải hình tối thiểu 1280 x 800 ã H iu hnh MacOS ã Macđ OS X® 10.10 (Yosemite) cao hơn, lên đến 10.13 (macOS High Sierra) • RAM tối thiểu GB, khuyến nghị sử dụng RAM GB; cộng GB cho trình giả lập Android • Tối thiểu GB dung lượng đĩa trống, GB đ xuất (500 MB cho IDE + 1.5 GB cho Android SDK hình ảnh hệ thống mơ phỏng) • Độ phân giải hình tối thiểu 1280 x 800 • Hệ điều hành Linux • Thư viện GNU C (glibc) 2.19 • RAM tối thiểu GB, khuyến nghị sử dụng RAM GB; cộng GB cho Trình giả lập Android • Tối thiểu GB dung lượng đĩa trống, GB đ xuất (500 MB cho IDE + 1.5 GB cho Android SDK hình ảnh hệ thống mơ phỏng) • Độ phân giải hình tối thiểu 1280 x 800 • • • • • Phần mềm Android Studio Vào đường dẫn: “https://developer.android.com/studio/” để download tiến hành cài đặt hình: Hình 2.2.1: Trang download Android Studio Khi cài đặt ý chọn SDK trình giả lập thiết bị android ảo ADV hình: Hình 2.2.2: Giao diện cài đặt SDK AVD Tiếp tục chọn next agree hoàn tất Khi việc cài đặt hoàn tất, hình sau: Hình 2.2.3: Giao diện cửa sổ Android Studio cài đặt hồn tất • Thiết bị ảo Android Studio Máy ảo Android phần khơng thể thiếu lập trình ứng dụng cho hệ điu hành Android, giúp chạy thử ứng dụng máy tính Và công cụ máy ảo tiện dụng Genymotion • Để cài đặt máy ảo Genymotion ta truy cập vào đường dẫn: https://www.genymotion.com/download/ • Ta phải tạo tài khoản đăng nhập vào thấy mục này: Hình 2.2.4: Giao diện download máy ảo Genymotion • Ở ta nên tải phiên with VirtuaBox , chương trình tích hợp sẵn VirtuaBox cho máy ảo phải có VirtuaBox chạy • • • • • • • • • • Sau cài xong có giao diện sau: Hình 2.2.5: Giao diện Genymotion Ta cần đăng nhập vào tạo máy ảo Các phím chức máy ảo Genymotion • Start: Bắt đầu khởi động máy ảo • Add: Tạo máy ảo • Setting: Cài đặt Nhấn vào Add để tạo máy ảo Hình 2.2.6: Giao diện chọn máy ảo Sau chọn nhiu thiết bị theo ý muốn (như chọn Custom Phone - 5.1.0 - API 22 - 768x1280 ) : • Custom Phone: tên thiết bị máy ảo • 5.1.0: phiên hệ điu hành Android • API: Application Programming Interface (giao diện lập trình ứng dụng) • 768x1280: Độ phân giải hình Bạn chọn thiết bị sau nhấn Next có giao diện thơng tin thiết Hình 2.2.7: Giao diện xem thơng tin máy ảo chọn Sau tiếp tục nhấn Next Finish để hồn thành cài máy ảo Hình 2.2.8: Giao diện hiển thị thông tin máy ảo sau tạo Ta tiếp tục nhấn vào thiết bị nhấn Start để khởi động máy ảo Hình 2.2.9: Giao diện hình khởi động khởi động xong máy ảo Genymotion Cấu trúc dự án android studio Tạo Project • Click vào dịng “Start a new Android Studio project” hình sau: Hình 2.3.1: Giao diện cửa sổ chọn Android Studio • Hình 2.3.2: Giao diện tạo project Android Khi xuất hình tạo project Android gồm thành phần sau: • Application Name: Tên ứng dụng muốn đặt • Company Domain: Tên domain công ty, thường dùng để kết hợp với tên Application để tạo thành Package (chú ý viết thường hết có dấu chấm) • Package name: Nó tự động nối ngược Company Domain với } public String getPubDate() { return pubDate; } public void setPubDate(String pubDate) { this.pubDate = pubDate; } } News.java Các thuộc tính class News gồm: • title: tiêu đ tin tức • link: đường dẫn trang chi tiết tin tức • thumbnail: ảnh tin tức • pubdate: Ngày đăng tin • Bình thường sử dụng ln ArrayAdapter có sẵn, listview hiển thị liệu dạng đoạn text row, cịn row ta có text image view khơng dùng mà phải custom lại để liệu hiển thị được, ta tạo class CustomAdapter: CustomAdapter.java public class CustomAdapter extends ArrayAdapter { Activity context; int resource ; List objects; public CustomAdapter(@NonNull Activity context, int resource, @NonNull List objects) { super(context, resource, objects); this.context = context; this.resource = resource; this.objects = objects; } @ N o n N u l l @ O v e r r i d e public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { LayoutInflater inflater = this.context.getLayoutInflater() ; convertView = inflater.inflate(this.resource, null); ImageView ivThumbnail = convertView.findViewById(R.id.iv_thum bnail); TextView tvTitle = convertView.findViewById(R.id.tv_ title); TextView tvPubDate = convertView.findViewById(R.id.tv_pub Date); News news = this.objects.get(position); tvTitle.setText(Html.fromHtml(news.getTitle())); tvPubDate.setText(Utility.getPeriod(news.getPubD ate())); Picasso.get().load(news.getThumbnail()).into(ivT humbnail); return convertView; } } • Ở class CustomAdaper kế thừa lại thằng ArrayAdapter có kiểu Generic News, nghĩa nhận vào kiểu liệu News Khi bạn kế thừa bắt buộc bạn phải ghi đè @Override constructer là: public CustomAdapter(@NonNull Activity context, int resource, @NonNull List objects) { super(context, resource, objects); this.context = context; this.resource = resource; this.objects = objects; } • @NonNull @Override • public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { • LayoutInflater inflater = • • • • this.context.getLayoutInflater(); • convertView = inflater.inflate(this.resource, null); TextView tvTitle = convertView.findViewById(R.id.tv_title); ImageView ivThumbnail = convertView.findViewById(R.id.iv_thumbnail); TextView tvPubDate = convertView.findViewById(R.id.tv_pubDate); News news = this.objects.get(position); • tvTitle.setText(Html.fromHtml(news.getTitle())); tvPubDate.setText(Utility.getPeriod(news.getPubDate())); Picasso.get().load(news.getThumbnail()).into(ivThumbnail); return convertView; • } • • Tiếp đến phương thức getView(), phương thức để khởi tạo view để add vào Listview, tạo row listview set liệu News lên row đó, thực chẳng cần hiểu cú pháp cứng cần học thuộc dùng, dùng nhiu lần dẫn đến quen hiểu Vì gọi class CustomAdaper MainActivity ta truyn cho list News nên dịng code có tác dụng lấy đối tượng News tương ứng với view, lấy news có liệu News như: title, link, … liệu set lên row listview • Và cuối return lại converView row mà tạo set liệu lên • Phần quan trọng MainActivity dùng AsyncTask để lấy liệu dịch vụ RSS parse Jsoup • Bây MainActivity.java code sau : • Code AsyncTask để lấy liệu Internet • Parse liệu dạng Document sang ArrayList • Set adapter cho ListView • Khởi tạo lớp kế thừa từ AsyncTask chuyển đường dẫn cung cấp liệu qua dịch vụ RSS để hiển thị lên giao diện MainActivity.java public class MainActivity extends AppCompatActivity { ListView lvNews; CustomAdapter adapter; ArrayList arrNews; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main ); lvNews = findViewById(R.id.lv_news ); MyTask myTask = new MyTask(); myTask.execute("https://www.24h.com.vn/upload/rss/tintuct rongngay.rs s"); } class MyTask extends AsyncTask { @Override protected ArrayList doInBackground(String strings) { arrNews = new ArrayList(); try { Document document = Jsoup.connect(strings[0]).get(); Elements elements = document.select("item"); News news = null; for (Element element : elements) { news = new News(); news.setTitle(element.select("title") text()); news.setThumbnail(Jsoup.parse(element.select("description ").text()) select("img").attr("src")); news.setLink(element.select("link").text()) ; news.setPubDate(element.select("pubDate").tex t()); arrNews.add(news); } } catch (IOExcepti on e) { e.printS tackTrace( ); } return arrNews; } @Override protected void onPostExecute(ArrayList news) { super.onPostExecute(news); adapter = new CustomAdapter(MainActivity.this, R.layout.custom_list_item, arrNews); lvNews.setAdapter(adapter); } } } • • • Như nói Jsoup thư viện Java để cung câp API cho việc trích xuất định dạng XML Có vài phương thức cho việc đọc phân tích XML, trường hợp chúng ta, muốn lấy vài thông tin từ liệu dạng XML server xa phải cung cấp URL Nếu muốn phân tích trang DOM, có: Document document=Jsoup.connect(strings[0]).get(); document biến thuộc class Document để lưu trữ tài liệu lấy v Bây có Document tự trích xuất thơng tin Chúng ta lấy title thông tin khác sử dụng “Tag XML” Cho ví dụ, muốn lấy tất tag có tên “item”: Elements elements=document.select("item"); Ta sử dụng API Jsoup main thread làm gặp phải lỗi nghiệm trọng Android ANR , ví dụ nên sử dụng AsyncTask class MyTask extends AsyncTask { @Override protected ArrayList doInBackground(String strings) { arrNews = new ArrayList(); try { Document document = Jsoup.connect(strings[0]).get(); Elements elements = document.select("item"); News news = null; for (Element element : elements) { news = new News(); news.setTitle(element.select("title").text()); news.setThumbnail(Jsoup.parse(element.select("description").te xt()) select("img").attr("src")); news.setLink(element.select("link").text()); news.setPubDate(element.select("pubDate").text ()); arrNews.add(news); } } catch (IOExcepti on e) { e.printS tackTrace( ); } return arrNews; } @Override protected void onPostExecute(ArrayList news) { super.onPostExecute(news); adapter = new CustomAdapter(MainActivity.this, R.layout.custom_list_item, arrNews); lvNews.setAdapter(adapter); } } • • • MyTask class mở rộng từ AsyncTask cho việc phân tích định dạng XML sử dụng Jsoup Rất dễ dàng có kết sau: Hình 3.2.3: Dữ liệu hiển thị listview lấy từ dịch vụ RSS Để xem trang chi tiết tin tức mà người dùng ấn vào ta phải làm cơng việc sau: • Tạo hình hiển thị trang chi tiết tin tức • Bắt kiện người dùng ấn vào dòng ListView • Sử dụng Intent để truyn liệu từ hình sang hình khác • Hiện thị liệu trang web WebView • • Để tạo hình khác ta click chuột phải vào tên project chọn: News Acvitiy Empty Activity Đặt tên DetailAcvitiy -> Finish Sau tạo file DetailActivity.class activity_detail.xml Bước ta bắt kiện cho ListView Hàm onCreate MainActivity.java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lvNews = findViewById(R.id.lv_news); MyTask myTask = new MyTask(); myTask.execute("https://www.24h.com.vn/upload/rss/tintuctrongngay.rs s "); lvNews.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { Intent intent = new Intent(MainActivity.this, DetailActivity.class); intent.putExtra("link", arrNews.get(position).getLink()); startActivity(intent); } }); } • Trong hàm ta bắt kiện người dùng nhấn vào dòng ListView cách gọi hàm setOnItemCLickListener đối tượng ListView lvNews.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { Intent intent = new Intent(MainActivity.this, DetailActivity.class); intent.putExtra("link", arrNews.get(position).getLink()); startActivity(intent); } }); • Trong kiện tạo hàm onItemClick, hàm chạy người dùng ấn dòng ListView tham số có tên position vị trí tin tức ListView người dùng • • ấn vào Từ vị trí ta sử dụng hàm get(vị trí tin tức ListView) đối tượng ArrayList để lấy giá trị link trang web tin tức thơng qua hàm getLink() Khi có link trang web tin tức ta việc tạo Intent để truyn liệu link trang web từ hình MainAcvitity sang hình trị chi tiết tin tức DetailActivity activity_detail.xml DetailActivity.java public class DetailActivity extends AppCompatActivity { WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); webView = findViewById(R.id.web_view); Intent intent = getIntent(); String link = intent.getStringExtra("link"); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(link); webView.setWebViewClient(new WebViewClient()); } } • • Intent intent = getIntent(); String link = intent.getStringExtra("link"); • Bên MainAcvittiy gửi cho DetailActivity intent truyn liệu vào intent cách putExtra bên DetailActivity để nhận liệu phải getIntent() tiến hành getStringExtra để lấy liệu • Khi nhận giá trị từ MainActivity việc hiển thị trang web lên WebView webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(link); webView.setWebViewClient(new WebViewClient()); • • • Ở ta phải bật JavaScript Cho WebView để thị hết tất có từ trang web họ Để thị trang web lên WebView việc gọi hàm loadUrl truyn vào link mà ta nhận xong Cuối ta gọi hàm setWebViewClient(new WebViewClient()) để load trang web tin tức nằm gọn ứng dụng ta khơng bật trình duyệt để hiển thị lên Hình 3.2.4: Trang hiển thị chi tiết tin tức CHƯƠNG 4: CHƯƠNG TRÌNH THỰC NGHIỆM • Phát biểu tốn Ngày nay, vai trị ứng dụng đọc tin tức thiết bị di động ngày trở nên quan trọng Khác với báo trí truyn thơng có giới hạn cập nhật tin tức, tờ báo trực tuyến cung cấp tiện lợi việc cập nhật phát hành thơng tin V phía người dùng, họ xem thông tin lúc nơi với thiết bị di động V phía người cung cấp thơng tin, họ dễ dàng cập nhật tin tức nhất, thời thông qua dịch vụ cung cấp thông tin đơn giản RSS (Really Simple Syndication) Do việc sử dụng ứng dụng đọc tin tức điu cần thiết nay, nhằm đáp ứng nhu cầu cập nhật thơng tin người • Mơ hình chức Ứng dụng Xem tin tức L ưu tn tức Chia sẻ tin tức Đánh giá ứng dụng Gửi email góp ý • Xem tức tức: ứng dụng cho phép người dùng chọn tin để xem chi tiết nội dung tin tức • Lưu tin tức: lưu tin mà người dùng muốn để sau đọc, tin tức mà người dùng xem vào nhớ • Chia sẻ tin tức: ứng dụng tích hợp nút chia sẻ để người dùng thuận tiện việc chia sẻ tin tức lên mạng xã hội, gmail, tin nhắn, vv… • Đánh giá ứng dụng: đánh giá ứng dụng sau người dùng cài đặt sử dụng ứng dụng • Gửi email góp ý: người dùng muốn đóng góp ý kiến v ứng dụng gửi email đến nhà phát triển • Mơ hình hoạt động Các bước hoạt động: • Bước 1: Ứng dụng gọi tới dịch vụ RSS thơng qua đường dẫn • Bước 2: Dịch vụ RSS gửi yêu cầu từ client v cho sở liệu xử lý • Bước 3: Cơ sở liệu truy vấn liệu trả v kết sau xử lý xong v cho dịch vụ RSS • Bước 4: Dịch vụ RSS trả v nội dung tin tức dạng XML cho ứng dụng để bọc tách liệu hiển thị lên hình • Giao diện ứng dụng • Giao diện hình hiển thị danh sách tin tức thể loại Hình 4.4.1: Giao diện hình • • Là chương trình lấy liệu internet lên phần kiểm tra kết nối internet thiết bị vơ quan trọng Hình 4.4.2: Màn hình hiển thị thiết bị khơng kết nối internet Người dùng xem thể loại tin tức khác cách chọn vào tên thể loại vuốt sang ngang Hình 4.4.3: Giao diện hình thể loại tin ngày Hình 4.4.4: Giao diện hình thể loại tin giới Hình 4.4.5: Giao diện hình thể loại tin thể thao Hình 4.4.6: Giao diện hình thể loại Hình 4.4.7: Giao diện hình thể loại tin giáo dục Hình 4.4.8: Giao diện hình thể loại tin thời trang tin giải trí Hình 4.4.9: Giao diện hình thể loại tin sức khỏe • Hình 4.4.10: Giao diện hình thể loại tin du lịch Khi người dùng chọn tin tức muốn đọc hình ứng dụng chuyển đến hình hiển thị chi tiết tin tức Hình 4.4.11: Giao diện hình chi tiết tin tức • Để chia sẻ tin tức với ứng dụng khác người dùng chọn vào nút phía giao diện hình chi tiết tin tức Hình 4.4.12: Giao diện cửa sổ chia sẻ tin tức với ứng dụng khác • Người dùng muốn lưu tin tức u thích để xem lại sau chọn phía giao diện hình chi tiết tin tức Để xóa tin lưu người dùng chọn nút lại nút lần Hình 4.4.13: Thơng báo hiển thị lưu tin thành cơng • • Hình 4.4.14: Thơng báo hiển thị xóa tin lưu thành công Khi người dùng chọn vào biểu tượng hình xuất menu hiển thị tính hữu ích có ứng dụng Hình 4.4.15: Menu hiển thị tính ứng dụng Khi muốn xem tin tức mà người dùng lưu chọn mục Tin lưu menu Hình 4.4.16: Giao diện hình tin lưu • Nếu người dùng muốn xóa tin lưu danh sách tin tức cần nhấn giữ dịng tin muốn xóa khoảng 1,5 giây xuất thơng báo hình đây: Hình 4.4.17: Giao diện cửa sổ thơng báo xác nhận xóa tin chọn • Để xem danh sách tin tức người dùng xem chọn mục Tin đọc menu Hình 4.4.18: Giao diện hình tin đọc • Người dùng muốn xóa tất tin tức đọc ấn nút • phía giao diện hình Lúc xuất thông báo để xác nhận xem người dùng có muốn xóa tất hay khơng Hình 4.4.19: Giao diện cửa sổ thơng báo xác nhận xóa tất tin đọc • Sau người dùng sử dụng ứng dụng chọn mục Đánh giá ứng dụng • menu để đánh giá chất lượng ứng dụng Google Play Hình 4.4.20: Giao diện hình ứng dụng có Google Play • Người dùng chọn mục Gửi email góp ý menu để đóng góp ý kiến v ứng dụng thiết bị họ Hình 4.4.21: Giao diện hình ứng dụng Gmail KẾT LUẬN Sau thời gian tìm hiểu đ tài “Xây dựng ứng dụng Android đọc báo mạng qua dịch vụ RSS” em thực nội dung đ tài theo yêu cầu đặt Với mục đích tìm hiểu v hệ điu hành Android, hiểu biết v môi trường lập trình Android Studio tìm hiểu kỹ thuật để xây dựng ứng dụng hoàn chỉnh thiết bị thật Thơng qua việc tìm hiểu nắm bắt lý thuyết v hệ điu hành Android, bước đầu xây dựng thành cơng chương trình thực nghiệm với chức Trong trình tìm hiểu lý thuyết v hệ điu hành Android xây dựng ứng dụng em thu kết sau: • Hiểu sử dụng lớp đối tượng, phương thức hỗ trợ lập trình nn hệ điu hành Android • Hiểu v dịch vụ RSS • Hiểu cách đọc nội dụng tin tức từ trang web v điện thoại • Xây dựng thành cơng ứng dụng với chức như: xem tin tức, lưu tin tức, chia sẻ tin tức, đánh giá ứng dụng, gửi email góp ý Do thời gian có hạn với kiến thức thân cịn hạn chế nên em chưa tìm hiểu sâu v kiến thức liên quan tới hệ điu hành Android nên chương trình cịn nhiu hạn chế, em cố gắng phát triển thêm để chương trình thân thiện, dễ sử dụng nhiu chức TÀI LIỆU THAM KHẢO [1] https://vi.wikipedia.org/wiki/Android_(hệ_điu_hành) [2] https://thangcoder.com/lap-trinh-android/hoc-lap-trinh-android-canban/activity-va- vong-doi-cua-no-trong-lap-trinh-android [3] https://laptrinhtuduy.wordpress.com/2014/04/27/activity-trong-android/ [4] http://support.digisoft.com.vn/kien-thuc-web/rss-la-gi.aspx [5] http://giasutinhoc.vn/lap-trinh-android-co-ban/xu-ly-su-kien-trong-androidbai-3/