Bluetooth DeviceSelection UI

Một phần của tài liệu (Luận văn thạc sĩ) Nghiên cứu chuẩn IEEE 802.15.1 và ứng dụng xây dựng giao diện kết nối giữa các thiết bị hỗ trợ thu thập thông tin sức khỏe cá nhân (Trang 89 - 92)

Khi có nhiều thiết bị Bluetooth phù hợp tìm kiếm được xung quanh, ứng dụng cần phải hiển thị chúng tới người dùng và để người dùng chọn thiết bị thích hợp để thực hiện kết nối. Symbian cung cấp một chức năng cho phép thực hiện tìm kiếm các

77

thiết bị Bluetooth và hiển thị chúng cho người dùng. Việc này được thực hiện thông qua lớp RNotifier. Lớp này được định nghĩa trong file header “e32std.h”.

Lớp TBTDeviceSelectionParams cho phép một ứng dụng truyền vào các tham số khởi tạo cho quá trình chọn lựa

class TBTDeviceSelectionParams { public:

IMPORT_C TBTDeviceSelectionParams();

IMPORT_C void SetUUID(const TUUID& aUUID); IMPORT_C void SetDeviceClass(

TBTDeviceClass aClass); IMPORT_C const TUUID& UUID();

IMPORT_C TBTDeviceClass DeviceClass(); IMPORT_C TBool IsValidDeviceClass(); IMPORT_C TBool IsValidUUID(); ...

};

Bằng cách dùng hàm SetDeviceClass() , ứng dụng có thể giới hạn số lượng

những thiết bị cần tìm kiếm.

Ứng dụng cũng có thể xác định các UUID của dịch vụ mà nó cần tìm. Điều này sẽ làm cho quá trình tìm kiếm chỉ tìm kiếm những thiết bị có hỗ trợ dịch vụ mà ứng dụng yêu cầu. Việc này thực hiện thông qua hàm SetUUID(). Để tìm kiếm tất cả các thiết bị, ứng dụng nên để đối tượng TBTDeviceSelectionParams ở giá trị mặc định.

Sau khi người dùng chọn thiết bị muốn giao tiếp, thông tin về thiết bị mà người dùng lựa chọn sẽ được trả về cho ứng dụng thông qua đối tượng của lớp

TBTDeviceResponseParams. Lớp này được định nghĩa trong file header “btextnotifiers.h” . Định nghĩa của nó như sau:

class TBTDeviceResponseParams { public:

78

IMPORT_C TBTDeviceResponseParams(); IMPORT_C void SetDeviceAddress( const TBTDevAddr& aBDAddr); IMPORT_C void SetDeviceName( const TDesC& aName);

IMPORT_C void SetDeviceClass( TBTDeviceClass aClass);

IMPORT_C const TBTDevAddr& BDAddr() const; IMPORT_C const TDesC& DeviceName() const; IMPORT_C TBTDeviceClass DeviceClass(); IMPORT_C TBool IsValidBDAddr() const; IMPORT_C TBool IsValidDeviceName() const; IMPORT_C TBool IsValidDeviceClass(); ...

};

Hàm IsValidxxxx() được dùng để bảo đảm rằng các thông tin liên quan đã được thiết lập trong lớp. Ví dụ, nếu hàm IsValidDBAddr() trả về giá trị true, ứng dụng biết được rằng địa chỉ của thiết bị Bluetooth đã được thiết lập trong lớp

TBTDeviceResponseParams. Nếu hàm này trả về giá trị false có nghĩa là chưa có dữ

liệu về địa chỉ thiết bị Bluetooth trong lớp này. Ứng dụng có thể nhận được địa chỉ thiết bị thông qua hàm BDAddr() và tên của thiết bị thông qua hàm DeviceName().

Symbian cung cấp một tập các gói dữ liệu đóng gói các lớp vừa trình bày bên trên:

TBTDeviceSelectionParamsPckg TBTDeviceResponseParamsPckg

Nói tóm lại, quy trình để thực hiện tìm kiếm thiết bị được mô tả như sau: // Kết nối vào server trước khi có thể sử dụng

RNotifier not;

User::LeaveIfError(not.Connect());

79

hiển thị cho người dùng not.StartNotifierAndGetResponse( status,

KDeviceSelectionNotifierUid, selectionFilter, aResponse

);

// Đợi người dùng chọn thiết bị cần giao tiếp User::WaitForRequest(status); if (status.Int() == KErrNone) { if (aResponse().IsValidDeviceName()) { success = ETrue; } else { iReporter.Error(_L("Failed to connect")); } } else

{ iReporter.Error(_L("No device selected"));

}

not.CancelNotifier(KDeviceSelectionNotifierUid); not.Close(); return success;

Một phần của tài liệu (Luận văn thạc sĩ) Nghiên cứu chuẩn IEEE 802.15.1 và ứng dụng xây dựng giao diện kết nối giữa các thiết bị hỗ trợ thu thập thông tin sức khỏe cá nhân (Trang 89 - 92)