Mô hình Class cùng mô hình hoạt động chi tiết của từng Modul

Một phần của tài liệu Quản lý, giám sát và điều khiển thiết bị bằng phần mềm trên Android thông qua mạng điện thoại di động (Trang 52)

4.3.3.1. Main Package

4.3.3.1.1. Biểu đồ class và GUI

Main Package +onCreate() +onResume() +onPause() +onDestroy() +onCreateOptionsMenu() +onOptionsItemSelected() +onCreateDialog() MainActivity Activity

Hình 4-5: Biểu đồ Main class và giao diện

MainActivity class đƣợc kế thừa từ Activity class, giao diện màn hình này tƣơng đối đơn giản, là nơi sẽ đi tới các chức năng chính của chƣơng trình.

Tại màn hình này cũng có thể thiết lập cấu hình phần mềm bằng cách lựa chọn Preferences từ Menu.

4.3.3.1.2. Biểu đồ hoạt động của các function chính.

Hình 4-6: Biểu đồ hoạt động hàm onCreate() trong Class MainActivity

Quá trình hoạt động này cần phải thực hiện các bƣớc quan trọng: thiết lập giao diện, thiết lập các sự kiện nhập liệu của ngƣời sử dụng, khởi động Service của chƣơng trình. 4.3.3.2. Service Manager 4.3.3.2.1. Biểu đồ class Service Manager Service -intentReceiver -deviceListFileName +onCreate() +onDestroy() -processMessage() -checkPhoneExist() -storeSMSContent() -getPhoneOrDescription() ServiceManager

Hình 4-7: Biểu đồ ServiceManager class

ServiceManager class đƣợc kế thừa từ Service class, service này sẽ chạy thƣờng trú cùng với hệ điều hành và cung cấp dịch vụ báo hiệu tin nhắn từ hệ thống cũng nhƣ hỗ trợ quá trình tính toán, xử lý dữ liệu.

4.3.3.2.2. Biểu đồ hoạt động của các function chính.

ServiceManager::onCreate

Register to receive SMS

Hình 4-8: Biểu đồ hoạt động hàm onCreate() trong ServcieManage class

Hàm này phải thực hiện duy nhất một mục đích: đăng ký nhận thông báo nhận tin nhắn SMS từ hệ thống. intenReceiver: ServiceManager::intentReceiver Get message Call processMessage() function Check SMS Yes No

Hình 4-9: Intent xử lý sự kiện nhận SMS trong ServiceManager class

Hàm onRecive() của intent này đƣợc gọi khi có thông báo nhận tin SMS từ SMSReceiver class. Hàm này sẽ nhận lấy nội dung SMS sau đó gọi hàm processMessage().

Hình 4-10: Biểu đồ hoạt động hàm processMessage() trong ServiceManage class

Hàm này thực hiện việc lƣu trữ nội dung tin nhắn theo cấu trúc đã đƣợc phân rã, sau đó thông báo quảng bá cho các module khác của chƣơng trình biết có tin nhắn mới đã sẵn sàng cho việc sử dụng.

checkPhoneExist() function:

Hàm này sẽ thực hiện tìm kiếm trong cấu file lƣu trữ để xác định xem đã có thiết bị (số phone number) đƣợc quản lý bằng chƣơng trình hay chƣa. Hàm này thƣờng xuyên đƣợc sử dụng trong quá trình thêm mới thiết bị, lấy thông tin và xử lý thông tin của một thiết bị.

storeSMSContent() function:

Hình 4-12: Biểu đồ hoạt động hàm storeSMSContent của ServiceManager class

Chƣơng trình phần mềm sử dụng lƣu trữ dạng file cho việc lƣu trữ dữ liệu cũng nhƣ cấu hình, hàm này thực hiện việc lƣu trữ tin nhắn của thiết bị vào file thông tin tin nhắn của chính thiết bị đó, có kiểm tra sự tồn tại của file trƣớc đó.

getPhoneOrDescription() function:

ServiceManager::getPhoneOrDescription

Validate String Input

Split string input

Return Command or Content

Hàm này sẽ trả về số điện thoại (hay còn gọi là DeviceID) hoặc mô tả về thiết bị (có thể gọi là tên thiết bị). (adsbygoogle = window.adsbygoogle || []).push({});

4.3.3.3. SMS Receiver 4.3.3.3.1. Biểu đồ class SMS Receiver BroadcastReceiver +onReceive() SMSReceiver

Hình 4-14: Biểu đồ SMSReceiver class

SMSReceiver class đƣợc kế thừa từ BroadcastReceiver class, thực hiện duy nhất một nhiệm vụ thực hiện xử lý khi có sự kiện nhận tin nhắn từ hệ thống để thông báo tới ServiceManager class.

4.3.3.3.2. Biểu đồ hoạt động của các function chính.

onReceive() function:

Hình 4-15: Biểu đồ hoạt động hàm oReceive() của SMSReceiver class

Đƣợc gọi khi có các thông tin quản bá từ hệ thống, và chỉ xử lý khi thông tin đó là thông báo có tin nhắn mới. Khi đó, hàm sẽ thực hiện việc xử lý thô thông tin của tin nhắn và thông báo tới ServiceManager class.

4.3.3.4. Device Manager

4.3.3.4.1. Biểu đồ class

Hình 4-16: Biểu đồ class của DeviceManager

Trong biểu đồ này, việc giám sát, quản lý và diều khiển sẽ đƣợc thực thi thông qua khối chức năng này. Chƣơng trình sẽ thực hiện việc quản lý thiết bị thông qua AddDeviceActivity class, việc giám sát và điều khiển đƣợc đƣa gọi từ DeviceTabActivity class.

AddDeviceActivity cũng đƣợc kế thừa từ Activity class. Đặc biệt có thêm một class PhoneInfo, nhăm mô tả các thông số và thuộc tính của thiết bị.

AddDeviceActivity còn chứa thêm 2 class hỗ trợ là IgnoreCaseComparetor dùng cho việc sắp xếp danh sách các thiết bị, PhoneItemAdpter dùng cho quá trình tạo danh sách các thiết bị trên màn hình hiển thị.

4.3.3.4.2. Các màn hình chính

Hình 4-17: Giao diện quản lý và thêm thiết bị

Hình 4-18: Màn hình ContextMenu và cập nhật mô tả thiết bị

4.3.3.4.3. Biểu đồ hoạt động của các function chính.

DeviceTabActivity::onCreate() function:

Hàm này thiết lập và khởi tạo ba Intent tƣơng ứng là: DeviceContent, DeviceCommand và DeviceReport, sau đó thực hiệt add ba Intent này vào TabHost.

DeviceTabActivity::onCreate

Declare DeviceContent intent Declare DeviceCommand intent

Declare DeviceReport intent

Init 3 intents

Add 3 intents to TabHost

Hình 4-19: Biểu đồ hoạt động hàm onCreate() của DeviceTabActivity class

AddDeviceActivity::onCreate() function: AddDeviceActivity::onCreate call setContentView() call loadPhoneInforList() function Sort listPhoneInfo

Regis event for Button, listView

Hình 4-20: Biểu đồ hoạt động hàm onCreate() của AddDeviceActivity class

Hàm này cần phải thiết lập giao diện cho phần quản lý thiết bị, danh sách các thiết bị sẽ đƣợc hiển thị cùng những chức năng có thể can thiệp trực tiếp tới. (adsbygoogle = window.adsbygoogle || []).push({});

Hàm này cũng cần thực hiện việc đăng ký các sự kiện cho các đối tƣợng trên màn hình.

AddDeviceActivity::onCreateDialog

Show About Dialog

call inputPhoneInfo() function

Show alert phone exist dialog

Show alert not Null validation

Hình 4-21: Biểu đồ hoạt động hàm onCreateDialog của AddDeviceActivity class

