26
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 MÃ SỐ: 60.48.01.04 TÓM TẮT LUẬN VĂN THẠC SĨ HÀ NỘI - 2013

THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

Embed Size (px)

Citation preview

Page 1: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

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

MÃ SỐ: 60.48.01.04

TÓM TẮT LUẬN VĂN THẠC SĨ

HÀ NỘI - 2013

Page 2: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

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: TS. Nguyễn Khanh Văn

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

Page 3: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

1

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

không ngừng. Do sự dư thừa thông tin và quảng cáo, người sử dụng có thể gặp khó khăn khi

phải chọn lựa, sàng lọc ra thông tin tốt, hợp lý nhất ... phục vụ cho công việc hoặc sự giải trí

của mình. Để hỗ trợ người sử dụng một cách tốt nhất cần có phần mềm thu thập thu thập tất

cả các hành vi và thói quen của người sử dụng trên các ứng dụng, dịch vụ dành cho điện

thoại di động. Sau khi thu thập tất cả các hành vi và thói quen của người sử dụng trong các

khoảng thời gian định kì sẽ tiến hành phân tích các hành vi, thói quen người sử dụng mục

đích để nắm bắt nhu cầu sử dụng, sở thích, thói quen của người sử dụng để chúng ta có thể

tạo ra các sản phẩm, các dịch vụ,.. phục vụ cho người sử dụng tốt hơn nữa. Đồng thời phần

mềm cũng hỗ trợ đưa ra những gợi ý tư vấn cho sự lựa chọn các ứng dụng và dịch vụ phù

hợp nhất cho người sử dụng. Đây chính là những lý do để tôi chọn đề tài “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”. Nội dung của luận

văn nghiên cứu, và phát triển được trình bày thông qua bốn chương:

- Chương 1: Nền tảng công nghệ Android cho thiết bị di động.

- Chương 2: Một số Cơ sở lý thuyết liên quan.

- Chương 3: Khảo sát 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.

- Chương 4: Xây dựng ứng dụng thu thập, Phân tích hành vi và thói quen người sử

dụng thiết bị di động Andriod.

Page 4: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

2

CHƯƠNG 1. NỀN TẢNG CÔNG NGHỆ ANDROID CHO THIẾT

BỊ DI ĐỘNG

1.1. Tổng quan công nghệ Android

1.1.1. Sơ lược lịch sử công nghệ Android

Android là một hệ điều hành mở phát triển dựa trên nền tảng Linux dành cho các

Thiết bị di động cảm ứng. Công nghệ Android đầu tiên được nghiên cứu bởi tổng công ty

Android với sự hỗ trợ đầu tư của Google. Ngày 17 tháng 8 năm 2005, Google mua lại 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.

Page 5: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

3

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

thứ 3 viết bằng ngôn ngữ java vào tầng này.

Page 6: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

4

- Application Framwork: Tầng này của hệ điều hành Android cung cấp một nền tảng

phát triển ứng dụng mở qua đó cho phép nhà phát triển ứng dụng có khả năng tạo ra

các ứng dụng vô cùng sáng tạo và phong phú.

- Libraries: là lớp chứa các thư viện native Android. Các thư viện chia sẻ tất cả được

viết bằng C, C + +, mục đích biên dịch cho các kiến trúc phần cứng đặc biệt được sử

dụng cho điện điện thoại.

- Android Runtime: Android bao gồm một tập hợp các thư viện lõi cung cấp hầu hết

các chức năng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java. Tất cả các

ứng dụng Android sẽ có một thể hiện riêng trên máy ảo Dalvik. Máy ảo Dalvik đã

được viết để một thiết bị có thể chạy nhiều máy ảo cùng lúc có hiệu quả và nó thực

thi các file có định dạng (. dex) mục đích tối ưu hóa cho bộ nhớ và sử dụng tối thiểu

bộ nhớ.

- Linux Kernel: Android dựa trên Linux phiên bản 2.6 cho hệ thống cốt lõi dịch vụ

như an ninh, quản lý bộ nhớ, quản lý tiến trình, Network stack, Driver model. 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

