Lập trình Android Xây đựng app doc bao voi RSS Mỡ Đầu Phát triển ứng dụng app mobile là điều rất cần thiết đề chạy theo xu hướng công nghệ 4.0 và nhu cầu của người đùng.. Cứ mỗi bản cập
Trang 1
Xây dựng app đọc báo với RSS bằng Android Studio
Malor: Lap Trinh Android Student: Nguyễn Anh Tuấn, Mai Thị Quỳnh Nga Class: CNTT2-K60
Advisor: Mr.Lai Manh Dung
HANOI - 2022
Trang 2
Lập trình Android Xây đựng app doc bao voi RSS
Mỡ Đầu Phát triển ứng dụng app mobile là điều rất cần thiết đề chạy theo xu hướng công nghệ 4.0 và nhu cầu của người đùng
Theo báo cáo của VNPT năm 2022 chính là kỷ nguyên của smartphone lên ngôi, Việt Nam sẽ có khoảng 60 triệu người sử dụng điện thoại thông minh, do đó nhu cầu sử dụng smartphone trung bình của người Việt sẽ là 3-5 giờ/ngày Vì vậy việc đầu tư phát triển app mobile là hết sức khôn ngoan cho các doanh nghiệp trong tương lai
Sự tiến bộ của công nghệ và trải nghiệm người dùng đang thúc đây sự phát triển của thị trường thiết kế ứng dụng đi động Cứ mỗi bản cập nhật mới của các hệ điều hành mới sẽ tạo ra những cải tiến mới về thiết kế mobile app và tính năng dé dap ứng nhu cầu của người dùng hơn
Thời gian gần đây, đã có một sự phát triển khá mạnh mẽ của các ứng dụng điện thoại và đặc biệt là ứng dụng chỉnh sửa ảnh Mỗi người trong chúng ta có thế cảm thấy bị hấp dẫn bởi những bức ảnh đẹp mỗi ngày từ các nhiếp anh gia và ngày nay với sự phổ biến của mạng xã hội như Instagram, Facebook, Google +
Đây cũng là nơi để chúng ta chia sẻ với nhau những thứ trên khắp thế giới mà chúng ta không nhìn thấy nhìn thấy hay những thông tin cần thiết trong cuộc sống và đó cũng là lý do vì sao các nhà phát triển ứng đụng ngày càng tập trung nhiều vào việc sáng tạo các app đọc báo đề giúp chúng ta kết nỗi với thông tin ở thể giới được nhanh hơn và chính xác hơn
Có rất nhiều những ứng dụng đọc báo bạn có thể tìm thấy ngay trên cửa hàng Google Play Mỗi ứng dụng đều có những đặc điểm và tính năng riêng biệt khiến bạn ngày càng khó khăn lựa chọn ứng dụng tốt nhất cho điện thoại Android
Trang 3
Lập trình Android Xây đựng app doc bao voi RSS
MUC LUC Contents
1: TONG QUAN VE DE TAL occccccccccccssssessscsssessecsessesersevsecsessvsevecsesesevsnsesevsesevens 4
1.1 : Phát biểu bai toate ccc cccccccccceescseesescesesecseseeseesesesersecsevecsesevevevsvsesesevevecerses 4
1.2 — : Tìm hiểu về dịch vụ RSS - S122 E2 21221 re 4
1.2.1: Khải niệm - - TQ 0000000 012511256 11111111 1111111 SEnn ST n1 11115 1111111111252 15 5511111 kxx
1.2.2: VÍ đụ n1 21 211212112111121111211111111 1111 1121121112111 122121211121 t re 2: THIẾT KẼ HỆ THỒNG 2 1 2111 15121151111212112111121111211111111111111112121 11x seg §
2.1 Mô hình hoạt động - 2L 20 0201 12201112111211 1121111111151 1 11111181115 111 key 8 2.2 :Kỹ thuật đọc lấy nội dung của trang web về điện thoại 8 2.2.1: Quy trình thục hiện - - G0 2 0022121101111 111111113 1111113 11111122 ke 2.3 : Giao diện ứng dụng - - 2c 022211111 11211112111211 110111112 111111221111 19
Phdn CONG CONG VIEL ỶÝ 23
TÀI LIỆU THAM KHẢO c1 11 112112121111211112111121121211211 1211111110112 1x6 23
Trang 4
Lập trình Android Xây đựng app doc bao voi RSS
1: TONG QUAN VE DE TAI
1.1 : Phát biểu bài toán
Ngày nay, vai trò của các ứng dụng đọc tin tức trên thiết bị di động ngày càng trở nên quan trọng Khác với báo trí truyền thông có giới hạn cập nhật tin tức, các tờ báo trực tuyến đã cung cấp được sự tiện lợi trong việc cập nhật và phát hành thông tin Về phía người dùng, họ xem thông tin mọi lúc mọi nơi với thiết bị đi động của mình Về phía người cung cấp thông tin, họ có thể đễ dàng cập nhật tin tức mới nhất, thời sự nhất thông qua dịch vụ cung cấp thông tin cực kỳ đơn giản là RSS (Really Simple Syndication) Do d6 viée su dung cac img dung doc tin tire luôn là điều cần thiết nhất hiện nay, nhăm đáp ứng nhu cầu cập nhật thông tin của mỗi người
1.2: Tìm hiểu về dịch vụ RSS 1.2.1: Khái niệm
RSS (Really Simple Syndication) Dịch vụ cung cấp thông tin cực kì đơn giản, øiúp người đùng có thê đọc được những tin tức cập nhật nhật mới nhất từ một hoặc nhiều website cùng lúc mà không cần vào trực tiếp trang web đó Theo đó RS5 không những đem lại lợi ích thiết thực cho người dung mà còn là phương tiện quảng bá website tiết kiệm nhất, không cần dung đến chiến lược quảng cáo rằm rộ tốn kém
1.2.2: Ví dụ Trang web https://vtv.vn/rss.htm%20 cia nha dai VI'V hiện đang cung cấp các nguồn kênh đưới đây theo định đang chuẩn mới nhất RSS 2.0 Các nguồn kênh tin này là miễn phí cho việc sử dụng dưới mục đích cá nhận và phi lợi nhuận Bạn chỉ việc copy và đán các địa chỉ URL này vào code của bạn đề xử lý lay dữ liệu tin tức là được
Trang 5
Lập trình Android Xây đựng app doc bao voi RSS
Danh muc tin RSS do vtv.vn cung cấp:
vtv.vn hiên tại cung cấp các nguồn kênh dữ liệu dưới đây theo định dang chuẫn mới nhất RSS 2.0 Các nguồn kênh tin này là miễn phí cho việc sử dụng dưới mục đích cả nhân và phi lợi nhuận Bạn chỉ việc copy vã dân các địa chỉ LIRL nây vão những trang web hoặc phần mềm hỗ trợ đọc tin tir RSS Feeds hoặc kéo thả biễu tương RSS dưới đây vào các phân rrềm hỗ trơ RSS là được
Hình I
ht†psz//Vtv.vn/rss.htm hff†p/VI.vn/rong-nuorc r3s hitp./viv.vr/irong-nuoc/chinh-tri.rss hI†p:/VW.VT/trong-nuoc/xa-noi.rss ht†p/VW.vn/rong-nuor/phap-luat r3s http:/viv.vn#the-gioi rss hitp://VI.Vr/the-gioi/tint-1uC.fSS htftp:/VIN.vn/the-glioiithe-gioi-do-ay rss http:/vivvr/kinh-te rss http.//viv.vn/kinh-tefbat-dong-san.rss hi†p:/V.Vr/kinn-te/tal-chinh.rss http:/vfv.vn/kinh-tefthi-truong rss
hitp./viv.vr/truyen-hinhh.rss p./VIv.vrvtruyeri-hih/hau-tfuong rss
Trang 6Lập trình Android Xây đựng app doc bao voi RSS
v<rss version="2.0"> v<channel rel="self">
v<title> <![CDATA[ VTV - Tin tic - RSS Feed ]]> </title>
y<link> <I[CDATA[ tin-tuc.htm ]]> </link>
<tt1»69</tt1› <copyright>VTV</copyright> <pubDate>Thu, 14 Apr 2022 14:32:13 GMT+7</pubDate> <generator>VTV</generator>
v<item> v<title>
<![CDATA[ Iran dat thoa thuaén vé tai san bi phong toda J]> </title>
y<link> <![CDATA[ https: //vtv.vn/the-gioi/iran-dat-thoa-thuan-ve-tai-san-bi-phong-toa-2022@414122950113.htm ]]> </link>
v<guid isPermaLink="false”> <![CDATA[ 3f94af39-c605-4e8d-817a-6e942ca2d8e5 ]]> </guid›
y<description> <![CDATA[ <a href="https://vtv.vn/the-gioi/iran-dat-thoa-thuan-ve-tai-san-bi-phong-toa- 20220414122950113.htm"><img src="https://vtv1.mediacdn vn/zoom/80_50/23822/4/14/iran140422- 16499141016471456172631.jpg" /></a>VTV.vn - Iran d@ dat dugc thda thuan vai một ngân hàng nước ngoài về việc giải phóng các tài sản bị phong tòa ]]›
</description> y<pubDate>
<![CDATA[ Thu, 14 Apr 2022 12:40:29 GMT+7 ]]> </pubDate>
</item> y<item>
v<title> - <![CDATA[ Tay Ban Nha triét phd trang trại trồng cây gai dầu lớn nhất châu Âu ]]» </title>
v<link> <![CDATA https: //vtv.vn/the-gioi/tay-ban-nha-triet-pha-trang-trai-trong-cay-gai-dau-lon-nhat-chau-au- 20220414122611183.htm ]]>
</1ink> v<guid isPermaLink="false
<1[CDATA[ ecd44565-ab5d- “a3c5- 8e42-3159aec1c3f3 ]]» </guid>
w<description> <![CDATA[ <a href="https://vtv.vn/the-gioi/tay-ban-nha-triet-pha-trang-trai -trong-cay-gai-dau-lon-nhat- chau-au-20220414122611183 htm"><img src="https://vtv1.mediacdn vn/zoom/88_50/2022/4/14/gai140422- 16499138575622098458294.jpg" /></a>VTV.vn - Nhà chức trách Tây Ban Nha đã triệt phá một trang trại trồng cây gai đầu lớn nhất châu Âu ]]>
</description> v<pubDate>
€Ẩ1[CDATAT Thị 14 Ann 2022 12-40-11 EMT+7 11s
Hình 1.2: Ví dụ về định dạng RSS 2.0
Trang 7
Lập trình Android Xây đựng app doc bao voi RSS
® Bước 3: Cơ sở đữ liệu truy vấn đữ liệu trả về kết quả sau khi xử lý xong về cho dich vu RSS
e Bước 4: Dịch vụ RSS trả về nội dung tin tức dang XML cho ứng đụng đề bọc
tách dữ liệu hiển thị lên màn hình
2.2 :Kỹ thuật đọc lẫy nội dung của trang web về điện thoại 2.2.1: Quy trình thục hiện
+ Đầu tiên ta tiến hành thêm thư vién dependence vao trong file build.gradle:
implementation 'com.squareup.picasso:picasso:2.5.2'
Trang 8
Lập trình Android Xây đựng app doc bao voi RSS
dependencies { implementation ‘androidx.appcompat:appcompat:1.3.1°
implementation 'com googtLe.android nateriaL:materiaL:1.á4 0"
implementation 'androidx.constraintLayout:constrainttayout:2.1.1' implementation 'com.goog1e.android gms :pLay- services-maps: 17 6 9" testImpLementation 'Jjunit:junit:4.+"
androidTestImplementation ‘androidx.test.ext:junit:1.1.3' androidTestImplementation ‘androidx.test.espresso:espresso-core:3.4.0' implementation 'com.squareup.picasso:picasso:2.5.2'
Hình 2.1: Thư viện cần thêm vào - Picasso: 1a mét thu vién Android mã nguồn mở rất phổ biến dung để load
hoặc hiển thị hình ảnh trong Android
+ Tiếp theo ta cấp quyền cho phép tng dung lay dé liệu từ internet trong AndroidManifest
<uses-permi ssion
android: name="android.permission INTERNET" tools: ignore="CoarseFineLocation" />
<?xml version="1.0" encoding="utf-8"?> <manifest xmLlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" package="com.example.news">
<uses-permission
android: name="android.permission.ACCESS_NETWORK_STATE"
tools:ignore="CoarseFineLocation" />
<uses-permission android : name="android permission [NTERNET"" toots: ignore="C€oarseFineLocation" />
<uses-permission android: name="android.permission.ACCESS_FINE_LOCATION"
tools:ignore="CoarseFineLocation" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <appLication
android android android: android: theme="@style/Theme.Design.Light.NoActionBar">
:allowBackup="true"
android: icon="@Qmipmap/news2" : Label="News" android: roundiIcon="@mipmap/news2"
supportsRtl="true"
Hinh 2.2 : Cap quyén truy cap Internet
Trang 9
Lập trình Android
+ Tiếp theo sẽ tiễn hành tạo giao diện như sau :
- Ởactivity main tạo Í listview
- Tao | item_newss cho mdi item hiện thị
activity_main.xml
kexmt version="1.6" encoding="utf-8"?>
Xây dựng app doc bao voi RSS
<Shdroidx.constraintlayout.widget.ConstraintLayout xmLns: android= "http : //schemas android com “apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns: tools="http://schemas.android.com/tools”
android: Layout_width="match_parent"
android: Layout_height="match_parent" android: background="#DFDEDE" android: orientation="vertical" android: padding="8dp" tools: context=".MainActivity"> <ListView
android: id="@+id/1lv_main" android: Layout_width="Odp" android: Layout_height="wrap_content"” app: Layout_constraintBottom_toBottom0f="parent" app: Layout_constraintEnd_toEnd0f="parent" app: Layout_constraintStart_toStart0f="parent" app: Layout_constraintTop_toTopOf="parent" />
Trang 10
Lập trình Android Xây đựng app doc bao voi RSS
private String title, link, date, tinkjf); public Item() {
} public Item(String title, String Link, String sumary) {
this.title = title; this.Link = Link; this.date = sumary;
public Item(String title, String link, String date, String linkImg) { this.title = title;
this.link = Link; this.date = date; this.linkImg = LinkIng;
public String getLinkImg() { return linkImg; } public void setLinkImg(String LinkImg) { this.linkImg = LinkImg; } public String getTitle() { return title; }
public void setTitle(String title) { this.title = title; } public String getLink() { return link; }
public void setLink(String Link) { this.link = link; } public String getDate() { return date; }
public void setDate(String date) { this.date = date; } -K60
Trang 11Lập trình Android Xây đựng app doc bao voi RSS
Các thuộc tinh cua class Item bao g6m: - title: tigu dé tin tire
- link: duong dan trang tin tức - date: ngay dang tin - linkImg: ảnh tin tức + Binh thường nếu sử dụng luôn ArrayAdapter có săn, thì listview chỉ hiến thị đữ liệu dạng I đoạn text ở trên l hàng, còn bây giờ trên một hàng ta có cả text và Image view thì không đùng nó được mà chúng ta phải custom lại để đữ liệu có thế hiến thị được, cho nên ta sé tao class News_ Adapter:
News_Adapter.java
Trang 12
Lập trình Android Xây đựng app doc bao voi RSS
public class News_Adapter extends ArrayAdapter<Item> { private Context context;
private List<Item> lists;
TextView tv_title, tv_link, tv_date; ImageView iv_news;
public News_Adapter(@NonNul Context context, ArrayList<Item> list) {
super(context, TH this.context = context; this.lists = list; @NonNut1 @Override public View getView(int position, G@Nullable View convertView, @NonNull ViewGroup parent) {
View v = convertView;
if (v == nuLL){
LayoutInftater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;
v = inflater.inflate(R.layout.item_newss, ‘oot null);
}
finat Item item = tists.get(position);
if (item != nưutt){ tv_title = v.findViewById(R.id.tv_title_item_news) ;
tv_link = v.findViewById(R.id.tv_link_news);
tv_date = v.findViewById(R.id.tv_date_news); iv_news = v.findViewById(R.id.iv_news) ; tv_title.setText(item,getTitle());
String date = item.getDate().substring(4, 16); tv_date.setText (date);
featch (Exception e){ }
return v;
+O day class News Adaper ké thita lai Array Adapter<> co kiéu Generic la Item,
nghia la nó chỉ nhận vào kiêu dữ liệu là Item thôi Khi kế thừa thi bat buộc bạn phải
ghi dé @Override constructer 1a:
public News_Adapter(@NonNull Context context, ArrayList<Item> list) { super(context, resource: 8, List);
this.context = context; this: lists = ist;