Tùy từng nơi gọi và điều kiện gọi hàm này mà thực hiện việc hiển thị một Dialog với nội dung tƣơng ứng.

AddDeviceActivity::loadPhoneInfoList() function: AddDeviceActivity::loadPhoneInfoList

read phoneListFileName file

Read nextLine

Add phone to phoneList

return phoneList

Yes No

Hình 4-22: Biểu đồ hoạt động hàm loadPhoneInfoList() của AddDevieActivity class

Hàm này trả về một danh sách số điện thoại (hay cũng tƣơng ứng với danh sách thiết bị). Thông tin này sẽ đƣợc lấy từ hệ thống file lƣu trữ.

AddDeviceActivity::addPhoneNumber

Open file which store phoneList

Write phoneInfo at the end of file

and phoneInfo to listPhoneInfo

refresh GUI

Hình 4-23: Biểu đồ hoạt động hàm addPhoneNumber() của AddDeviceActivity class

Hàm này thực hiện việc thêm một thiết bị vào chƣơng trình quản lý, cần làm những việc sau: lƣu vào file danh sách thiết bị trong hệ thống, thêm vào danh sách hiện tại và thực hiện việc làm mới giao diện.

AddDeviceActivity::removePhoneNumber() function: AddDeviceActivity::removePhoneNumber

Remove the phone from listPhoneInfo

Clear data of the phone

Replace phoneListFileName with content of listPhoneInfo

Update GUI Yes

No

Hàm thực hiện việc gỡ bỏ một thiết bị trong danh sách quản lý, thực hiện các việc: gỡ bỏ thiết bị trong danh sách thiết bị từ hệ thống file, cập nhật giao diện. (adsbygoogle = window.adsbygoogle || []).push({});

AddDeviceActivity::updatePhoneDescription() function AddDeviceActivity::updatePhoneDescription

Show the dialog to allow change description of the phone

Update to store file

Refresh GUI Yes

No

Hình 4-25: Biểu đồ hoạt động hàm updatePhoneDescription()

Khi có yêu cầu cần phải cập nhật mô tả thiết bị, hàm này đƣợc sử dụng, thực hiện việc cập nhật hệ thống file, cập nhật giao diện.

AddDeviceActivity::clearPhoneList() function:

AddDeviceActivity::clearPhoneList

Call clearePhoneData() function

Clear content of phoneListFileName file

Cleare listPhoneInfo

Refresh GUI

Hàm này hỗ trợ việc xóa hẳn danh sách thiết bị đang đƣợc quản lý một cách nhanh chóng, xóa bỏ hệ thống file lƣu trữ, cập nhật giao diện.

AddDeviceActivity::importPhoneList() function: AddDeviceActivity::importPhoneList

Import all contact list to listPhoneInfo

Hình 4-27: Biểu đồ hoạt động hàm importPhoneList() của AddDeviceActivity class

Hàm này đƣợc xây dựng nhằm hỗ trợ tính năng tạo ngay lập tức danh sách thiết bị cần quản lý từ contact list của điện thoại Android. Tên của số điện thoại sẽ là phần mô tả của thiết bị, thiết bị có ID là số điện thoại.

AddDeviceActivity::getPhoneOrDesc() function: AddDeviceActivity::getPhoneOrDescription

Validate input string

Split the string

Return Phone or Description

Hình 4-28: Biểu đồ hoạt động hàm getPhoneOrDescription

Khi thực hiện đọc thông tin về về thiết bị từ file lƣu danh sách thiết bị trong hệ thống file, cần thực hiện việc tách số điện thoại và phần mô tả từ một chuỗi ký tự, hàm này thực hiện chức năng đó.

AddDeviceActivity::clearPhoneData() function:

Hàm này hỗ trợ việc xóa bỏ toàn bộ dữ liệu của một thiết bị đã hoạt động từ trƣớc đó, thực hiện việc xóa tất nội dung message đã lƣu, xóa tất cả danh sách tập lệnh điều khiển và cập nhật lại giao diện.