Page 7: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

5

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

Một Activity có 4 trạng thái:

- Active hay Running: Khi một Activity đang chạy trên màn hình. [5]

- Paused: Khi một Activity vẫn đang chạy trên màn hình nhưng đang bị một Activity

trong suốt (transparent) hay nó bị chiếm toàn màn hình hiển thị phía trên. Tuy vẫn

lưu trữ dữ liệu, nhưng các paused Activity này sẽ bị hệ thống bắt chấm dứt khi đang

thiếu bộ nhớ trầm trọng. [5]

- Stopped: Khi một Activity bị che khuất hoàn toàn bởi một Activity khác (Activity

này đang ở chế độ background). Ở trạng thái Stoped, Activity vẫn tồn tại có nghĩa

đối tượng Activity vẫn giữ lại trọng bộ nhớ, duy trì trạng thái và thông tin thành viên

của nó. Tuy nhiên các stopped Activity này sẽ thường xuyên bị hệ thống bắt chấm dứt

giải phóng bộ nhớ để cấp bộ nhớ cho các tiến trình khác. [5]

- Killed hay Shut down: Khi một Activity đang paused hay stopped, hệ thống sẽ xóa

Activity ấy ra khỏi bộ nhớ. Nhà phát triển ứng dụng có cài đặt phương thức finish()

trước khi bị xóa khỏi bộ nhớ. [5]

1.3.1.2. Intent

Ba trong số các thành phần cốt lõi của một ứng dụng: Activities, Services và

Broadcast Receivers được kích hoạt thông qua message, gọi là Intent. Một đối tượng intent

là một cấu trúc dữ liệu thụ động nắm giữ một mô tả trừu tượng của một hoạt động được

Page 8: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

6

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.

Page 9: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

7

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ác dữ liệu đơn giản sẽ có một khóa duy nhất trong Shared preferences. Bằng cách sử dụng

khóa này, giá trị đã lưu trước đó, ngay cả những ứng dụng đã bị hủy và khởi động lại một

lần nữa nó sẽ được phục hồi. Trong trường hợp giá trị yêu cầu chưa được thiết lập một giá

trị mặc định sẽ được trả lại. Nếu dữ liệu có lưu trữ theo cấu trúc với số lượng lớn thì không

nên sử dụng nên sử dụng lưu trữ với database (sqlite).

1.3.6. LogCats

LogCats là phương pháp được sử dụng trên các thiết bị dựa trên Android để hiển thị

các thông điệp hoặc các bản ghi tương tự như các câu lệnh System.out.println() của Java. Để

gọi nó, các lập trình viên có thể viết in mã code trong bất kỳ nơi mã code tồn tại. Điều quan

trọng là đề cập đến những thông báo hoặc các log có thể được chụp và xử lý bởi bất kỳ

chương trình nào đang chạy trong Android, bởi vì nó là cơ sở của chương trình thực hiện

cho dự án này.

1.3.7. ửi và nhận messages trong Andriod

Bên cạnh các phương pháp broadcast receiver, cách khác để giao tiếp trong Android

đang sử dụng các messages và Handlers.

Nhận message này phải cài đặt các phương thức xử lý (handler). Các phương thức xử

lý là tiến trình đó liên tục lặp lại kiểm tra các nội dung của hàng đợi message và bộ lọc

message. Bởi vì sự lặp lại này, khi phương thức xử lý không được cài đặt trong các Activity

nó đã được cài đặt trong thread khác.

1.4. ổng kết

Android có xây dựng trên nhân Linux nên nó thừa hưởng được những đặc tính quý

của Linux, nhất là về độ bảo mật và hiệu năng hoạt động cao. Không những thế, nhân Linux

để phát triển cho Android đã được tối ưu và cải thiện để phù hợp với hệ thống điện thoại

nên nó có khả năng tùy biến, tương thích cao với nhiều mẫu điện thoại của nhiều hãng khác

nhau. Android là hệ điều hành đa nhiệm một người dùng. Tính đa nhiệm cho phép cùng một

