Thứ Năm , Tháng Mười 18 2018
Lập trình android / VIDEO BÀI GIẢNG / Lập trình Android / Xác định cảm ứng và khả năng cảm biến trong Android

Xác định cảm ứng và khả năng cảm biến trong Android

Khung cảm biến Android cung cấp một số phương pháp mà làm cho nó dễ dàng cho bạn để xác định tại thời gian chạy mà cảm biến được trên một thiết bị. Các API cũng cung cấp phương pháp cho phép bạn xác định các khả năng của mỗi cảm biến, chẳng hạn như phạm vi của nó tối đa, độ phân giải của nó, và các yêu cầu sức mạnh của nó.

Để xác định các cảm biến được trên một thiết bị đầu tiên bạn cần phải nhận được một tham chiếu đến các dịch vụ cảm biến. Để làm điều này, bạn tạo một thể hiện của lớp SensorManager bằng cách gọi getSystemService() và trong lập luận SENSOR_SERVICE. Ví dụ như:

Tiếp theo, bạn có thể nhận được một danh sách của tất cả các cảm biến trên một thiết bị bằng cách gọi phương pháp getSensorList() và sử dụng hằng TYPE_ALL. Ví dụ như:

Nếu bạn muốn liệt kê tất cả các cảm biến của một loại nhất định, bạn có thể sử dụng một hằng số thay vì TYPE_ALL như TYPE_GYROSCOPE, TYPE_LINEAR_ACCELERATION, hoặc TYPE_GRAVITY.

Bạn cũng có thể xác định một loại hình cụ thể của cảm biến tồn tại trên một thiết bị bằng cách sử dụng các getDefaultSensor() và đi qua trong các hằng số loại cho một cảm biến cụ thể. Nếu một thiết bị có nhiều hơn một bộ cảm biến của một loại nhất định, một trong những bộ cảm biến phải được chỉ định là các cảm biến mặc định. Nếu một bộ cảm biến mặc định không tồn tại cho một loại nhất định của cảm biến, các cuộc gọi phương thức trả về null, có nghĩa là các thiết bị không có cái loại cảm biến. Ví dụ, đoạn code sau để kiểm tra xem có một từ trên một thiết bị:

Lưu ý: Android không đòi hỏi các nhà sản xuất thiết bị xây dựng bất kỳ loại hình cụ thể của các bộ cảm biến vào các thiết bị Android của họ, vì vậy các thiết bị có thể có một loạt các cấu hình cảm biến.

Ngoài danh sách các bộ cảm biến được trên một thiết bị, bạn có thể sử dụng các phương pháp công cộng của lớp cảm biến để xác định khả năng và thuộc tính của cảm biến cá nhân. Điều này rất hữu ích nếu bạn muốn ứng dụng của bạn để ứng xử khác nhau trên cơ sở đó các cảm biến hoặc các khả năng cảm biến có sẵn trên thiết bị. Ví dụ, bạn có thể sử dụng các phương pháp getMaximumRange() và getResolution() để có được độ phân giải của cảm biến và phạm vi tối đa đo. Bạn cũng có thể sử dụng các phương pháp getPower() để có được các yêu cầu sức mạnh của cảm biến.

Hai trong số các phương pháp nào là đặc biệt hữu ích nếu bạn muốn tối ưu hóa ứng dụng của bạn cho các cảm biến khác nhau của nhà sản xuất hoặc các phiên bản khác nhau của cảm biến. Ví dụ, nếu ứng dụng của bạn cần phải theo dõi cử chỉ người dùng như độ nghiêng và lắc, bạn có thể tạo ra một tập hợp các quy tắc lọc dữ liệu và tối ưu hóa cho các thiết bị mới hơn có cảm biến trọng lực một nhà cung cấp cụ thể, và một tập hợp các quy tắc lọc dữ liệu và tối ưu hóa cho các thiết bị mà không có một cảm biến trọng lực và chỉ có một gia tốc.

Các mẫu sau đây cho bạn thấy làm thế nào bạn có thể sử dụng phương pháp getVendor() và getVersion() để làm điều này. Trong ví dụ này, chúng tôi đang tìm kiếm một cảm biến trọng lực liệt kê Google Inc là nhà cung cấp và có một số phiên bản của 3. Nếu cảm biến đặc biệt là không có mặt trên thiết bị, chúng tôi cố gắng để sử dụng gia tốc.

Một phương pháp hữu ích là phương pháp getMinDelay(), trong đó trả về khoảng thời gian tối thiểu(ms) một bộ cảm biến có thể sử dụng để cảm nhận được dữ liệu. Bất kỳ cảm biến mà trả về một giá trị khác không cho phương pháp getMinDelay() là một bộ cảm biến streaming. Cảm biến dòng cảm nhận dữ liệu định kỳ và đã được giới thiệu trong Android 2.3 (API Level 9). Nếu một bộ cảm biến trả về số không khi bạn gọi phương pháp getMinDelay(), nó có nghĩa là cảm biến không phải là một bộ cảm biến truyền vì nó báo cáo dữ liệu chỉ khi có sự thay đổi trong các thông số nó được cảm nhận.

Phương pháp getMinDelay() là hữu ích vì nó cho phép bạn xác định tỷ lệ tối đa mà một bộ cảm biến có thể thu được dữ liệu. Nếu tính năng nhất định trong ứng dụng của bạn yêu cầu dữ liệu mức giá mua cao hay một cảm biến trực tuyến, bạn có thể sử dụng phương pháp này để xác định xem một cảm biến đáp ứng những yêu cầu và sau đó kích hoạt hoặc vô hiệu hóa các tính năng liên quan trong ứng dụng của bạn cho phù hợp.

Thận trọng: tỷ lệ thu thập dữ liệu tối đa của một cảm biến không nhất thiết phải là tốc độ mà các khung cảm biến cung cấp dữ liệu cảm biến để ứng dụng của bạn. Các báo cáo khung cảm biến dữ liệu thông qua các sự kiện cảm biến, và một số yếu tố ảnh hưởng đến tốc độ mà ứng dụng của bạn nhận được sự kiện cảm biến. 

>>  TextToSpeech trong lập trình Android(Phần 1)

>>  XmlPullParser trong lập trình Android

—————— || ——————
Trung tâm Đào tạo học lập trình Game Mobile với các Khóa học lập trình android cơ bản nâng cao tại Hà Nội !

[Total: 0    Average: 0/5]

Bạn nên xem

[Android cơ bản] 19b. Lấy vị trí hiện tại

Để lấy vị trí hiện tại, hãy tạo một client location là đối tượng LocationClient, kết …

One comment

  1. espn cricket live streaming

    I am now not sure where you are getting your information, but good topic. I needs to spend a while studying much more or figuring out more. Thank you for magnificent information I used to be in search of this info for my mission.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Facebook chat Vietpro