AddDeviceActivity::clearPhoneData

Validate Input

Delete file store message of the phone

Delete file store command of the phone (adsbygoogle = window.adsbygoogle || []).push({});

Hình 4-29: Biểu đồ hoạt động hàm clearPhoneData() của AddDeviceActivity class

Hàm này hỗ trợ việc xóa bỏ toàn bộ dữ liệu của một thiết bị đã hoạt động từ trƣớc đó, thực hiện việc xóa tất nội dung message đã lƣu, xóa tất cả danh sách tập lệnh điều khiển và cập nhật lại giao diện.

AddDeviceActivity::isMyServiceRunning() function: AddDeviceActivity::isMyServiceRunning

Open ServiceManager of OS

Get nextService name

Return TRUE Return FALSE Yes Yes No No

Kiểm tra trạng thái Service của chƣơng trình, hàm này thực hiện việc kiểm tra sự tồn tại tên Service của chƣơng trình trong danh sách tên các Service của hệ điều hành đang chạy.

AddDeviceActivity::onCreateContextMenu() function: AddDeviceActivity::onCreateContextMenu

Set context menu

Hình 4-31: Hàm onCreateContextMenu() của AddDeviceActivity class

Đƣợc xây dựng nhằm hỗ trợ tính năng “long click” lên danh sách các thiết bị đƣợc quản lý. Nó thực hiện việc thiết lập nội dung cũng nhƣ quản lý các sự kiện ngƣời sử dụng. AddDeviceActivity::onContextItemSelected() function: AddDeviceActivity::onContextItemSelected Get PhoneNumber by ID call updatePhoneDescription() function call removePhoneNumber() function No Yes

Hình 4-32: Biểu đồ hoạt động hàm onContextItemSelected()

Hàm thi hành theo lựa chọn của ngƣời dùng, lấy ID của danh sách các lệnh và thực hiện theo yêu cầu.

AddDeviceActivity::onCreateOptionsMenu

Call Create option menu

Hình 4-33: Biểu đồ hoạt động hàm onCreateOptionMenu()

Thực hiện việc hỗ trợ Menu cho ngƣời dung.

AddDeviceActivity::onPrepareOptionMenu() function: AddDeviceActivity::onPrepareOptionsMenu

Get MenuItem of the handleService

Set icon to pause

Set icon to play Yes

No

Hình 4-34: Biểu đồ hoạt động hàm onPrepareOptionsMenu()

Trƣớc khi hiển thị Menu của giao diện màn hình, chƣơng trình cần phải kiểm tra trọng thái của Service đang hoạt động, để hiển thị và kiểm soát cho đúng chức năng.

AddDeviceActivity::onOptionsItemSelected() function: Thực hiện các chức năng mà ngƣời sử dụng lựa chọn.

AddDeviceActivity::onOptionsItemSelected Show About dialog call clearPhoneList() Call importPhones() Get ServiceManager Intent Stop Service Start Service Yes No

Hình 4-35: Biểu đồ hoạt động hàm onOptionsItemSelected()

AddDeviceActivity::isExistPhone() function: AddDeviceActivity::isExistPhone

Validate phone

Get nextPhone in listPhoneInfo (adsbygoogle = window.adsbygoogle || []).push({});

Return TRUE Return FALSE Yes Yes No

Mục đích dùng kiểm tra sự tồn tại của 1 thiết bị đƣợc quản lý trong chƣơng trình hay chƣa.

AddDeviceActivity::inputPhoneInfo() function: AddDeviceActivity::inputPhoneInfo

Show dialog for input a phone info

Handle event input

Validate input

Insert new PhoneInfo

Hình 4-37: Biểu đồ hoạt động hàm inputPhoneInfo() của AddDeviceActivity class

Thực hiện việc thêm một thiết bị vào danh sách quản lý, có thực hiện việc xác nhận thông tin đầu vào, xử lý các sự kiện thêm mới và cập nhật lại giao diện.

