6. Bố cục đề tài
2.1. PHÂN TÍCH CÁC CHƯƠNG TRÌNH TƯƠNG TỰ
Một số chương trình tương tự
2.1.1.1. Phần mềm đọc báo Tuổi Trẻ
-Phần mềm đọc báo trên điện thoại Android của báo Tuổi Trẻ Online.
Hình 2.2. Màn hình danh sách tin và tin chi tiết của phần mêm đọc báo Tuổi Trẻ
2.1.1.2. Phần mềm đọc báo Dân Trí
- Phần mềm đọc báo trên điện thoại Android của báo Dân Trí.
Hình 2.4. Màn hình danh sách tin và đọc tin chi tiết của phần mềm đọc báo Dân Trí
2.1.1.3. Phần mềm đọc báo VietNamNet
-Phần mềm đọc báo trên điện thoại Android của báo VietNamNet.
Hình 2.5. Màn hình menu và danh sách tin của phần mềm đọc báo VietNamNet
Hình 2.6. Màn hình menu và danh sách tin của phần mềm đọc báo VietNamNet
Nhận xét chung
2.1.1.4. Ưu điểm
-Giao diện bát mắt thân thiện và dể sử dụng
-Cung cấp đầy đủ thông tin
-Ứng dụng dễ sử dụng
2.1.1.5. Nhược điểm
-Chưa có tính năng thông báo tin mới
-Chưa có tính năng đăng ký nhận tin mới
2.2. MÔ TẢ ĐỀ TÀI
2.2.1.Xác định yêu cầu của bài toán
Hiện nay, website http://www.ued.vn là phương tiện chính cung cấp thông báo và tin tức của trường Đại học Sư phạm – Đại học Đà Nẵng. Việc
cập nhật các thông báo và tin tức buộc người dùng phải truy cập trực tiếp đến website, việc tìm kiếm cũng như nắm bắt sẽ rất khó.
Để kịp thời nắm bắt thông tin người dùng liên tục phải truy cập vào website để kiểm tra có tin mới hay không, đôi khi nhiều lần truy cập không có tin mới, hay nếu có tin mới cũng không đúng chuyên mục đang quan tâm gây rất nhiều bất tiện.
Với nhu cầu muốn có một ứng dụng hoạt động trên hệ điều hành Android để quản lý thông báo, hỗ trợ việc đọc tin tức và đặc biệt hơn hết là tự động thông báo khi tin mới theo đúng chuyên mục.
2.2.2.Yêu cầu chức năng
-Đăng ký chuyên mục nhận tin
-Hủy đăng ký chuyên mục nhận tin
-Đọc tin tức
-Cài đặt
-Nhận và kiểm tra tin mới tự động
-Kiểm tra tin mới thủ công
2.2.3.Yêu cầu phi chức năng
-Yêu cầu hệ điều hành: Android 4.0 trở lên
-Độ tin cậy: phần mềm chạy tốt, ít lỗi
-Ngôn ngữ: phần mềm chỉ sử dụng ngôn ngữ tiếng việt
2.3. THIẾT KẾ HỆ THỐNG
2.3.1.Sơ đồ tổng quan hệ thống
2.3.2. Usecase
2.3.2.1. Sơ đồ Usecase
Hình 2.8. Sơ đồ Usecase 2.3.2.2. Đặc tả Usecase
Bảng 2.1 Đặc tả Usecase “Kiểm tra tin mới”
Tóm tắt:
Cho phép người sử dụng kiểm tra danh mục tin có tin mới hay không. Dòng sự kiện chính:
1.Người sử dụng phải vào danh sách tin. 2.Nhấn giữ và kéo xuống dưới màn hình.
3.Ứng dụng sẽ hiện thông báo là đang kiểm tra tin.
Tin sẽ được thêm vào cơ sở dữ liệu
Tạo thông báo Notification Dòng sự kiện phụ: (Không có) Yêu cầu đặc biệt:
- Phải vào chức năng danh sách tin trước Tiền điều kiện: (Không có)
Hậu điều kiện:
- Ứng dụng sẽ kiểm tra có tin mới hay không Điểm mở rộng: (Không có)
- Đặc tả Usecase “Đăng ký chuyên mục”
Bảng 2.2. Đặc tả Usecase “Đăng ký chuyên mục”
Tóm tắt:
Cho phép người sử dụng đăng ký nhận tin tự động theo chuyên mục. Dòng sự kiện chính:
1. Người sử dụng phải vào chức năng “Đăng ký” ở menu.
2. Nhấn chọn vào checkbox những mục muốn nhận tin, bỏ chọn ở những mục không muốn nhận tin.
3. Hệ thống sẽ cập nhật trạng thái cho từng chuyên mục là có nhận tin hay không.
Dòng sự kiện phụ: (Không có) Yêu cầu đặc biệt:(Không có) Tiền điều kiện: (Không có) Hậu điều kiện:
- Trạng thái các danh mục được đăng ký nhận tin Điểm mở rộng: (Không có)
Bảng 2.3. Đặc tả Usecase “Xem danh sách tin”
Tóm tắt:
Cho phép người sử dụng có thể xem danh sách tin tức của một chuyên mục Dòng sự kiện chính:
1. Người sử dụng phải vào ứng dụng.
2. Mặc định danh sách tin được hiện ra. Hoặc có thể vào menu chọn Dòng sự kiện phụ: (Không có)
Yêu cầu đặc biệt:
-Phải vào ứng dụng trước Tiền điều kiện: (Không có) Hậu điều kiện: (Không có) Điểm mở rộng: (Không có)
- Đặc tả Usecase “Cài đặt”
Bảng 2.4. Đặc tả Usecase “Cài đặt”
Tóm tắt:
Cho phép người sử dụng có cài đặt nhận tin Dòng sự kiện chính:
1. Người sử dụng phải vào cài đặt
2. Tùy chọn cài số tin nhận, tối đa 150 tin
3. Tùy chọn cài số ngày nhận tin, tối đa 30 ngày 4. Sau khi thay đổi giá trị, giá trị tự động lưu lại Dòng sự kiện phụ: (Không có)
Yêu cầu đặc biệt:
-Phải vào menu để vào chức năng cài đặt tin Tiền điều kiện:
-Vào danh sách menu Hậu điều kiện:
-Nội dung tin được hiển thị ra màn hình Điểm mở rộng:(Không có)
2.3.3.Sơ đồ tuần tự
2.3.3.1. Chức năng đọc tin
Hình 2.9. Sơ đồ tuần tự chức năng đọc tin 2.3.3.2. Chức năng kiểm tra tin mới
2.3.3.3. Chức năng đăng ký chuyên mục
Hình 2.11. Sơ đồ tuần tự chức năng đăng ký chuyên mục 2.3.3.4. Chức năng cài đặt
2.3.4.Thiết kế cơ sở dữ liệu
- Bảng dữ liệu mặc định phải tồn tại trong một cơ sở dữ liệu.
Bảng 2.5. Thông tin bảng “android_metadata”
Tính chất Tên trường
Kiểu dữ
liệu Chú thích
locale Text Trường có giá trị mặc định là “en_US”
- Bảng dữ liệu “Category” chứa thông tin chuyên mục.
Bảng 2.6. Thông tin bảng “category”
Tính chất Tên trường Kiểu dữ
liệu Chú thích
Khóa Id Integer ID của chuyên mục Name Text Tên của chuyên mục
Idrss Integer
IDRSS của mỗi RSS(Nghĩa là trong một link RSS có chứa nhiều tin của R)
Parent Integer
Xác định được chuyên mục cha và chuyên mục con, chuyên mục cha có Parent bằng 0
Rss Text Chứa địa chỉ liên kết đến RSS của chuyên mục
Image Text Hình ảnh của chuyên mục
Getnews Integer Trạng thái đăng ký nhận tin của chuyên mục.(1 là nhân tin, 0 là không nhận tin)
- Bảng dữ liệu “News” chứa thông tin tin.
Bảng 2.7. Thông tin bảng “news”
Tính chất Tên trường
Kiểu
dữ liệu Chú thích
Khóa Id Integer Mã tin
Tham chiếu từ
bảng category Idrss Integer Mã chuyên mục của tin Link Text Địa chỉ lien kết của tin Title Text Tiêu đề tin
Discription Text Mô tả ngắn của tin Content Text Nội dung của tin
Image Text Địa chỉ liên kết hình đại diện của tin Pubdate Text Ngày đăng của tin
Isread Integer
Chứa trạng thái của tin(0 là tin chưa được đọc, 1 là tin đã được đọc, 2 là tin lần cuối cùng tải về và chưa đợc đọc)
2.3.5. Sơ đồ lớp
2.3.6. Sơ đồ quan hệ giữa các bảng
CHƯƠNG 3
THỬ NGHIỆM CHƯƠNG TRÌNH
3.1. ỨNG DỤNG
3.1.1. Màn hình chính
Màn hình chính là chức năng danh sách các tin. Trong danh sách này với mỗi mục bên trái là tên của chuyên mục tin. Phần bên phải gồm 3 số cách nhau bởi một dấu xuyệt, số thứ nhất là số tin chưa đọc của lần cập nhật sau cùng, số thứ hai là tổng số tin chưa đọc và số cuối cùng là tổng số tin của chuyên mục.
Hình 3.1. Giao diện màn hình chính
3.1.2. Danh sách tin
Danh sách tin là chức năng chứa toàn bộ tin của một chuyên mục cụ thể. Danh sách tin được hiển thị với một hình mô tả bên trái và tiêu đề tin ở bên phải.
Hình 3.2. Danh sách tin
Trong danh sách đọc tin còn có các chức năng lọc tin theo chuyên mục và lọc tin theo trạng thái tin đã đọc, chưa đọc và tất cả tin.
Hình 3.3. Các chức năng lọc tin
3.1.3. Đọc tin chi tiết
Với tin đã được đọc thì màu sác sẽ được tô đậm hơn những tin bình thường. Việc làm này giúp người sử dụng phân biệt được tin nào đã đọc hoặc chưa đọc một cách dễ dàng.
Hình 3.4. Phân biệt tin đã đọc hoặc chưa đọc
Khi nhấn chọn vào một tin trong danh sách tin màn hình đọc tin chi tiết sẽ xuất hiện. Tin bài sẽ được tải về và hiển thị trên màn hình.
Hình 3.5. Chức năng đọc tin chi tiết
Khi tin được tải về hoàn tất, người sử dụng có thể chia sẽ tin nếu muốn. Tin có thể được chia sẻ ở phần tin nhắn, ghi chú hoặc ở các mạng xã hội.
Hình 3.6. Chức năng chia sẻ tin
Cài đặt nhận tin
Với màn hình chức năng cài đặt người sử dụng có thể cài đặt số tin tối đa một lần tải về và số ngày tối đa của tin tải về. Việc thay đổi giá trị của từng thanh giá trị tương ứng với việc thay đổi giá trị của cài đặt, giá trị được tự động lưu khi có sự thay đổi.
3.2 KIỂM NGHIỆM THỰC TẾ
3.2.1. Đưa ứng dụng lên Google Play
Sau quá trình thiết kế và xây dựng ứng dụng được đưa lên chạy thử nghiệm tạo ứng dụng Google Play với tên gọi “DUEd News” tại địa chỉ https://play.google.com/store/apps/details?id=it.ued.uedtintuc.
Hình 3.8. Ứng dụng tại Google Play.
Việc đưa ứng dụng lên Google Play được bắt đầu từ ngày 25 tháng 01 năm 2015 với phiên bản đầu tiên 1.0. Lần cập nhật sau cùng làm ngày 08 tháng 05 năm 2015 với phiên bản 2.8515. Qua những lần cập nhật, ứng dụng được bổ sung tính năng mới, cải thiện độ thân thiện và ổn định.
3.2.2. Thống kê đạt được
Sau thời gian đưa ứng dụng lên kho ứng dụng Google Play. Thông kê lấy từ tài khoản quản lý ứng dụng cho thấy ứng dụng đã đạt được một số mốc nhất định như sau:
Tổng số lượt cài đặt là 18 trên tổng số 17 dòng thiết bị. Các thiết bị đến từ các hảng sản xuất điện thoại di động tiêu biển là Samsung, Asus, Sony và Pantech.
Hình 3.9. Tên và số lượng một số thiết bị cài đặt ứng dụng
Trên lượt cài đặt hiện có thì phiên bản hệ điều hành Android 4.4 có 7 thiết bị cài đặt chiếm 38.89% tổng số thiết bị đã cài đặt ứng dụng. Đứng thứ 2 về lượt cài đặt là phiên bản Android 4.0.3 – 4.0.4 có 5 lượt cài đặt chiếm 27.78%. Phiên bản Android 4.1 và Android 4.0 chiếm 11.11%.
Hình 3.10. Lượt cài đặt trên phiên bản hệ điều hành tính đến 07/05/2015
Thống kê lượt cài đặt trên mạng di động cho thấy chỉ có 12 thiết bị được cài đặt có sử dụng mạng di động tại Việt Nam chiếm 61.67%. Còn lại các lượt cài đặt đến từ các mạng di động ngoài Việt Nam.
Hình 3.11. Lượt cài đặt trên nhà mạng di động tính đến 07/05/2015
Ứng dụng nhận được đánh giá trung bình 5.00 / 5.00 của 4 lượt đánh giá.
KẾT LUẬN VÀ KIẾN NGHỊ
KẾT QUẢ ĐẠT ĐƯỢC
Trong quá trình nghiên cứu và thực hiện đề tài khóa luận em đã tìm hiểu và nắm được một số vấn đề:
1.Về lý thuyết
a. Cũng cố kiến thức lập trình và các môn học liên quan.
b. Tìm hiểm được tảng phần mềm Android, cách xây dựng một ứng dụng trên điện thoại Android nói chung và một ứng dụng sử dụng internet nói riêng.
c. Bên cạnh đó, để xây dựng được ứng dụng này thì em cũng đã phải nghiên cứu và hiểu thêm nhiều công nghệ liên quan như XML, Web service, JSON, SQLite, GCM…
2.Về chương trình
a. Đề tài hoàn thành và cơ bản đạt được những yêu cầu đề tài. b. Ứng dụng hoạt động tương đối ổn đinh.
c. Tiết kiệm tối đa lưu lượng truy cập internet
d. Giao diện thân thiện, hiệu ứng bắt mắt, dễ dàng sử dụng dù là người tiếp cận lần đầu tiên.
e. Đã đưa ứng dụng lên kho ứng dụng Google Play.
HẠN CHẾ
Bên cạnh những kết quả đạt được trên, em vẫn còn nhiều hạn chế trong quá trình thực hiện khóa luận.
HƯỚNG PHÁT TRIỂN
Để phục vụ nhu cầu sử dụng của đông đảo sinh viên và du học sinh đến học tại trường. Hướng phát triển tiếp theo của đề tài là ứng dụng hổ trợ đa ngôn ngữ (tiếng Lào, tiếng Trung Quốc, tiếng Anh).
Cải thiện độ ổn định của ứng dụng, giảm thiểu lỗi phát sinh do quá trình sử dụng ứng dụng.
Cải thiện giao diện đẹp mắt và hiệu quả hơn, hổ trợ giao diện cho các thiết bị máy tính bảng tốt hơn .
TÀI LIỆU THAM KHẢO
[1] Google Buys Android for Its Mobile Arsenal. Bloomberg Businessweek. Bloomberg, truy cập ngày 02 tháng 05 năm 2015, <http://www.webcitation.org/5wk7sIvVb>
[2] Industry Leaders Announce Open Platform for Mobile Devices, Open Handset Alliance truy cập ngày 02 tháng 05 năm 2015
<http://www.openhandsetalliance.com/press_110507.html>
[3] T-Mobile G1 Spec. Infosite and comparisons. GSM Arena, truy cập ngày 02 tháng 05 năm 2015 < http://www.gsmarena.com/t_mobile_g1- 2533.php>
[4] Google Cloud Messaging for Android, ngày truy cập 02 tháng 05 năm 2015 <https://developer.android.com/google/gcm/index.html>
[5]Parse Documentation, ngày truy cập 02 tháng 05 năm 2015 <https://parse.com/docs>
PHỤ LỤC
Phụ lục 1: Mã nguồn hàm gửi push từ server chạy php
function guiThongBao_Android_GCM($registatoin_ids) { //mã api key của google app đăng ký GCM $GOOGLE_API_KEY=
"AIzaSyDfyFmV3IeB2HiHueSL3dmcAA6eUHw_6Tk";
//link server google nhận nội dung cần thông báo đến thiết bị
$url= 'https://android.googleapis.com/gcm/send'; // nội dung message
$message=
'{"registration_ids":["'.$registatoin_ids.'"],"data": {"where": {"deviceType": "android"},"data": {"message": "news","action": "ACTIONTION"}}}';
//khởi tạo header $headers = array(
'Authorization: key=' .$GOOGLE_API_KEY , 'Content-Type: application/json'
);
// mở kết nối curl $ch = curl_init();
// set nơi truy vấn
curl_setopt($ch, CURLOPT_URL, $url); // set kiểu POST
curl_setopt($ch, CURLOPT_POST, true); // set header curl_setopt($ch,CURLOPT_HTTPHEADER, $headers); // nhận giá trị trả về curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); // Tắt kiểm tra SSL curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); // thiết lập
curl_setopt($ch,CURLOPT_POSTFIELDS, $message); // thực thi
$result = curl_exec($ch); if ($result === FALSE) {
die('Curl failed: ' . curl_error($ch)); } // đóng kết nối curl_close($ch); // xuất dữ liệu ra màn hình echo $result; }
Phụ lục 2: Mã nguồn file PushNotification.java chụi trách nhiệm nhận push notification
public class PushNotification extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
JSONObject json = new
JSONObject(intent.getExtras().getString(CommonUtilities.
PARSE_PACKAGE_NAME));
String message = json.getString("message");
try{
int contentid = json.getInt("content- id");
String alert = json.getString("alert");
if ("news".equals(message)) { new XmlParser(context, String.valueOf(contentid+1),alert);
}
}catch(NumberFormatException ex){ System.out.println(ex);
try{
String link = json.getString("link"); if ("update".equals(message)) {
generateNotificationUpdate(context, "Có phiên bản update!",link);
} else if ("".equals(message)){
}
}catch(NumberFormatException ex){ System.out.println(ex);
}
} catch (JSONException e) { }
} }
Phụ lục 3: Nội dung file AndroidManifest.xml của ứng dụng
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/androi d" package="it.ued.uedtintuc" android:versionCode="12" android:versionName="2.30315" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="com.android.launcher.permission.INSTALL_SH ORTCUT" />
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE " /> <permission android:name="it.ued.uedtintuc.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="it.ued.uedtintuc.permission.C2D_MESSAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="com.sec.android.provider.badge.permission. READ" /> <uses-permission android:name="com.sec.android.provider.badge.permission. WRITE" /> <uses-permission android:name="com.sonyericsson.home.permission.BROADCAST _BADGE" /> <uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="com.htc.launcher.permission.UPDATE_SHORTCU T" /> <application android:name="it.ued.uedtintuc.ParseApplication" android:allowBackup="true" android:icon="@drawable/logo" android:label="@string/app_name" android:theme="@style/AppTheme" >
<!-- Cấu hình APPID Google app (GCM) --> <meta-data android:name="com.parse.push.gcm_sender_id" android:value="id:776741724278" /> <activity android:name="it.ued.uedtintuc.SplashScreen" android:label="@string/app_name" android:theme="@android:style/Theme.Black.NoTitleBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="it.ued.uedtintuc.MainActivity" android:label="@string/app_name" > </activity> <!-- Màn hình webpage Activity --> <activity android:name="it.ued.uedtintuc.DisPlayWebPageActivity" android:configChanges="keyboardHidden|orientation" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="it.ued.uedtintuc.TinDaNhanActivity" /> </activity> <!-- Màn hình cài đặt -->