Lập trình cho ứng dụng điều khiển

Một phần của tài liệu Nghiên cứu giải pháp xây dựng mô hình phòng học thông minh trong trường đại học (Trang 69 - 85)

a) Giới thiệu Android Studio

Android Studio là môi trường phát triển tích hợp (IDE) chính thức dành cho phát triển nền tảng Android, ra mắt vào năm 2013 tại hội nghị Google I/O. Android Studio được phát hành miễn phí. Dựa trên phần mềm IntelliJ IDEA của JetBrains, Android Studio được thiết kế đặc biệt để phát triển ứng dụng Android. Nó hỗ trợ các hệ điều hành Windows, Mac OS X và Linux, và là IDE chính thức của Google để phát triển ứng dụng Android gốc để thay thế cho Android Development Tools (ADT) dựa trên Eclipse.

58 Ngoài các khả năng đáng mong đợi từ IntelliJ, Android Studio còn cung cấp:

- Hệ thống Gradle-based linh hoạt

- Xây dựng các biến thể và tạo nhiều tệp APK

- Code các mẫu template để hỗ trợ các tính năng app thông thường - Chỉnh sửa bố cục đa dạng với khả năng kéo và thả theme

- Công cụ lint giúp nắm bắt hiệu suất, khả năng sử dụng, phiên bản tương thích và các vấn đề khác.

- ProGuard và ứng dụng ký app-signing

- Hỗ trợ tích hợp trên Google Cloud Platform, cho phép dễ dàng tích hợp Google Cloud Messaging và App Engine.

Project và cấu trúc tệp:

Theo mặc định, Android Studio hiển thị các tệp project trong chế độ xem project trên Android. Chế độ xem này cho phép xem cấu trúc project theo lát cắt, cung cấp truy cập nhanh vào các tệp source chính của các project trên Android và giúp làm việc với hệ thống Gradle-based.

Hình 4.9 Chế độ xem dự án Android

- Hiển thị các thư mục gốc quan trọng nhất ở cấp cao nhất của phân cấp module.

- Nhóm các build file cho tất cả các module vào một thư mục chung. - Nhóm tất cả các file kê khai cho từng module vào một thư mục chung. - Hiển thị các tệp tài nguyên từ tất cả các tập nguồn nguồn Gradle.

- Nhóm các tệp tài nguyên cho các khu vực và kiểu màn hình khác nhau trong một nhóm duy nhất cho mỗi loại tài nguyên.

Chế độ xem project trong Android hiển thị tất cả các build files ở cấp cao nhất của hệ thống phân cấp dự án theo Gradle Scripts. Mỗi module dự án xuất hiện dưới dạng một thư mục ở cấp cao nhất của hệ thống phân cấp dự án. Một project Android bao gồm các file sau:

59

Bảng 4.8 Bảng mô tả các thành phần của 1 project Android Studio

Thư mục Mô tả

AndroidManifest.xml Đây là file manifest mô tả các đặc điểm cơ bản của ứng dụng

và xác định từng thành phần của nó.

java Thư mục này có chứa các file nguồn java cho dự án. Theo mặc định, nó bao gồm một tập tin nguồn MainActivity.java một lớp hoạt động (activity) chạy khi ứng

dụng được khởi động.

res/drawable Các phiên bản Android trước đây sử dụng thư mục này để

chứa ảnh, các phiên bản hiện tại sử dụng thư mục mipmap

thay thế làm nơi chứa ảnh. Thư mục này gần như không còn

sử dụng.

res/layout Thư mục này chứa các file định nghĩa giao diện người dùng.

res/menu Thư mục này chứa các file xml, định nghĩa các menu sẽ hiển

thị trên Action Bar. res/mipmap Chứa các ảnh 'mipmap'.

res/values Đây là một thư mục cho các tập tin XML khác nhau có chứa

một tập hợp các nguồn, chẳng hạn như các chuỗi

(String) và

các định nghĩa màu sắc.

Hệ thống Android Bulid

Hệ thống Android Build là bộ công cụ sử dụng để xây dựng, thử nghiệm, chạy và đóng gói ứng dụng. Hệ thống xây dựng này thay thế hệ thống Ant được sử dụng với Eclipse ADT. Nó có thể chạy như một công cụ tích hợp từ menu Android Studio và độc lập với dòng lệnh. Có thể sử dụng các tính năng của build system:

- Tùy chỉnh, cấu hình và mở rộng quá trình thiết kế, kiến trúc.

- Tạo nhiều APK cho ứng dụng của bạn với các tính năng khác nhau bằng cách sử dụng cùng một dự án và module.

60 Tính linh hoạt của hệ thống Android build cho phép bạn đạt được tất cả các yếu tố trên mà không cần sửa đổi các tệp nguồn cốt lõi của ứng dụng.

Gỡ lỗi và hiệu suất