4.3.3.5. Device Command

4.3.3.5.1. Biểu đồ class

Biểu đồ class này cho thấy các mối quan hệ trong quá trình quản lý tập lệnh của thiết bị, nó cũng mô tả về danh sách các thuộc tính của DeviceCommandActivity class.

DeviceCommandActivity đƣợc kế thừa từ Activity class.

DeviceCommandActivity chứa class CommandInfo dùng để lƣu trữ và quản lý các thông tin cũng nhƣ thuộc tính của các lệnh điều khiển.

DeviceCommandActivity chứa class CommandItemAdapter dùng cho việc hỗ trợ hiển thị danh sách lệnh điều khiển trên màn hình.

Device Command Activity -strPhoneNumber -strDescription -intentFilter -listCommand -commamdAdapter -attribute #onCreate() -loadCommandInfoList() -addCommandName() -removeCommandName() -updateCommandContent() -clearCommandList() +onCreateContextMenu() +onContextItemSelected() -getCommandOrContent() +IExistCommand() +inputCommandInfo() #onCreateDialog() +sendCommandControl() -sendSMS() DeviceCommandActivity +CommandName +CommandContent +CommandInfo() CommandInfo -commandArray +CommandItemAdapter() #getView() CommandItemAdapter ArrayAdapter

Hình 4-38: Biểu đồ class của DeviceCommand

4.3.3.5.2. Các màn hình chính

Hình 4-40: Giao diện ContextMenu, cập nhật và xác nhận truyền một Command

4.3.3.5.3. Biểu đồ hoạt động của các function chính.

onCreate() function:

Hàm này đƣợc gọi khi giao diện quản lý Command bắt đầu đƣợc khởi tạo, nó thực hiện việc thiết lập layout cho màn hình, khởi tạo các tham số cho màn hình, đăng ký các sự kiện cho ngƣời dùng can thiệp tới các thành phần.

loadCommandInfoList() function:

Hình 4-42: Biểu đồ hoạt động hàmloadCommandInfoList()

Hàm thực hiện việc lấy danh sách tập lệnh của thiết bị đang đƣợc quản lý từ file tập lệnh trong hệ thống file, sau đó cập nhật lại giao diện.

addCommandName() function:

DeviceCommandActivity::addCommandName

Open Command file of the phone

Add a command with name and content to end of ile

Add this command to list (adsbygoogle = window.adsbygoogle || []).push({});

Hình 4-43: Biểu đồ hoạt động hàm addCommandName()

Thực hiện thêm mới một lệnh điều khiển vào file lƣu trữ tập command của thiết bị, đồng thời thêm vào listCommand và cập nhật lại giao diện.

DeviceCommandActivity::removeCommandName

Find the Command in Command List

Remove the Command in list

Remove command line in the command file Yes

No

Hình 4-44: Biểu đồ hoạt động hàm removeCommandName()

Ngƣợc lại với hàm addCommandName(), hàm này thực hiện việc loại bỏ một lệnh của thiết bị.

updateCommandContent() funtion:

DeviceCommandActivity::updateCommandContent

Find the command in command list

Get the position

Update command in the command list

Replace content in command file with command list No

Yes

Hình 4-45: Biểu đồ hoạt động hàm updateCommandContent

Hỗ trợ việc cập nhật lại nội dung của một lệnh điều khiển của thiết bị. clearCommandList() funtion:

DeviceCommandActivity::clearCommandList

Clear all content of the command file which has the phone

Clear Command List

Hình 4-46: Biểu đồ hoạt động hàm clearCommandList()

Xóa bỏ toàn bộ danh sách tập lệnh điều khiển của một thiết bị. onCreateContextMenu() function:

DeviceCommandActivity::onCreateContextMenu

Set context_menu_command to MenuInflater

Hình 4-47: Biểu đồ hoạt động hàm onCreateContextMenu()