thời gian, người dùng có thể chạy được nhiều ứng dụng để làm được nhiều việc khác nhau.

Tuy nhiên, mỗi ứng dụng trên Android thì chỉ được phép chạy với một thực thể mà thôi.

Page 10: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

8

CHƯƠNG 2. MỘT SỐ CƠ SỞ LÝ HUYẾ LIÊN QUAN

2.1. Bảo mật ứng dụng Android.

Khi Chúng ta phát triển các ứng dụng Android, Chúng ta phải giải quyết một số khía

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:

Page 11: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

9

<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

phân quyền trong thời gian chạy. Các API này là một phần của lớp android.content.Context,

cung cấp toàn bộ thông tin về một môi trường ứng dụng.

2.1.2. Sandbox

Android sử dụng khái niệm về sandbox để bắt buộc tách riêng giữa ứng dụng với

nhau và các phân quyền để cho phép hoặc ngăn không cho một ứng dụng truy cập vào các

tài nguyên của thiết bị như các file và các thư mục, các mạng, các cảm biến và các API nói

chung. Các ứng dụng Android chạy trên tiến trình Linux riêng của mình và được gán cho

một ID của người dùng duy nhất (UID). Theo mặc định, các ứng dụng chạy trong một tiến

trình của sandbox cơ sở không được gán cho các phân quyền, do đó ngăn không cho các

ứng dụng như vậy được truy cập vào hệ thống hoặc các tài nguyên. Tuy nhiên, các ứng

dụng Android có thể yêu cầu các phân quyền thông qua các manifest.xml file của ứng dụng.

2.1.3. Ký ứng dụng (Application signing)

Tất cả các ứng dụng Android phải được ký. Việc ký ứng dụng hoặc mã là quá trình

ký số một ứng dụng cụ thể bằng cách sử dụng một khóa riêng để:

Page 12: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

10

Xác định tác giả của mã.

Phát hiện ra nếu các ứng dụng đã thay đổi.

Xây dựng sự tin cậy giữa các ứng dụng.

2.1.4. Loại bỏ từ xa sự chuyển đổi (Remote kill switch).

Các ứng dụng Google Play có khả năng loại bỏ từ xa các ứng dụng từ thiết bị cầm tay

của người sử dụng khi ứng dụng được vi phạm việc thỏa thuận phân phối phát triển hoặc

chính sách chương trình phát triển.

Tuy nhiên các loại bỏ từ xa chỉ hữu ích đối với các ứng dụng cài đặt thông qua thị

trường Google Play. Các ứng dụng cài đặt thông qua các kênh không chính thức sẽ không bị

ảnh hưởng bởi tính năng này.

2.1.5. Bảo vệ file hệ thống

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.

Page 13: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

11

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 để

cho máy tính có thể giải quyết các vấn đề giống như con người. Ví dụ như các hệ thống có

thể "học" cách phân loại thư điện tử xem có phải thư rác (spam) hay không và tự động xếp

thư vào thư mục tuơng ứng.

2.2.2. Thuật toán K-Means

Trong số các thuật toán phân nhóm tồn tại, thì thuật toán k-means sử dụng rộng rãi

nhất. Nó là một thuật toán lặp tổ chức dữ liệu số trong số k cụm. Các dữ liệu số, hoặc tập

huấn luyện, được tổ chức trong vectơ với một kích thước bằng với số tính năng được đánh

giá. Thuật toán K-means phân tích quá trình phân cụm đơn giản nên có thể áp dụng đối với

tập dữ liệu lớn. Tuy nhiên nhược điểm của thuật toán này là chỉ áp dụng với dữ liệu có

thuộc tính số và khám phá ra các cụm có dạng hình cầu, K-means còn rất nhạy cảm với

nhiễu và các phần tử ngoại lai trong dữ liệu. Chất lượng của thuật toán K-means phụ thuộc

nhiều vào các tham số đầu vào như: số cụm k và k trọng tâm khởi tạo ban đầu.

2.3. Tổng kết

Android là một nền tảng di động hiện đại được thiết kế để được thực sự mở. Để bảo