Android Studio cung cấp một số cải tiến hỗ trợ việc gỡ lỗi và cải thiện hiệu suất code, bao gồm các công cụ được cải tiến như công cụ quản lý thiết bị ảo, inline debug và phân tích hiệu suất.

Trình quản lý thiết bị ảo của Android (AVD)

AVD Manager đã cập nhật các link lên màn hình để giúp chọn các cấu hình thiết bị phổ biến nhất, lựa chọn kích thước màn hình và độ phân giải ở chế độ xem trước. Trình quản lý AVD có liên kết với bộ mô phỏng cho các thiết bị Nexus 6 và Nexus 9. AVD cũng hỗ trợ tạo giao diện thiết bị Android tùy chỉnh dựa trên các đặc tính mô phỏng cụ thể và gán các giao diện đó cho cấu hình phần cứng.

Android Studio cài đặt Intel® x86 Hardware Accelerated Execution Manager (HAXM) và tạo bộ mô phỏng mặc định để tạo nhanh ứng dụng mẫu.

Inline debugging

Sử dụng inline debugging để tăng cường code trong chế độ xem debugging với xác thực các tham chiếu, biểu thức và các giá trị biến. Thông tin Inline debugging bao gồm:

- Giá trị biến inline

- Tham chiếu các đối tượng (các đối tượng này là tham chiếu của một đối tượng đã chọn)

- Phương thức trả về giá trị - Lambda và biểu thức toán tử - Các giá trị tooltip

Bộ nhớ và màn hình CPU

Android Studio hỗ trợ một chế độ xem bộ nhớ và màn hình CPU để có thể dễ dàng theo dõi hiệu suất và mức sử dụng bộ nhớ của ứng dụng. Từ đó, có thể theo dõi mức sử dụng CPU, tìm đối tượng deallocated, xác định vị trí lỗi bộ nhớ, theo dõi dung lượng bộ nhớ đang được thiết bị kết nối sử dụng. Với ứng dụng chạy trên thiết bị hoặc trình mô phỏng, nhấp vào tab Android ở góc dưới bên trái của cửa sổ runtime để khởi động cửa sổ Android runtime. Click tab Memory hoặc CPU.

61

b) Giới thiệu SQLite

SQLite là 1 hệ quản trị cơ sở dữ liệu thu nhỏ, không có server, thao tác trên file và có thể sử dụng trong hầu hết các hệ điều hành. SQLite được Richard Hipp viết dưới dạng thư viện bằng ngôn ngữ lập trình C. Phiên bản mới nhất là 3.8.6 (15/8/2014).

Ưu và nhược điểm của hệ quản trị cơ sở dữ liệu SQLite:

Ưu điểm

- Tin cậy: các transaction trong cơ sở dữ liệu được thực hiện trọn vẹn, không gây lỗi khi xảy ra sự cố phần cứng.

- Tuân theo chuẩn SQL92 (chỉ có một vài đặc điểm không hỗ trợ). - Không cần cài đặt, cấu hình phức tạp.

- Kích thước chương trình gọn nhẹ (khoảng 300KB).

- Thực hiện các thao tác đơn giản nhanh hơn các hệ thống cơ sở dữ liệu khách/chủ khác.

- Không cần phần mềm phụ trợ.

- Phần mềm tự do với mã nguồn mở, được chú thích rõ ràng.

- Trong Android, không cần cài đặt nhiều, chỉ cần cung cấp các hàm để thao tác và chương trình sẽ quản lý phần còn lại.

Nhược điểm:

- Không hỗ trợ một số tính năng của SQL92

Bảng 4.9 Bảng các tính năng không hỗ trợ của SQLite

Tính năng Diễn giải RIGHT OUTER

JOIN

Chỉ dùng được đối với LEFT OUTER JOIN FULL OUTER JOIN Chỉ dùng được đối với LEFT OUTER JOIN

ALTER TABLE Chỉ hỗ trợ các biến thể về RENAME TABLE và ADD COLUMN của lệnh ALTER TABLE. Không hỗ trợ về DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT

TRIGGER SUPPORT

Chỉ hỗ trợ tính năng FOR EACH ROW nhưng hỗ trợ tính năng FOR EACH STATEMENT

VIEWs VIEWs trong SQLite có dạng read-only, không thể thực thi các tính năng như DELETE, INSERT hoặc UPDATE trong view

- Cơ sở dữ liệu do SQLite tạo ra là private, tức là chỉ sử dụng cho bản thân ứng dụng.

- Vài tiến trình hoặc luồng có thể truy cập tới cùng một cơ sở dữ liệu. Việc đọc dữ liệu có thể chạy song song, còn việc ghi dữ liệu thì không được phép chạy đồng thời.

62

SQLite phù hợp trong các tình huống:

- Ứng dụng sử dụng dạng flat file để lưu trữ dữ liệu như: từ điển, các ứng dụng nhỏ, lưu cấu hình ứng dụng… Nó mạnh mẽ hơn nhiều kỹ thuật lưu trữ file thông thường nhờ kỹ thuật hiện đại, dễ dùng và tin cậy hơn.

- Sử dụng trong các thiết bị nhúng: smart phone, PDA và các thiết bị di động. - Các website có khoảng 100000 lượt truy cập/ngày (về mặt lý thuyết SQLite

có thể đáp ứng cao hơn nhiều).

- Sử dụng làm cơ sở dữ liệu tạm thời để lưu trữ dữ liệu lấy về từ các cơ sở dữ liệu trên SQL server, Oracle…

- Làm cơ sở dữ liệu demo cho các ứng dụng lớn, dùng để làm mô hình khái niệm cho ứng dụng.

- Sử dụng trong giảng dạy cho những người mới làm quen với ngôn ngữ truy vấn SQL.

Các lệnh tương tác trong SQLite

Bảng 4.10 Bảng các lệnh tương tác trong SQLite

Lệnh Diễn giải

CREATE Tạo mới table view, hoặc các đối tượng khác trong cơ sở dữ liệu ALTER Hiệu chỉnh các đối tượng đã tồn tại trong cơ sở dữ liệu (như table) DROP Xóa table, view hoặc các đối tượng khác đã tồn tại trong cơ sở

dữ liệu

INSERT Thêm mới record vào table UPDATE Hiệu chỉnh dữ liệu của record DELETE Xóa records

SELECT Lấy dữ liệu từ một hoặc nhiều table

c) Giới thiệu nền tảng nhận dạng giọng nói trên Android

Nhận dạng giọng nói (Speech Recognition) là công nghệ cho phép máy tính nhận dạng và chuyển lời nói thành văn bản. Các hệ thống sử dụng nhận dạng giọng nói hiện nay đã nổi tiếng và không phải là thứ gì đó xa lạ đối với người dùng. Có rất nhiều giải pháp nổi tiếng cho vấn đề này: Google Now, Siri, Amazon Alexa, Cortana… Do đó, không có gì ngạc nhiên khi có rất nhiều API (Application Programming Interface) mã nguồn mở đã sẵn sàng cho các nhà phát triển sử dụng. Tuy nhiên, không có bất kỳ giải pháp nào phù hợp trong mọi trường hợp. Trong phần giới thiệu này, tôi sẽ xem xét các công nghệ nhận dạng giọng nói hỗ trợ nền tảng Android, đồng thời đề cập đến hỗ trợ đa nền tảng của API nếu có. Tất cả các hệ thống nhận dạng giọng nói có thể được chia thành 3 nhóm: các giải pháp sẵn sàng được nhúng, các giải pháp dựa trên kiến trúc máy khách-máy chủ và các giải pháp đồng thời sẵn sàng được nhúng và có thể được sử dụng để phát triển kiến trúc máy khách-máy chủ riêng [19].

63

Bảng 4.11 Các API nhận dạng giọng nói phổ biến hiện nay [19]

Tên API Bộ ngôn

ngữ Khảnăng ngoại tuyến Đa nền tảng Có thể tùy chỉnh Trả phí Android SpeeechRecognizer

20 Không/Có Không + Không

Google Cloud Speech 80+ Không Có ++ Có Microsoft Bing Speech 26 Không Có ++ Có

CMU Sphinx Chỉ tiếng Anh

Có Có +++ Không

Về cơ bản, mỗi API đều có những ưu điểm và nhược điểm riêng. Dưới đây, tôi sẽ đưa ra một vài ưu nhược điểm chính của các API này và phân tích lí do lựa chọn loại API đó trong dự án của mình.

Bảng 4.12 Ưu nhược điểm của các loại API nhận dạng giọng nói

Tên API Ưu điểm Nhược điểm

Android

SpeeechRecognizer

-Có thể hoạt động ngoại tuyến

-Đơn giản, nhiều tài liệu hướng dẫn

-Không cần trả phí

-Chỉ hoạt động trong các phiên ngắn (~1 phút)

-Chỉ hỗ trợ nền tảng Android -Không hỗ trợ tiếng Việt Google Cloud Speech -Hỗ trợ đa dạng ngôn ngữ (có tiếng Việt) -Hỗ trợ đa nền tảng -Có trả phí -Sử dụng tương đối phức tạp -Không hoạt động ngoại tuyến Microsoft Bing

Speech

-Có thể tách giọng nói của nhiều người

-Hỗ trợ đa nền tảng

-Có trả phí

-Không hoạt động ngoại tuyến CMU Sphinx -Không cần trả phí

-Hỗ trợ đa nền tảng

-Chỉ hỗ trợ tiếng Anh -Không phổ biến

