Phát hiện khuôn mặt sử dụng framework API của Android

Một phần của tài liệu hệ điều hành android và thực thi ứng dụng phát hiện khuôn mặt trên android (Trang 44 - 49)

2.2.1.Gói android.graphics

Gói này cung cấp các công cụ đồ họa cấp thấp như canvas, các bộ lọc màu sắc, điểm, và hình chữ nhật, cho phép ta xử lý và vẽ ra màn hình trực tiếp.

Trong gói này có các lớp con như:

Bitmap.

BitmapFactory– tạo các đối tượng Bitmap từ nhiều nguồn khác nhau, bao

gồm các tập tin, các dòng (stream), và các mảng byte. Trong lớp này có lớp con

BitmapFactory.Options.

BitmapRegionDecoder– được sử dụng để giải mã vùng hình chữ nhật từ một

hình ảnh.

BitmapShader– được sử dụng để vẽ ảnh bitmap như một kiến trúc (texture).

Camera một camera có thể được sử dụng để tính toán biến đổi 3D và tạo ra một ma trận có thể được áp dụng, ví dụ như trên Canvas.

Canvas- lớp Canvas giữ yêu cầu vẽ.

Color- lớp color xác định các phương thức cho việc tạo và chuyển đổi số

nguyên về màu sắc.

ImageFormat- cung cấp các định dạng màu như JPEG (định dạng được mã hóa), NV16 (định dạng YCbCr được sử dụng cho video), NV21 (định dạng YCrCb được sử dụng cho ảnh, sử dụng định dạng mã hóa NV21), RGB-565(định dạng RGB

được sử dụng cho ảnh mã hóa như RGB-565), UNKNOWN( giá trị không đổi là 0),

YUY2 (định dạng YCbCr được sử dụng cho ảnh, sử dụng định dạng mã hóa YUY2), và cuối cùng là định dạng YV12(định dạng YUV android: định dạng này được tiếp xúc với bộ giải mã phần mềm và ứng dụng).

Matrix- lớp Matrix giữ một ma trận cỡ 3x3 cho việc chuyển đổi tọa độ.

Paint-lớp Paint nắm giữ thông tin về màu sắc về việc làm thế nào để vẽ hình,

văn bản và các ảnh bitmap.

PixelFormat-bao gồm các định dạng A_8, JPEG, LA_88, L_8, RGB-322,

RGB-565,….

Rect-có chức năng nắm giữ tọa độ 4 số nguyên cho hình chữ nhật. và còn nhiều các lớp và các hàm con khác.

Trong ứng dụng phát hiện khuôn mặt ta sẽ sử dụng một số lớp trong gói android.graphics bằng cách viết lệnh trong mã nguồn Java:

import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PoinF; 2.2.2.Gói android.app

Gói này chứa các lớp cấp cao đóng gói mô hình ứng dụng android.Một ứng dụng Android được xác định bằng cách sử dụng một hoặc nhiều hơn 4 thành phần ứng dụng lõi của Android. Trong gói này có hai thành phần ứng dụng được định nghĩa là: hoạt động (Activity) và dịch vụ (Service). Trong gói android.content có hai thành phần khác là BroadcastReceiver và Contentprovider. Gói android.app cung cấp một số lớp với các chức năng nhất định. Dưới đây là một số lớp:

ActionBar- đây là giao diện công cộng cho các ActionBar. Các hoạt động

của ActionBar như là một thay thế cho các thanh tiêu đề trong các Activity. Nó cung cấp cơ sở cho việc tạo ra các hành động cũng như các phương thức điều hướng trên một ứng dụng.

Activity- một hoạt động là đơn lẻ, những gì người dùng có thể làm được tập trung. Hầu như tất cả các hoạt động đều tương tác với người sử dụng, vì vậy lớp Activity sẽ tạo ra một cửa sổ mà có thể đặt giao diện người dùng với

setContenView (View). Trong khi các hoạt động thường được trình bày cho người sử dụng như là cửa sổ toàn màn hình, chúng cũng có thể được trình bày theo những cách khác như : cửa sổ nổi hoặc nhúng bên trong một hoạt động (sử dụng ActivityGroup).

AcivityGroup- là một màn hình có chứa và chạy nhiều các hoạt động nhúng. (adsbygoogle = window.adsbygoogle || []).push({});

ActivityManager- Tương tác với các hoạt động chạy trong hệ thống.

ActivityManager.MemoryInfo- Ta có thể có được thông tin về bộ nhớ sẵn có.

ActivityManager.ProcessErrorSateInfo- thông tin có thể lấy được về bất kỳ quá trình nào có lỗi xảy ra.

ActivityManager.RecentTaskInfo- thông có thể lấy được về nhiệm vụ mà

người dùng gần đây nhất bắt đầu hoặc truy cập.

ActivityManager.RunningAppProcessInfo- thông tin có thể lấy được về quá trình chạy chương trình.

ActivityManager.RunningServiceInfo- thông tin có thể lấy được về một dịch vụ cụ thể mà hiện đang chạy trong hệ thống.

ActivityManager.RunningTaskInfo-thông tin có thể lấy được về một nhiệm

vụ cụ thể mà hiện tại đang chạy trong hệ thống.

AlarmManager- Lớp này cung cấp truy cập đến các dịch vụ báo động hệ thống.

AlertDialog- đây là một lớp con của hộp thoại (Dialog) có thể hiển thị một, hai hoặc ba nút (button).