vệ giá trị, nền tảng này phải cung cấp một môi trường ứng dụng để đảm bảo sự an toàn của

người sử dụng, dữ liệu, ứng dụng, thiết bị, và mạng. Đảm bảo một nền tảng mở đòi hỏi một

kiến trúc bảo mật mạnh mẽ và các chương trình an ninh nghiêm ngặt. Android được thiết kế

với bảo mật đa tầng cung cấp sự linh hoạt cần thiết cho một nền tảng mở, trong khi cung cấp

bảo vệ cho tất cả người dùng của nền tảng này.

Page 14: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

12

CHƯƠNG 3. KHẢO SÁ CÁC PHƯƠNG PHÁP, CÔNG CỤ HỖ

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

Page 15: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

13

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ế

Một chiến lược thiết kế chung cho các thành phần thu thập dữ liệu ưu tiên được áp

dụng trong suốt sự phát triển của ứng dụng, như trình bày dưới đây.

Broadcast ReceiversContent observersAlarms

3.2.2.5. Hệ thống lưu trữ dữ liệu thu thập

Tất cả các dữ liệu thu thập được lưu trữ tạm thời trong một cơ sở dữ liệu SQLite địa

phương trên thiết bị.

3.2.2.6. Data sender

Dữ liệu sẽ không được truyền đi liên tục tới ứng dụng tới server khi đã có kết nối

wifi hoặc 3G, mà nó sẽ truyền định kỳ 1 giờ một lần. Mục đích để giảm sự tiêu tốn nguồn

và tại nguyên của CPU.

3.2.3. Ứng dụng trên server

Ứng dụng trên server là một hệ thống thực hiện các chức năng: nhận dữ liệu, lọc và

phân tích dữ liệu sau đó kết quả sẽ được lưu trữ vào hệ thống cơ sở dữ liệu. Kết quả lưu trữ

này tạo tiền đề để phát triển các ứng dụng khác sử dụng tùy theo mục đích của mình.

Page 16: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

14

3.2.4. Event sender và Event reciever

Trên ứng dụng client trên Android cài đặt Event Receiver để nhận các sự kiện hữu

ích cho người sử dụng từ Event Sender của ứng dụng server.

3.2.5. Các bộ dữ liệu thu thập

3.2.5.1. App Installs and Removals

Khi một ứng dụng được cài đặt hoặc gỡ bỏ, một broadcast toàn hệ thống được gửi

qua thiết bị Android. Các ứng dụng không cần phải khai báo phân quyền trong

AndroidManifest nhận được broadcast này, mặc dù chúng phải đăng ký một boadcast

receiver và phải gồm có intent-filters để xử lý các sự kiện Intent.PACKAGE_ADDED và

Intent.PACKAGE_REMOVED.

3.2.5.2. Browser Navigation History

Uniform Resource Locators (URL) của các trang web truy cập thông qua xây dựng

trong trình duyệt Web Android được thu thập thông qua Alarm. Để tránh pin và hiệu suất

thiết bị xuống cấp một Arlam được lên kế hoạch và cấu hình để mỗi giờ theo mặc định thực

hiện một truy vấn trên Content Provider URI:

android.provider.Browser.BOOKMARKS_URI. Content Provider này có tùy chọn để truy

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

Page 17: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

15

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

android.permission.GET_ACCOUNTS trong AndroidManifest.

3.2.5.8. Device ID

Một ID thiết bị là một định danh duy nhất để phân biệt thiết bị Android này với thiết

bị android trong ứng dụng server. Ứng dụng sử dụng một Alarm được gọi là phương thức

getDeviceId( ) từ lớp TelephonyManager API Android để truy cập trực tiếp ID thiết bị. Phân

quyền android.permission.READ_PHONE_STATE phải được khai báo trong

AndroidManifest cho một ứng dụng để trích xuất các ID thiết bị.

3.2.5.9. GPS Location

Để giảm thiểu các vấn đề nghiên cứu này, phương thức getLastKnownLocation() đã