Trong khuôn khổ đề tài này, tôi sử dụng hệ thống nhận dạng giọng nói Android SpeeechRecognizer vì tính tiện lợi của nó. Android SpeeechRecognizer đã được tích hợp sẵn vào Android bắt đầu với API phiên bản 2.2 (Froyo) và hoạt động trực tuyến theo mặc định, nhưng nó có thể hoạt động ngoại tuyến (công việc ngoại tuyến có thể được ưu tiên). Người dùng có thể cập nhật các tính năng mới trên thiết bị khi Google tung ra bản cập nhật. Vì vậy chất lượng nhận dạng sẽ được tăng lên

64 theo thời gian. Ưu điểm đáng kể của API này là tính đơn giản và không cần trả phí. Các nhà phát triển có thể dễ dàng và nhanh chóng sử dụng nó mà không phát sinh bất kì khoản phí nào cả.

Đồng thời nó cũng có những nhược điểm. Trước hết, hệ thống chỉ hoạt động theo các phiên ngắn (~ 1 phút) đủ để nhận dạng từ riêng biệt, hoặc các câu ngắn. Ngoài ra, Android SpeeechRecognizer chỉ hỗ trợ nền tảng Android, nên nó không phù hợp với các dự án có ứng dụng trên một số nền tảng di động hoặc trên nền tảng web hoặc máy tính để bàn.

Nhìn chung, API SpeechRecognizer phù hợp và có thể được thực hiện nếu dự án chỉ hỗ trợ nền tảng Android và không có yêu cầu quá cụ thể cần tùy chỉnh linh hoạt.

Bên cạnh hệ thống nhận dạng giọng nói Android SpeeechRecognizer, các giải pháp máy chủ-máy khách được sử dụng rộng rãi nhất như Google Cloud Speech, Microsoft Bing Speech... Nhóm giải pháp này yêu cầu kết nối ổn định và không thể hoạt động ngoại tuyến. Các giải pháp này hỗ trợ một loạt các ngôn ngữ có sẵn và có chất lượng nhận dạng cao hơn, có xu hướng không ngừng được cải thiện. Cũng có thể đặt một loạt các từ đặc biệt mà người dùng mong đợi sẽ được phát âm. Ví dụ: nếu hệ thống mong đợi lời nói về thời tiết, lập trình viên có thể đặt một loạt các từ cụ thể cho chủ đề này, điều này cải thiện đáng kể tốc độ và chất lượng nhận dạng. Nhưng các loại API này có giới hạn sử dụng và có thể phải trả phí.

d) Giao diện ứng dụng

Giao diện ứng dụng điều khiển được thiết kế đơn giản, trực quan, bao gồm nhiều màn hình khác nhau đáp ứng đủ các chức năng chính của hệ thống như cho phép người dùng kết nối Bluetooth, đăng nhập bằng vân tay, điều khiển các thiết bị bằng nút nhấn hoặc bằng giọng nói, chỉnh sửa thông tin…

Chức năng cụ thể của từng màn hình và hướng dẫn sử dụng các giao diện của ứng dụng được trình bày chi tiết trong phần 4.3 của chương này.

65

Hình 4.12 Giao diện kết nối bluetooth

Hình 4.13 Hộp thoại xác nhận cho phép đăng nhập bằng vân tay

66

Hình 4.15 Giao diện lựa chọn các tính năng nâng cao

Hình 4.16 Hộp thoại chỉnh sửa thông tin người dùng

Hình 4.17 Hộp thoại xem thông tin app

e) Lưu đồ giải thuật chương trình chính cho ứng dụng điều khiển

Lưu đồ giải thuật chương trình chính cho ứng dụng điều khiển trên điện thoại thông minh như sau:

67

Hình 4.18 Lưu đồ giải thuật chương trình chính cho ứng dụng điều khiển

Chương trình này hoạt động như sau:

- Người dùng thực hiện kết nối ứng dụng với thiết bị bluetooth thích hợp. - Nếu việc kết nối bluetooth thành công, người dùng thực hiện đăng nhập

bằng vân tay để sử dụng các tính năng chính.

- Nếu đăng nhập thành công, ứng dụng hiển thị giao diện điều khiển chính bao gồm thông tin người dùng (tên giảng viên, bộ môn) và các nút ấn chức năng để điều khiển các thiết bị trong lớp học cũng như các tính năng bổ sung khác như điều khiển bằng giọng nói, chỉnh sửa thông tin người dùng, xem thông tin ứng dụng, đăng xuất.

- Người dùng thực hiện các lệnh điều khiển trên giao diện, các tín hiệu này được chuyển đến vi điều khiển để xử lý thông qua chuẩn bluetooth.

Một phần của tài liệu Nghiên cứu giải pháp xây dựng mô hình phòng học thông minh trong trường đại học (Trang 69 - 85)

Tải bản đầy đủ (PDF)

(98 trang)