Cũng giống nhƣ các hàm hỗ trợ việc thực hiện “long click” của ngƣời dùng trong các Activity khác, DeviceCommand cũng có tập lệnh tƣơng ứng.

onContextItemSelected() function:

Hàm này luôn đi kèm với hàm onCreateContextMenu() trong các Activity, thực thi các lựa chọn của ngƣời sử dụng.

DeviceCommandActivity::onContextItemSelected (adsbygoogle = window.adsbygoogle || []).push({});

Get Menu item ID

Get Command Name with ID

Get Command Name with ID

call removeCommandName() fucntion call updateCommandContent() function Yes Yes

Hình 4-48: Biểu đồ hoạt động hàm onContextItemSelected()

getCommandOrContent() funtion:

DeviceCommandActivity::getCommandOrContent

Validate String Input

Split string input

Return Command or Content

Hình 4-49: Biểu đồ hoạt động hàm getCommandOrContent

Khi có yêu cầu lấy tên của lệnh điều khiển hay nội dung của lệnh điều khiển, hàm này sẽ đƣợc sử dụng.

IsExistCommand() funtion:

Hàm thực hiện việc kiểm tra sự tồn tại của một lệnh điều khiển đã có trong chƣơng trình hay chƣa.

DeviceCommandActivity::isExistCommand

Init first item in the list Command

Get next Command

Action return TRUE return FALSE Yes Yes No No

Hình 4-50: Biểu đồ hoạt động hàm isExistCommand()

inputCommandInfo() funciton:

DeviceCommandActivity::inputCommandInfo

Init a dialog to intput parameter

Show a dialog to input

Handle event click button

Hình 4-51: Biểu đồ hoạt động hàm inputCommand()

Hàm này đƣợc sử dụng khi yêu cầu tạo một lệnh điều khiển cho thiết bị. onCreateDialog() function:

Hình 4-52: Biểu đồ hoạt động hàm onCreateDialog()

Khi chƣơng trình các loại yêu cầu nhƣ nhập liệu, thông báo, mô tả trạng thái thì hàm này đƣợc sử dụng, và hiện thị các Dialog tƣơng ƣớng.

sendCommandControl() function:

DeviceCommandActivity::sendCommandControl (adsbygoogle = window.adsbygoogle || []).push({});

Show dialog remind sent command

Sent Command

Hình 4-53: Biểu đồ hoạt động hàm sendCommandControl

Thực hiện việc xác thực yêu cầu gửi lệnh điều khiển từ chƣơng trình tới thiết bị. sendSMS() function:

Hàm thực hiện việc gửi SMS từ chƣơng trình tới thiết bị, sử dụng dịch vụ của hệ điều hành.

DeviceCommandActivity::sendSMS

Get broadcast sent sms

Get broadcast delivered sms

register receiver with intent filter SENT

register receiver with intent filter DELIVERED

Create SMSManager

Sent a sms by using SMSManager

Hình 4-54: Biểu đồ hoạt động hàm sendSMS() của DeviceCommandActivity class

4.3.3.6. Device Content 4.3.3.6.1. Biểu đồ class Device Content Activity -strPhoneNumber -strDescription -listSMSContent -listSMSDate -simpleAdapter -listView -interntFilter -intentReceiver #onCreate() -getListValues() -loadSMSContentList() -loadSMSDateList() -updateData() DeviceContentActivity

4.3.3.6.2. Các màn hình chính

Hình 4-56: Giao diện quản lý nội dung các message của thiết bị (khi chưa có dữ liệu)

4.3.3.6.3. Biểu đồ hoạt động của các function chính

getListValues() function:

DeviceContentActivity::getListValues

Init a list map string

Put all map item to the list Create map with each item in mMenuText and mMenuSummary

return the List

Hình 4-57: Biểu đồ hoạt động hàm getListValues() của DeviceContentActivity class

Một phần của tài liệu Quản lý, giám sát và điều khiển thiết bị bằng phần mềm trên Android thông qua mạng điện thoại di động (Trang 52)