Giải pháp thiết kế app game Ai là triệu phú trên nền tảng di động Android

MỤC LỤC

CÁC THÀNH PHẦN CƠ BẢN CỦA MỘT ỨNG DỤNG ANDROID

Với cách khởi động activity không tường minh, chúng ta cần phải biết một chút về Intent-filter.Intent-filter sẽ giúp một activity đăng ký với hệ thống mình có thể làm được thao tác gì, trong nhóm nào, với loại dữ liệu nào. Các phương thức này hoạt động như các giao tiếp chung đến nguồn dữ liệu bên dưới, chúng cho phép các ứng Android chia sẽ dữ liệu với nhau mà không phải tạo một giao tiếp riêng cho mỗi ứng dụng. URI là một chuỗi tùy ý, vì thế hầu hết các provider đều đưa ra thuộc tính CONTENT_URI.Content Provider thường đưa ra 2 hình thức URI, một là đựa tất cả các dữ liệu được yêu cầu trên cùng một dòng đơn lẻ, hoặc là thêm vào /<rowID> vào phía sau CONTENT_URI.

Phương thức update nhận URI của Content Provider đích, một đối tượng ContentValues chứa tập giá trị được ánh xạ đến các cột cần cập nhật, và một mệnh đề where để chỉ định dòng nào được cập nhật. Nên sử dụng các Content Providers native này bất cứ khi nào có thể, bởi vì khi sử dụng chúng sẽ bảo đảm cho ứng dụng được kết hợp với các ứng dụng native hoặc third-party khác một cách liên tục. Android Media Store cung cấp một kho lưu trữ các tập tin audio, video, và hình ảnh.Mỗi khi thêm một tập tin đa phương tiện nào vào Android filesystem, nó sẽ được thêm vào Media Store để cho các ứng dụng khác nhìn thấy nó.

THIẾT KẾ GIAO DIỆN CHO ỨNG DỤNG ANDROID 3.1 Một số lớp hỗ trợ thiết kế giao diện cho ứng dụng Android

Để định nghĩa lại giao diện cũng như các ứng xử của control mới tạo, cần phải ghi đè và thừa kế các điều khiển sự kiện (event handler) kết hợp với các hành vi muốn thay đổi. Compound control là các widget có thể tái sử dụng, nó chứa nhiều control được bố trí và có liên hệ với nhau, nó được tạo từ nhiều control cơ bản.Ví dụ như tạo nên một dropdown combo box bằng cách kết hợp một TextView và một Button mà khi được nhấn sẽ hiển thị một ListView. Lớp View cung cấp một đối tượng Canvas và một số phương thức vẽ cũng như các lớp Paint, để tạo một giao diện trực quan.Người thiết kế có thể định nghĩa lại các sự kiện người dùng như cảm ứng trên màn hình, nhấn phím để tạo nên sự tương tác.Trong những trường hợp mà không đòi hỏi việc vẽ lại cũng như đồ họa 3D thì lớp cơ sở View có giải pháp hiệu quả.

Nếu dùng layout resource thì sẽ tách riêng việc thiết kế giao diện và phần code xử lý, cung cấp một khả năng thay đổi linh hoạt giao diện mà không thay đổi code bên trong. Android cũng hỗ trợ menu ngữ cảnh, nó được gán vào bất kỳ View nào bên trong một Activity.Một menu ngữ cảnh được hiển thị khi người dùng nhấn nút D-pad, trackball, hoặc nhấn vào màn hình cảm ứng khoảng 3 giây.menu ngữ cảnh hỗ trợ submenu, checkbox, radio button, shortcut key, và icon. Expand Menu hiển thị một danh sách có thể cuộn được các menu item, và các menu item này không thể chứa các icon mà chỉ có thể chứa text, shortcut key và checkbox/.

• Submenu: mỗi submenu hiển thị bằng một cửa sổ, tên của submenu được hiển thị ở thanh header và mỗi Menu item được hiển thị với đầy đủ text, checkbox, shortcut key và không thể hiển thị icon cho các item. • Checkbox và Radio button group: Để thiết lập một menu item là checkbox sử dụng phương thức setCheckable, để thiết lập trạng thái của checkbox dùngsetChecked. Để tạo một radio button group, gán cùng ID nhóm cho mỗi item, sau đó gọi phương thức Menu.setGroupCheckable, truyền vào ID nhóm, và thiết lập giá trị cho các tham số khác là True.

Để tạo một menu, trong Activity override phương thức onCreateOptionsMenu, phương thức này được thực thiện ở lần đầu tiên khi menu được hiển thị. • ID, mỗi item có một ID duy nhất, bởi vì chúng được xử lý chung trong phương thức onOptionsItemSelected nên việc xác định item nào được chọn là phụ thuộc vào ID được chỉ định cho nó.

Hình 2.5. Hệ thống các view với các thông số layout được kết nối với mỗi view 3.4 Tạo các View:
Hình 2.5. Hệ thống các view với các thông số layout được kết nối với mỗi view 3.4 Tạo các View:

LƯU TRỮ DỮ LIỆU TRONG ANDROID 4.1 Giới thiệu SQLite Database