được sử dụng thông qua một Alarm lên kế hoạch để thực hiện mỗi giờ một lần theo mặc

định. Phương thức này dựa trên việc sử dụng GPS được kích hoạt trước khi vào bộ thu thập

và không kích hoạt cung cấp định vị, do đó tiết kiệm tuổi thọ pin của thiết bị. Truy cập vào

Page 18: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

16

các nhà cung cấp GPS yêu cầu sự phân quyền

android.permission.ACCESS_FINE_LOCATION được khai báo trong AndroidManifest.

3.2.5.10. Location Provider Settings Changes

Thiết bị Android bao gồm một nhà cung cấp vị trí GPS và một nhà cung cấp vị trí

mạng. Các nhà cung cấp GPS nhận thông tin cập nhật vị trí thông qua vệ tinh, trong khi các

nhà cung cấp mạng lấy được một tập tọa độ hiện thời thông qua các điểm truy cập Wi-Fi và

tế bào(cell) di động. Khi cài đặt của thiết bị được điều chỉnh bằng tay để kích hoạt hoặc vô

hiệu hóa các nhà cung cấp, một hệ thống broadcast được tạo ra. Trong ứng dụng, một

broadcast receiver được thành lập với intent-filter để xử lý các intent

LocationManager.PROVIDERS_CHANGED_ACTION. Không có phân quyền nào được yêu

cầu trong AndroidManifest để truy cập thông tin này.

3.2.5.11. Message Service

Ứng dụng khai báo Broadcast Receiver và bao gồm intent-filters xử lý các intent

android.provider.Telephony.MMS_RECEIVED và android.provider.Telephony.WAP_PUSH

có thể được thông báo về tin nhắn MMS đến. Content Provider URI: content://mms chứa

message ID, hướng (gửi đến hoặc gửi đi), ngày nhắn tin, ID luồng hội thoại, tiêu đề.

Content provider URI: content://mms/part có chứa tên file hình ảnh và trường văn bản. Nếu

trường văn bản là null, thì không có văn bản kèm với tin nhắn MMS. Nếu trường văn bả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

Page 19: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

17

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

trong AndroidManifest.

3.2.5.15. Third-Party App Logs

Hệ thống log ứng dụng của Android (android.util.Log) có sẵn cho bất kỳ ứng dụng

Android sử dụng. Các log ứng dụng được mặc định lưu trữ tạm thời trong một vòng đệm

trong file thiết bị đặc trưng/dev/log/main. Log có thể được đọc thông qua một công cụ có

sẵn trong SDK Android tên là logcat. Ứng dụng gọi logcat thực thi trong chế độ runtime.

Ứng dụng phải có phân quyền android.permission.READ_LOGS khai báo trong

AndroidManifest để truy cập vào tập dữ liệu này.

3.3. Phân tích dữ liệu thu thập

3.3.1. Cấu trúc chung của gói tin dữ liệu thu thập

Để thuận tiện cho việc phân tích dữ liệu cho từng người sử dụng. Hệ thống sẽ yêu

cầu người sử dụng phải thực hiện login mới sử dụng được hệ thống (Hoặc có thể tạo ra tài

Page 20: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

18

khoản mặc định dựa vào tài khoản mail của người sử dụng trên thiết bị Android). Mỗi một

bộ dữ liệu từ client truyền tới server bao gồm các thông tin có cấu trúc chung như sau:

- dataId: Là id của bộ dữ liệu thu thập

- content: Đây là cấu trúc của bộ dữ liệu. Tùy từng bộ dữ liệu khác nhau mà cấu trúc

dữ liệu khác nhau.

- app_name: Tên ứng dụng hoặc đường dẫn đặc trưng của package ứng dụng.

- behavior_date: Thời điểm mà xảy ra hành vi người sử dụng.

- collect_date: Thời điểm tiến hành thu thập dữ liệu.

3.3.2. Phân loại bộ dữ liệu thu thập hành vi

Dựa vào trường dataId của gói tin dữ liệu từ client truyền về server ta dễ dàng phân