Application-đây là lớp cơ sở cho những ai cần phải duy trì trạng thái ứng

dụng toàn cầu.

FragmentTransaction- giao diện để tương tác với các đối tượng Fragment bên trong một Activity.

Instrumentation.ActivityResult- mô tả kết quả thực thi của một Activity để trả về cho activity ban đầu.

LauncherActivity-hiển thị một danh sách tất cả các hoạt động có thể được

thực hiện cho một mục đích nhất định.

LauncherActivity.IconResizer- tiện ích để thay đổi kích thước các biểu tượng (icon) để phù hợp với kích thước biểu tượng mặc định.

ListActivity- một Activity có thể hiển thị một danh sách các mục bằng cách liên kết với một nguồn dữ liệu như một một mảng và đưa ra xử lý sự kiện khi người dùng chọn một mục.

Và còn có một số lớp khác như NativeActivity, Notification,…Trong ứng dụng phát hiện khuôn mặt ta sử dụng lớp Activity bằng cách viết trong mã nguồn Java :

import android.app.Activity;

2.2.3.Gói android.content

Chứa các lớp cho việc truy cập và xuất bản dữ liệu trên thiết bị. Nó bao gồm ba loại chính của APIs: Thứ nhất là chia sẻ nội dung: đối với nội dung chia sẻ (sharing content) giữa các thành phần ứng dụng thì các lớp quan trọng nhất là:

ContentProviderContentResolver cho việc quản lý và xuất bản dữ liệu kết hợp với ứng dụng.

Intent và IntentFilter, để cung cấp các tin nhắn cấu trúc giữa các thành phần ứng dụng khác nhau cho phép các thành phần khởi tạo các thành phần khác và trả về kết quả.

Thứ hai là quản lý gói (android.content.pm) : Để truy cập thông tin về một gói Android (.apk), bao gồm thông tin về các hoạt động, quyền (permission), dịch vụ, giao diện, bộ cung cấp (provider). Các lớp quan trọng nhất để truy cập thông tin này là PackageManager.

Thứ ba là quản lý tài nguyên (android.content.res): Để lấy dữ liệu tài nguyên kết hợp với một ứng dụng, chẳng hạn như chuỗi, drawables, truyền thông và chi tiết về cấu hình thiết bị. Các lớp quan trọng nhất để truy cập dữ liệu này là Resources- lớp này để truy cập tài nguyên của ứng dụng.

Hệ thống tài nguyên Android theo dõi tất cả assets phi mã (non-code) kết hợp với một ứng dụng. Assets là một thư mục trong Android project. Ta có thể có được thể hiện của Resources liên quan đến ứng dụng với getResources().

Các công cụ Android SDK biên dịch các tài nguyên ứng dụng vào các ứng dụng nhị phân ở thời gian xây dựng. Để sử dụng một resource thì cần phải cài đặt một cách chính xác trong cây mã nguồn (nằm bên trong thư mục res của project) và xây dựng các ứng dụng. Như một phần của quá trình xây dựng, các công cụ SDK tạo ra các biểu tượng cho mỗi tài nguyên mà có thể được sử dụng trong mã ứng dụng để truy cập vào tài nguyên.

Sử dụng tài nguyên ứng dụng giúp cho việc cập nhật các đặc điểm khác nhau của các ứng dụng mà không cần thay đổi mã, và bằng cách cung cấp bộ tài nguyên thay thế, cho phép tối ưu hóa ứng dụng đối với một loạt các cấu hình thiết bị (chẳng hạn như cho các ngôn ngữ khác nhau và kích cỡ màn hình). Đây là một khía cạnh quan trọng để phát triển ứng dụng Android được tương thích trên các loại thiết bị khác nhau. (adsbygoogle = window.adsbygoogle || []).push({});

Trong gói android.content có chứa một số lớp con trong đó có lớp context – đây là một lớp trừu tượng trong đó sự thực thi được cung cấp bởi hệ thống Android. Nó cho phép truy cập vào tài nguyên ứng dụng cụ thể và các lớp, …

Trong ứng dụng phát hiện khuôn mặt ta sử dụng lớp Context bằng cách viết trong mã nguồn Java: import android.content.Context;

2.2.4.Gói android.media

Gói này cung cấp các lớp quản lý các giao diện truyền thông khác nhau trong audio và video.Các giao diện lập trình ứng dụng viết tắt là API (Appication Programming Interface) Media trong một số trường hợp để chơi (play) và ghi lại (record) các tập tin media – bao gồm âm thanh (ví dụ như chơi nhạc MP3 hoặc các file nhạc khác, nhạc chuông, hiệu ứng âm thanh trò chơi) và video (ví dụ như bật một đoạn video xem trực tiếp qua web).

Các lớp đặc biệt khác trong gói cung cấp khả năng phát hiện khuôn mặt người trong ảnh Bitmap (FaceDetector), điều khiển âm thanh định tuyến (với điện thoại hoặc tai nghe) và điều khiển cảnh báo như nhạc chuông và tiếng rung của điện thoại ( lớp AudioManager). Trong ứng dụng ta sử dụng các lớp trong gói này bằng cách viết trong mã nguồn Java:

import android.media.FaceDetector; import android.media.FaceDetector.Face;

Các lớp FaceDetector và FaceDetector.Face sẽ trình bày ở phần sau

Một phần của tài liệu hệ điều hành android và thực thi ứng dụng phát hiện khuôn mặt trên android (Trang 44 - 49)