- Tính toàn vẹn: đảm bảo dữ liệu được chuyển đổi đầy đủ, không gây ra mất mát dữ liệu khi có lỗi phần cứng. - Trong Android, chúng ta 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. - SQLiteOpenHelper là 1 lớp ảo, giống như tên của nó SQLite Open Helper nó được các nhà phát triển tạo ra để giúp tạo các cơ sở dữ liệu dùng SQLite(vì SQLite không hỗ trợ các phương thức khởi tạo cơ sở dữ liệu).

- Mặc định thì SQLite trên Android không có cung cấp cho ta công cụ tạo và quản lí cơ sở dữ liệu nên ta phải tự tạo. Sau đó ta gọi hàm getReadableDatabase hoặc getWritableDatabase để mở nhằm tạo ra một thực thể có thể chỉ đọc hay là có khả năng ghi. CursorFactory: Đôi lúc thì chúng ta có thể extend lớp cursor để kế thừa một số phương thức và truy vấn,.

Khi csdl chưa có trên bộ nhớ thì mới được gọi, và nó chỉ được gọi lần đầu tiên mà ứng dụng chạy trên thiết bị. - SQLiteDatabase db: kiểu trả về là một cơ sở dữ liệu của Sqlite, ở đây là đối tượng chúng ta sẽ thao tác. Ngoài ra ta có thể thực thi cả những câu lệnh không truy vấn về kết quả như insert, delete, update, … khi dung execSQL.

Mỗi ContentValues có thể xem là một hàng dữ liệu, bao gồm các cặp id/value dùng để cập nhật, thêm vào trong bảng. Hàm này được gọi khi mà sô phiên bản trong constructor của class thay đổi, do đó, khi muốn cập nhật cơ sở dữ liệu, ta chỉ cần thay đổi số này.

MULTIMEDIA 5.1 Giới thiệu

Trong thực tế thì chỉ có OGG, WMA, và MP3 làm việc tốt trong bộ giả lập, nhưng WMA thì có dung lượng và tốc độ rất lớn nên ít được sử dụng. Vì vậy, để phát triển tốt các ứng dụng trên bộ giả lập ta nên sử dụng hai định dạng: OGG và MP3 (mono cho thoại và stereo cho âm nhạc) OGG sẽ làm việc tốt cho các video clip ngắn và âm thanh cho trò chơi. Media APIs được sử dụng để phát tập tin MP3, và các tập tin media khác như: nhạc chuông, hiệu ứng âm thanh trò chơi.

Về video: nó được sử dụng để phát một đoạn video xem trực tiếp từweb hoặc từ bộ lưu trữ cục bộ. Các lớp đặc biệt khác trong gói android.media cung cấp khả năng nhận dạng khuôn mặt người dùng trong file ảnh (FaceDetector), điều khiển âm thanh định tuyến. Các hình bầu dục sẽ đại diện cho các trạng thái của các hàm chức năng trong lớp MediaPlayer.

Có hai loại vòng cung, loại vòng cung với một mũi tên đại diện cho phương thức gọi đồng bộ, loại vòng cung với hai mũi tên đại diện cho phương thức gọi không đồng bộ. Idle Khi một đối tượng MediaPlayer được tạo mới hoặc sau khi gọi hàm reset() nó sẽ ở trạng thái Idle, đó là trạng thái rỗi. Intialized Sau khi gọi hàm setDataSource() để thiết lập dữ liệu, thiết bị sẽ chuyển sang trạng thái khởi tạo.

Nếu phương thức này không được gọi, các tập tin kết quả sẽ không chứa các rãnh âm thanh (audio track). Khi bạn hoàn thành làm việc với đối tượng MediaRecorder thì gọi hàm MediaRecorder.release() để giải phóng nguồn tài nguyên hệ thống ngay tức thì.

XÂY DỰNG GAME “AI LÀ TRIỆU PHÚ”

Trả về kích thước bộ đệm tối thểu, cần thiết để tạo thành công một đối tượng AudioRecord. Điều này cho ta biết tài nguyên phần cứng đã đảm bảo hỗ trợ việc ghi lại hay chưa. Gọi MediaRecorder.prepare(), nhằm làm cho thiết bị sẵn sàng để mã hóa dữ liệu.

Game mô phỏng theo GameShows Ai là triệu phú một trong những trò chơi truyền hình được yêu thích nhất trên VTV3. Khi chương trình được vừa được khởi động lên sẽ hiển thị giao diện chơi của chương trình. Người chơi có 3 sự trợ giúp sau có thể được sử dụng bất cứ lúc nào nếu họ không biết câu trả lời hoặc chưa chắc chắn với suy nghĩ của mình.

Gọi điện thoại cho người thân: Người chơi chọn người muốn liên lạc, sau đó nhấn chọn, hệ thống sẽ thông báo đáp án người trợ giúp đưa ra. Hỏi ý kiến khán giả: Khi chọn sự trợ giúp này, người chơi sẽ nhận được kết quả trợ giúp dưới dạng biểu đồ phần trăm số khán giả lựa chọn từng phương án. Biểu đồ tuần tự cho quá trình yêu cầu trợ giúp gọi điện thoại cho người thân.

Biểu đồ tuần tự cho quá trình yêu cầu trợ giúp hỏi ý kiến khán giả.

Hình 6.1  Sơ đồ usecase tổng quát của hệ thống
Hình 6.1 Sơ đồ usecase tổng quát của hệ thống