HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
VŨ TRỤ
THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN
NGƯỜI SỬ DỤNG THIẾT BỊ DI ĐỘNG ANDROID
CHUYÊN NGÀNH: HỆ THỐNG THÔNG TIN
TÓM TẮT LUẬN VĂN THẠC SĨ
Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học:
Phản biện 1: ………………………………………………………
Phản biện 2: ………………………………………………………………
Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện
Công nghệ Bưu chính Viễn thông
Vào lúc: giờ ngày tháng năm
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông
MỞ ĐẦU
Ngày nay, điện thoại di động được áp dụng các công nghệ cao và hiện đại phát triển
một cách mạnh mẽ, tăng trưởng một cách không ngừng. Điện thoại di động trở thành một
nhu cầu thiết yếu cho con người. Điện thoại di động có tính tiện lợi cao, có thể sử dụng mọi
lúc mọi nơi. Điện thoại di động càng ngày càng "thông minh" với nhiều chức năng và dịch
vụ rất hấp dẫn đã được tích hợp rất nhiều tiện ích để đáp ứng cho con người trọng mọi lĩnh
vực. Trong số các công nghệ dành cho các loại điện thoại di động thì công nghệ Android là
một công nghệ mạnh mẽ, được ứng dụng phát triển rộng rãi và chọn làm nền tảng phát triển
di động cho nhiều hãng di động khác nhau. Android là hệ điều hành trên điện thoại di động
(và hiện nay là cả trên một số đầu phát HD, HD Player, TV) phát triển bởi Google và dựa
trên nền tảng Linux.
Các ứng dụng và dịch vụ dành cho điện thoại di động liên tục phát triển và gia tăng
công ty Android biến nó thành một bộ phận trực thuộc của mình. Ngày 5 tháng 11 năm
2007, Một hiệp hội các công ty lớn trên thế giới về viễn thông, phần cứng, phần mềm cho
thiết bị di động thành lập ra Liên minh thiết bị cầm tay mở (Open Handset Alliance) với
mục đích phát triển các tiêu chuẩn mở cho di động. Cùng ngày này, google cũng ra mắt sản
phẩm đầu tiên là một nền tảng thiết bị di động được xây dựng trên nhân Linux 2.6.
Hình 1.1: Các thành viên của “Liên minh di động mở”.
(Nguồn: Bài báo “Lịch sử hệ điều hành Android - Trần Quỳnh Hương” [1])
Ngày 22 tháng 10 năm 2008 Chiếc điện thoại Android đầu tiên HTC Dream được
bán ra. Từ năm 2008, Hệ điều hành Android đã trải qua nhiều lần cập nhật, sửa các lỗi, bổ
xung thêm tính năng mới. Mỗi phiên bản đều được đặt tên lần lượt theo thứ tự bảng chữ cái
theo tên các món ăn tráng miệng: phiên bản 1.5 cupcate, phiên bản 4.2 Jelly Bean.
1.2. Khái niệm Android
Android là hệ điều hành mở được Google phát triển dành cho thiết bị di động. Các
nhà phát triển có thể sử dụng tất cả tính năng của hệ điều hành Android để tạo ra các ứng
dụng di động. Android được xây dựng trên nhân Linux mở. Hơn nữa, nó sử dụng một máy
ảo tuỳ chỉnh được thiết kế để tối ưu hóa bộ nhớ và tài nguyên phần cứng trong một môi
trường di động. Để phục vụ cho việc phát triển và sáng tạo các ứng dụng và dịch vụ Google
đã đưa ra bộ công cụ Android SDK cung cấp các công cụ và bộ thư viện các hàm API cần
thiết để phát triển ứng dụng cho nền tảng Android sử dụng ngôn ngữ lập trình java.
1.2.1. Kiến trúc Android
Mô hình kiến trúc sau thể hiện các thành phần của hệ điều hành Android:
Hình 1.2: Mô hình kiến trúc nền tảng Android
(Nguồn: Bài báo “Lịch sử hệ điều hành Android - Trần Quỳnh Hương” [1])
- Applications: Tầng này tích hợp sẵn một số ứng dụng cơ bản cần thiết
dành cho
thiết bị di động như danh bạ điện thoại, gọi điện thoại, Tin nhắn SMS, trình
duyệt
web và một số ứng dụng khác. Người sử dụng có thể tích hợp các ứng dụng của hãng
Kernel
cũng hoạt động như một tầng trừu tượng giữa phần cứng và phần còn lại của
ngăn
xếp phần mềm.
1.2.2. Phát triển ứng dụng trên Android
1.2.2.1. Ngôn ngữ lập trình
Để phát triển các ứng dụng một cách đơn giản và dễ tiếp cận, Google đã sử dụng
ngôn ngữ java làm ngôn ngữ lập trình chính thức của Android. Ngôn ngữ lập trình java cho
android là ngôn ngữ được cải tiến, tinh chỉnh cho phù hợp nền tảng Android. Ứng dụng java
là ứng dụng “Viết một lần, chạy mọi nơi” nên cần phải có môi trường máy ảo để chạy ứng
dụng. Google đã tinh chỉnh, cải tiến từ máy ảo JDK để phát triển thành máy ảo Dalvik của
hệ điều hành Android mục đích để biên dịch mã Java với tốc độ biên dịch nhanh hơn và nhẹ
hơn.
1.2.2.2. Môi trường lập trình cho Android
Google cung cấp công cụ phát triển ứng dụng Android SDK, là một công cụ giả lập
thiết bị ảo Android hỗ trợ để test và debug các lỗi của ứng dụng Android. Môi trường lập
trình (IDE) chính thức của Android là Eclipse (từ phiên bản 3.2) với sự hỗ trợ của plugin
Android Development Tools (ADT). Ứng dụng Android được đóng gói thành các file .apk
và đuợc lưu trong thư mục /data/app của hệ điều hành Android.
1.3. Các thành phần cơ bản của ứng dụng Android
1.3.1. Activity
Một Activity là một thành phần ứng dụng cung cấp một màn hình mà người dùng có
thể tương tác để làm điều gì đó, chẳng hạn như quay số điện thoại, chụp ảnh, gửi email,
hoặc xem bản đồ. Mỗi Activity được đưa ra một cửa sổ trong đó vẽ ra giao diện người dùng
của nó. Cửa sổ thường lấp đầy màn hình, nhưng nó có thể là nhỏ hơn so với màn hình và
hiển thị lên trên các cửa sổ khác.
1.3.1.1. Vòng đời của một Activity
thực hiện hoặc trong trường hợp Broadcasts, nó là một mô tả về một cái gì đó đã xảy ra và
đã được công bố.
1.3.2. Service
1.3.2.1. Định nghĩa Service
Một Service là một component của ứng dụng có thể thực hiện các hoạt động trong
một thời gian dài ở chế độ background và không cung cấp một giao diện người dùng. Một
component ứng dụng có thể bắt đầu một Service và nó sẽ tiếp tục chạy ở chế độ background
ngay cả khi người dùng chuyển sang một ứng dụng khác. Ngoài ra, một Component có thể
liên kết với một Service tương tác với nó và thậm chí thực.
1.3.2.2. Vòng đời của 1 Service
Một Service có các phương thức callback vòng đời mà ứng dụng có thể thực hiện để
theo dõi những thay đổi trong trạng thái của service và ứng dụng có thể thực hiện công việc
ở giai đoạn thích hợp.
1.3.3. BroadcastReceiver
Broadcast Reciever chỉ đơn giản là phản ứng tin nhắn broadcast từ các ứng dụng
khác hoặc từ hệ thống chính nó. Có hai bước quan trọng để tạo ra BroadcastReceiver cho hệ
thống Broadcast intent:
- Tạo ra các Broadcast Reciever bằng cách kế thừa BroadcastReciever.
- Đăng ký Broadcast Reciever bằng hai cách sử dụng Context.registerReceiver() hay
thông qua tag <receiver> trong file AndroidManifest.xml.
1.3.4. Content Provider
Là nơi lưu trữ và cung cấp cách truy cập dữ liệu do các ứng dụng tạo nên. Đây là
cách duy nhất mà các ứng dụng có thể chia sẻ dữ liệu của nhau. Android cung cấp sẵn
Content Providers cho một số kiểu dữ liệu thông dụng như âm thanh, video, thông tin số
điện thoại, Người lập trình cũng có thể tự tạo ra các class con (subclass) của Content
Provider để lưu trữ kiểu dữ liệu của riêng mình.
1.3.5. Shared preferences
Shared preferences sử dụng key/value hệ thống để save/retrieve dữ liệu. Đây là, tất cả
cạnh liên quan đến bảo mật, bao gồm cả các quy trình ứng dụng và các hộp cát (sandbox -
hộp dùng để thử nghiệm và phát triển phần mềm), chia sẻ mã và dữ liệu, bảo vệ hệ thống
thông qua việc ký các ứng dụng và sử dụng các quyền hạn. Hệ điều hành android sử dụng
một vài phương pháp bảo mật cho thiết bị của người sử dụng. Chúng ta sẽ miêu tả các tính
năng bảo mật ảnh hưởng đến ứng dụng một cách trực tiếp.
Hình 2.1: Các lĩnh vực bảo mật hiện có khi lập trình các ứng dụng Android.
(Nguồn: Bài báo “Understanding security on Android- IBM” [6])
2.1.1. phân quyền Android
Phân quyền là một cơ chế bảo mật của nền tảng Android để cho phép hoặc hạn chế
ứng dụng truy cập đến các API và các tài nguyên bị hạn chế. Theo mặc định, các ứng dụng
Android không được cấp các phân quyền nào, làm cho chúng an toàn bằng cách không cho
phép chúng truy cập vào các API được bảo vệ hoặc các tài nguyên trên thiết bị. Ứng dụng
phải yêu cầu các phân quyền thông qua manifest.xml file và người dùng cấp hoặc không cấp
các phân quyền trong khi cài đặt. Để yêu cầu cấp phân quyền, hãy khai báo một thuộc
tính <user-permission> trong manifest.xml file:
<uses-permission android:name="string" />
2.1.1.1. Các quyền hạn của Content provider và của file
Các Content Provider trưng ra một URI chung là URI duy nhất xác định dữ liệu của
chúng. Để bảo vệ Content Provider như vậy, khi bắt đầu một hoạt động hoặc trả về một kết
quả hoạt động của mình, người gọi có thể thiết
lập Intent.FLAG_GRANT_READ_URI_PERMISSION và Intent.FLAG_GRANT_WRITE
_URI_PERMISSION, để cấp quyền cho hoạt động thu nhận truy cập vào URI của dữ liệu
cụ thể theo ý định này. Các ứng dụng có thể cho phép các ứng dụng hoặc các tiến trình khác
có quyền truy cập tới các file của mình. Sự cho phép này được thực hiện bằng cách chỉ ra
chế độ hoạt
động MODE_WORLD_READABLE và MODE_WORLD_WRITEABLE thích hợp để cho
phép quyền truy cập đọc hoặc viết vào tệp, hoặc MODE_PRIVATE để mở tệp trong chế độ
riêng tư.
2.1.1.2. Các API Permission thời gian chạy
Android cung cấp các API Permission để kiểm tra, bắt tuân thủ, cấp và thu hồi các
Android bảo vệ các file hệ thống cốt lõi của hệ điều hành bằng cách lưu trữ chúng
trong một phân vùng chỉ có quyền đọc của ổ đĩa cứng. Ngoài ra, tính năng sandbox đề cập ở
trên ngăn chặn các ứng dụng được cài đặt trên các thiết bị truy cập các file của nhau trừ khi
các file cố ý hoặc vô ý trưng bày ra bởi các nhà phát triển.
2.1.6. Google Bouncer
Bouncer kiểm tra các ứng dụng mới khi chúng được tải lên google play market để
xác định các ứng dụng có khả năng độc hại, thậm chí có thể tiến xa hơn tạo mô phỏng các
ứng dụng đang chạy trên một thiết bị Android bắt bất kỳ hành vi ẩn.
2.1.7. Rooting Android.
Có quyền truy cập root vào thiết bị Android hoạt động theo cách tương tự dựa trên
các nền tảng Unix khác nhau, và có thể được so sánh với việc có quyền quản trị
administrator trên một máy tính sử dụng hệ điều hành windows. Theo mặc định, người dùng
sẽ thường xuyên không được truy cập với tính năng này trên thiết bị Android, vì nó sẽ được
khóa bởi nhà cung cấp. Một ứng dụng với quyền truy cập root có thể thay thế, sửa đổi và cài
đặt các ứng dụng như nó muốn.
2.2. Học Máy
2.2.1. Khái niệm về học máy
Học máy (machine learning) là một lĩnh vực của trí
tuệ
nhân
tạ
o
liên quan đến việc
nghiên cứu và xây dựng các kĩ thuật cho phép các hệ thống có thể "học" tự động từ dữ liệu
để giải quyết những vấn đề cụ thể. Học máy là tạo ra các phương pháp và chương trình để
TRỢ NHẬN DẠNG HÀNH VI HÓI QUEN NGƯỜI SỬ DỤNG
THIẾT BỊ DI ĐỘNG ANDROID
3.1. Tổng quan về hệ thống thu thập, phân tích hành vi và thói quen.
Sau khi tìm hiểu về công nghệ Android kết hợp với một số khảo sát nghiên cứu về
các phương pháp, công cụ hỗ trợ nhận dạng hành vi thói quen người sử dụng thiết bị di
động Android, Tôi xin đưa ra ý tưởng về một hệ thống thu thập hành vi thói quen của người
sử dụng thiết bị di động Android và chỉ ra các phương pháp để thu thập được một số tập dữ
liệu hành vi, thói quen thông dụng của người sử dụng thiết bị di động Android. Đây là một
hệ thống tự động bao gồm một ứng dụng trên Android Client và một ứng dụng trên server.
3.2. Thiết kế và cài đặt ứng dụng
3.2.1. Kiến trúc hệ thống
Kiến trúc hệ thống của ứng dụng thu thập và phân tích hành vi và thói quen người sử
dụng android được mô tả trong hình 3.1. Bao gồm hai phần chính là client và server.
Hình 3.1: Kiến trúc hệ thống thu thập và phân tích hành vi, thói quen
3.2.2. Thành phần của thu thập dữ liệu
3.2.2.1. Content observers
Content observers là cơ chế khi kết hợp với các content provider, nhận thông báo khi
tập dữ liệu đích thể hiện dưới dạng nội dung cơ sở dữ liệu SQLite được sửa đổi. Tuy nhiên,
các thông báo thời gian thực không chứa thông tin về những gì thay đổi. Để có được dữ liệu
có ý nghĩa từ content observers, bổ xung các tiến trình xử lý phải được ở trong nơi xác định
các nội dung thay đổi.
3.2.2.2. Broadcast Receivers
Broadcast Receivers xử lý và trả lời các broadcast messages trên toàn hệ thống.
Giống như Content Observers, chúng liên quan đến thông báo thời gian thực có thể thiếu chi
tiết nội dung.
3.2.2.3. Alarms
Alarms được lên kế hoạch hoạt động cấu hình trong ứng dụng để truy vấn định kỳ
các content providers hoặc trực tiếp gọi phương thức Java tĩnh để đẩy ra dữ liệu mới. Chúng
là đáng tin cậy, nhưng chỉ thực thi vào các thời gian được chỉ định.
3.2.2.4. Chiến lược thiết kế
cập đến một trình duyệt thăm lịch sử của URL, đếm số truy cập của mỗi URL, và lấy một
danh sách các trang web đánh dấu. Để truy cập vào các dữ liệu lịch sử trình duyệt, phân
quyền com.android.browser.permission.READ_HISTORY_BOOKMARKS phải được cài đặt
trong AndroidManifest.
3.2.5.3. Browser Searches
Tìm kiếm trình duyệt được thu thập bởi ứng dụng thông qua một Alarm. Tìm kiếm
được cấu hình để theo mặc định mỗi giờ được truy cập thông qua Content Provider URI:
com.android.provider.Browser.SEARCHES_URI. Truy cập vào các nội dung yêu cầu cùng
phân quyền như các thu thập URL trình duyệt:
com.android.browser.permission.READ_HISTORY_BOOKMARKS.
3.2.5.4. Calendar Events
Để thu thập calendar event sử dụng Alarm cấu hình đểmặc định cứ 12 giờ quét
Content Provider URI: content:/ /com.android.calendar/event_entities cho các sự kiện. Truy
cập để thực hiện các hành động trên các tập calendar event đòi hỏi sự phân quyền
android.permission.READ_CALENDAR được khai báo trong AndroidManifest.
3.2.5.5. Call Logs
Để đảm bảo việc bắt giữ tất cả các cuộc gọi điện thoại mới, một Content Observer
được cài đặt trên content provider URI: android.provider.CallLog.Calls.CONTENT_URI.
URI này cho phép phát hiện các cuộc gọi đến, đi và bỏ lỡ, cũng như số điện thoại bên ngoài,
tên liên lạc, thời gian, và ngày của cuộc gọi bắt đầu. Truy cập vào các logs nội dung cuộc
gọi điện thoại đòi hỏi phải có sự phân quyền android.permission.READ_CONTACTS được
thêm vào AndroidManifest.
3.2.5.6. Contacts Added
Thông tin liên lạc có thể được theo dõi những thay đổi trên điện thoại Android thông
qua Content Observer. Thu thập thông tin thêm số liên lạc điện thoại đòi hỏi phải có sự phân
quyền android.permission.READ_CONTACTS được thêm vào AndroidManifest.
3.2.5.7. Tài khoản thiết bị
Tên tài khoản được lấy ra bởi vòng lặp thông qua một loạt các đối tượng tài khoản
thông qua AccountManager.get() API của phương thức Android.GetAccounts(). Yêu cầu
duy nhất để sử dụng phương thức này là cần phân quyền
này là trống, có có văn bản kèm với tin nhắn MMS. Tuy nhiên, không có cơ chế để truy cập
vào nội dung văn bản đã được tìm. URI: content://mms-sms/conversations được sử dụng để
tìm địa chỉ một số liên lạc (số điện thoại hoặc địa chỉ email) thông qua ID luồng hội thoại.
Các phân quyền cho yêu cầu cần thiết MMS tin nhắn thu được trong AndroidManifest
của ứng dụng bao gồm android.permission.RECEIVE_MMS,
android.permission.READ_CONTACTS, và android.permission.RECEIVE_WAP_PUSH.
3.2.5.12. Pictures Added
Để đạt được khả năng giám sát Pictures rộng hơn, chúng ta sử dụng Content
Observer thay thế cho Broadcast Receiver. Content observer được đăng ký trên Android
Gallery’s content URI:
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI. Kết quả sẽ thu
được thông báo về sự thay đổi khi thêm picture sử dụng Content Observer, nó không bao
gồm thông tin thay đổi trong Gallery. Sự thu thập này không đòi hỏi thêm phân quyền trong
AndroidManifest để đạt được quyền đọc và truy cập tới nội dung.
3.2.5.13. Screen Lock Status
Broadcasts toàn hệ thống được gửi đi khi màn hình Android trạng thái (ví dụ: mở
khóa , khóa, trạng thái các tắt). Để bắt giữ những broadcasts thay đổi này, Broadcast
Receiver phải được thiết lập với tent-filters để xử lý: Intent.ACTION_USER_PRESENT,
Intent.ACTION_SCREEN_ON và Intent.ACTION_SCREEN_OFF. Không cần bổ sung phân
quyền trong Androidmanifest để truy cập thông tin này.
3.2.5.14. Short Message Service
Broadcast Receivers được cấu hình để lấy tin nhắn SMS nhưng không được áp dụng
cho các tin nhắn gửi đi. Tin nhắn gửi đi được bắt giữ thông qua một Content Observer đăng
ký trên Content Provider URI không được đặc tả trong Android SDK:content://sms. Trong
trường hợp tin nhắn SMS gửi đi, thông báo thay đổi được tạo ra thông qua Content
Observer cho mỗi bước của quá trình truyền giao (ví dụ: các message di chuyển từ trạng
thái "draft "trạng thái "pending " trạng thái "sent"). Khả năng thu thập thông tin tin
nhắn SMS trong ứng dụng đòi hỏi phân quyền android.permission.RECEIVE_SMS,
android.permission.READ_SMS, và android.permission.READ_CONTACTS được khai báo
thu thập được một cách dễ dàng. Áp dụng thuật toán K-Mean chúng ta có thể phân lớp các
dữ liệu thu thập được tạo thành các nhóm dữ liệu ví dụ như nhóm dữ liệu thời trang, giải trí,
thể thao, xã hội. Do thời gian có nghiên cứu ngắn nên đây chỉ là hướng mở để trong tương
lai tôi sẽ tiếp tục phát triển.
3.4. Tổng kết
Hệ thống giới thiệu trong luận văn này phục vụ như một mô hình tham khảo cho
cộng đồng Android để thiết kế và thực hiện thu thập thông tin về hành vi, thói quen người
sử dụng thiết bị Android trong môi trường doanh nghiệp mà không cần quyền root. Ứng
dụng là giải pháp mã nguồn mở. Tuy nhiên, nó đòi hỏi phải nghiên cứu thêm và cải tiến để
mở rộng số lượng các tập hợp dữ liệu thu thập. Các dữ liệu được thu thập bởi ứng dụng sẽ
có ích cho việc tạo ra các dịch vụ và ứng dụng có ích cho người sử dụng. Chương này giới
thiệu một danh sách các bộ dữ liệu có sẵn thông qua các Android API mặc định cho các nhà
nghiên cứu và các nhà phát triển để tham khảo.
CHƯƠNG 4. XÂY DỰNG ỨNG DỤNG THU THẬP, PHÂN ÍCH
HÀNH VI VÀ HÓI QUEN NGƯỜI SỬ DỤNG THIẾT BỊ
ANDROID
4.1. Tổng quan về ứng dụng
Do phạm vi nghiên cứu đề tài luận văn trong thời gian ngắn hạn, nên Tôi xây dựng
ứng dụng chỉ mang tính chất demo về một số cái tôi đã nghiên cứu được. Ứng dụng gồm hai
phần: ứng dụng trên Client và ứng dụng trên hệ thống Server. Ứng dụng trên Client làm
nhiệm vụ thu thập dữ liệu, lọc dữ liệu và để định kỳ gửi về server. Dữ liệu ở Client thu thập
được bao gồm các dữ liệu thu thập khi thao tác với web, Dữ liệu thu thập khi ứng dụng chạy
trên thiết bị di động Android…Ứng dụng trên server nhận dữ liệu gửi về từ client và lưu trữ
dữ liệu vào Database.
4.2. Cấu trúc hệ thống ứng dụng
Hình 4.1: Cấu trúc hệ thống ứng dụng
- Collect And Filter: Thu thập dữ liệu theo định kỳ mỗi giờ một lần, lọc dữ
liệu cần
thiết để lưu vào bộ chứa dữ liệu trước khi truyền tới server.
độ thấp.
- READ_PHONE_STATE: Cho phép chỉ đọc truy cập vào trạng thái điện thoại.
- PROCESS_OUTGOING_CALLS: Cho phép một ứng dụng để theo dõi,
thay đổi
hoặc hủy bỏ các cuộc gọi đi
- READ_HISTORY_BOOKMARKS: Cho phép một ứng dụng để đọc (nhưng
không
ghi) lịch sử và bookmarks của người sử dụng.
- WRITE_HISTORY_BOOKMARKS: Cho phép một ứng dụng để ghi (nhưng
không
đọc) lịch sử duyệt web và bookmarks của người dùng.
4.2.2. Một số API cài đặt cho ứng dụng
4.2.2.1. Cài đặt thu thập thông tin người sử dụng thao tác với trình duyệt
Sử dụng dữ liệu Content Provider từ ứng dụng của trình duyệt. Ứng dụng cần phải
được khai báo phân quyền READ_HISTORY_BOOKMARKS,
WRITE_HISTORY_BOOKMARKS trong AndroidManifest.xml của ứng dụng.
Bảng 4.1: Cài đặt thu thập thông tin người dùng thao tác trên trình duyệt
String result = "";
String time = "";
int i = 1;
Cursor mCur = managedQuery(Browser.BOOKMARKS_URI,
Browser.HISTORY_PROJECTION, null, null, null);
mCur.moveToFirst();
if (mCur.moveToFirst() && mCur.getCount() > 0) {
while (mCur.isAfterLast() == false) {
if(mCur.getString(Browser.HISTORY_PROJECTION_DATE_INDEX) != null){
long dateTime =
// log
try {
Process process = Runtime.getRuntime().exec("logcat -d");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log = new StringBuilder();
String line;
System.out.println("get Log");
while ((line = bufferedReader.readLine()) != null) {
log.append(line + "\n");
e.getMessage());
}
result.append(log.toString());
} catch (IOException e) {
Log.v(TAG, "IOException of handleBehaviorData: " +
}
4.2.2.4. Cài đặt thu thập thông tin cuộc gọi.
Để thu thập thông tin cuộc gọi đến ta phải sử dụng PhoneStateListener để đăng ký
lắng nghe sự kiện cuộc gọi đến sử dụng method onCallStateChanged(int state, String
incomingNumber) để thu được số điện thoại gọi đến. Từ số điện thoại này chúng ta sẽ lấy
thông tin danh bạ điện thoại trên thiết bị để so sánh biết thêm chi tiết thông tin về cuộc gọi
đến. Chúng ta sử dụng BroadCast để thu thập thông tin cuộc gọi đi.
Bảng 4.4: Cài đặt thu thập thông tin cuộc gọi
/**
* Listener to detect incoming calls.
*/
private class CallStateListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
Trong tương lai tôi sẽ nghiên cứu thêm về công nghệ android và một số công nghệ
của hãng thứ ba để có thể ứng dụng thu thập thêm các loại dữ liệu. Ngoài ra phát triển thêm
hệ thống trên server, nghiên cứu các thuật toán phân tích dữ liệu và cách tổ chức lưu trữ dữ
liệu trên server, phân loại sở thích, hành vi của người sử dụng theo các nhóm để dự đoán,
tính toán về mức độ thích một dịch vụ hay một loại sản phẩm nào đó. Tạo ra tính tiện ích
giữa người sử dụng với các dịch vụ của ứng dụng.