loại được các loại dữ liệu về hành vi của người sử dụng. Thông qua các đặc điểm của trường

content của gói tin ta sẽ thiết kế bảng cơ sở dữ liệu cho phù hợp với từng bộ dữ liệu thu thập

được.

3.3.3. Phân lớp dữ liệu thu thập hành vi

Sau khi dữ liệu được phân loại như trên mục đích để chúng ta có thể sử dụng dữ liệu

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.

Page 21: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

19

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.

- Client Data Store: Bộ chứa dữ liệu truyền đi ở client, Thường lưu trữ dữ liệu vào

database sqlite sẵn có của Android.

- Sender và Reciever: Bộ gửi và nhận dữ liệu giữa Client với Server. Ở client Theo

định kỳ cứ sau hai giờ nó sẽ kiểm tra dữ liệu ở bộ chứa dữ liệu và truyền tới Server.

Sau đó nó sẽ xóa dữ liệu đã gửi thành công. Ở server nó có chức năng nhận dữ liệu

Page 22: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

20

của client để đưa tới bộ xử lý dữ liệu. Ngoài ra nó có chức năng gửi thông báo cho

các Client hoặc một nhóm Client.

- Data Handler: Nhiệm vụ phân tích xử lý dữ liệu được nhận từ Client. Dữ liệu sẽ

được xử lý và phân loại để lưu vào database.

- Server Data Store: Là nơi lưu trữ dữ liệu thu thập được. Để lưu trữ dữ liệu tôi sử

dụng Database Mysql. Dữ liệu có thể là nguồn tham khảo cho các ứng dụng và dịch

vụ khác.

4.2.1. Các phân quyền sử dụng trong ứng dụng

- INTERNET: Cho phép ứng dụng mở socket network.

- GET_TASKS: Cho phép một ứng dụng để có được thông tin về các nhiệm vụ hiện

tại hoặc gần đây đang hoạt động.

- READ_LOGS: Cho phép một ứng dụng để đọc các tập tin đăng nhập hệ thống ở mức

độ 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();

Page 23: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

21

if (mCur.moveToFirst() && mCur.getCount() > 0) {

while (mCur.isAfterLast() == false) {

if(mCur.getString(Browser.HISTORY_PROJECTION_DATE_INDEX) != null){

long dateTime =

Long.parseLong(mCur.getString(Browser.HISTORY_PROJECTION_DATE_INDEX));

cal.setTimeInMillis(dateTime);

time = cal.getTime().toString();

result += i + ") " +

mCur.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX) + " - " + time + "\n";

i++;

}

mCur.moveToNext();

}

}

4.2.2.2. Cài đặt thu thập thông tin các ứng dụng đang hoạt động.

Tại một thời điểm chỉ có giao diện của một ứng dụng hiển thị cho người dùng. Các

ứng dụng còn lại nếu hoạt động chúng sẽ chạy ngầm background trong hệ thống. Những

ứng dụng này sẽ phải cài đặt dưới dạng Service để có thể chạy ngầm được. Ứng dụng cần

phải được khai báo phân quyền READ_LOGS trong AndroidManifest.xml của ứng dụng.

Bảng 4.2: Cài đặt thu thập thông tin các ứng dụng đang hoạt động

String result = "";

ActivityManager activityManager = (ActivityManager)

getSystemService(ACTIVITY_SERVICE);

List<ActivityManager.RunningAppProcessInfo> listApp =

activityManager.getRunningAppProcesses();

for (int i = 0; i < listApp.size(); i++) {

result += "app " + i + ": " + listApp.get(i).processName.toString() + "\n";

}

4.2.2.3. Cài đặt thu thập dữ liệu logs.

Để thu thập được dữ liệu log chúng ta phải sử dụng tool log-cat để lấy dữ liệu và

Ứng dụng cần phải được khai báo phân quyền GET_TASKS trong AndroidManifest.xml

của ứng dụng.

Bảng 4.3: Cài đặt thu thập dữ liệu logs

StringBuffer result = new StringBuffer();

// log

try {

Page 24: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

22

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");

}

