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ị).
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.
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.
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
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
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
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
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
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