result.append(log.toString());

} catch (IOException e) {

Log.v(TAG, "IOException of handleBehaviorData: " +

e.getMessage());

}

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) {

case TelephonyManager.CALL_STATE_RINGING:

// called when someone is ringing to this phone

controller.handleIncomingCall(incomingNumber);

break;

}

}

}

/**

* Broadcast receiver to detect the outgoing calls.

*/

Page 25: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

23

public class OutgoingReceiver extends BroadcastReceiver {

public OutgoingReceiver() {

}

@Override

public void onReceive(Context context, Intent intent) {

String outgoingNumber =

intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);

controller.handleOutgoingCall(outgoingNumber);

}

}

4.3. Kết Quả của Demo ứng dụng

4.4. Tổng kết

Do thời gian nghiên cứu luận văn ngắn, các tài liệu nghiên cứu chuyên sâu về

Android rất hiếm và khó tìm kiếm. Google lại liên tục nghiên cứu, phát triển các phiên bản

mới tăng cường tính bảo mật hơn nên làm cho việc nghiên cứu luận văn rất khó khăn. Ứng

dụng giới thiệu trong luận văn chỉ mang tính chất Demo cho một phần nghiên cứu được.

Trong chương này chúng ta đã mô tả cấu trúc của hệ thống ứng dụng theo mô hình Client –

Server, cách hoạt động của ứng dụng, API và các phân quyền sử dụng trong ứng dụng

Android Client. Thông qua cách mô tả này người đọc có thể hình dung ra cách cài đặt của

ứng dụng.

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.

Page 26: THU THẬP, PHÂN TÍCH HÀNH VI VÀ THÓI QUEN NGƯỜI …dlib.ptit.edu.vn/bitstream/123456789/1119/3/TTLV Vu Tru… ·  · 2013-12-05MỞ ĐẦU Ngày nay, điện ... phân tích

24

KẾT LUẬN

Mục đích của đề tài là 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 để cung cấp dữ liệu cho các công ty, nhà máy và các ngành, đối tượng có

liên quan nhằm tạo ra các sản phẩm, các tiện ích, dịch vụ để phục vụ cho con người tốt hơn.

Ngoài ra mục đích của thu thập và phân tích hành vi thói quen còn để xây dựng hệ thống trợ

giúp, tư vấn cho người người sử dụng như loại bỏ thông tin rác, thông tin dư thừa và sàng

lọc ra những thông tin tốt nhất cung cấp cho người sử dụng lựa chọn. Con người sẽ tiết kiệm

được thời gian và công sức khi sử dụng hệ thống.

Kết quả nghiên cứu của đề tài giúp cho các công ty, nhà máy tạo ra sản phẩm, dịch

vụ có tính ứng dụng cao trong thực tế trong nhiều lĩnh vực ví dụ: Khi người sử dụng cài đặt

và xác nhận đồng ý sử dụng sản phẩm, dịch vụ này thông qua phân tích dữ liệu hành vi liên

quan đến lĩnh vực ăn uống khi người sử dụng đang ở một địa điểm nào đó muốn tìm một

nhà hàng để ăn trưa họ sẽ được cung cấp ngay thông tin những nhà hàng tốt nhất quanh khu

vực đó phù hợp với khẩu vị và giá cả. Thông qua phân tích dữ liệu hành vi liên quan đến

thời trang của những người sử dụng các hãng thời trang sẽ tạo ra được các sản phẩm thời

trang phù hợp với xu thế của người sử dụng và hạn chế sản xuất những sản phẩm không phù

hợp hoặc được quan tâm nhiều…

Do luận văn nghiên cứu trong một thời gian ngắn nên còn nhiều vấn đề chưa được

nghiên cứu và giải quyết. Trong tương lai, Ứng dụng của luận văn sẽ được mở rộng bởi sự

nghiên cứu thêm nhiều loại dữ liệu được thu thập và nghiên cứu về phân tích và tìm kiếm

dữ liệu thu thập được trên hệ thống server mục đích để tạo ra sản phẩm có ích phục vụ cho

cộng đồng.