sách gpt4 ăn đã đi

Giới thiệu sử dụng cảm biến android (OnSensorChanged)

In lại Tác giả: qq735679552 Thời gian cập nhật: 27-09-2022 22:32:09 27 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết blog CFSDN giới thiệu cách sử dụng cảm biến android (OnSensorChanged) này được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.

Sau đây là một số hằng số đại diện cho các cảm biến được xác định trong API.

  。

Int 。

LOẠI_GIA TỐC ĐỘ.

Một hằng số mô tả một loại cảm biến gia tốc.

số nguyên 。

LOẠI_TẤT CẢ 。

Một hằng số mô tả tất cả các loại cảm biến. Một hằng số mô tả tất cả các loại cảm biến.

số nguyên 。

LOẠI_TRỌNG LỰC 。

Một hằng số mô tả loại cảm biến trọng lực.

số nguyên 。

LOẠI_CON QUAY 。

Một hằng số mô tả một loại cảm biến con quay hồi chuyển.

số nguyên 。

LOẠI_NHẸ 。

Một hằng số mô tả một loại cảm biến ánh sáng.Cảm biến ánh sáng.

số nguyên 。

LOẠI_TĂNG_TỐC_ TUYẾN TÍNH.

Hằng số mô tả loại cảm biến gia tốc tuyến tính.

số nguyên 。

LOẠI_TRƯỜNG_TỪ 。

Một hằng số mô tả một loại cảm biến từ trường.

số nguyên 。

LOẠI_ĐỊNH_TẠI.

Hằng số này không được dùng nữa. Thay vào đó, hãy sử dụng cảm biến Từ trường.

số nguyên 。

LOẠI_ÁP SUẤT 。

Một hằng số mô tả một cảm biến đo áp suất loại cảm biến áp suất.

số nguyên 。

LOẠI_GẦN_ĐÂY.

Một hằng số mô tả một loại cảm biến khoảng cách.

số nguyên 。

LOẠI_VECTOR_XOAY 。

Hằng số mô tả loại cảm biến vectơ quay.

số nguyên 。

NHIỆT ĐỘ LOẠI 。

Một hằng số mô tả một cảm biến nhiệt độ loại cảm biến nhiệt độ.

  。

Chúng ta có thể làm theo các bước sau khi viết mã liên quan đến cảm biến:

Bước một: Nhận trình quản lý cảm biến.

SensorManger sm = (SensorManager).getSystemService(SENSOR_SERVICE),

Bước 2: Đăng ký trình nghe cho một cảm biến cụ thể. Ở đây chúng tôi sử dụng cảm biến từ điện trở Sensor.TYPE_ORIENTATION.

sm,registerListener (cái này,sm.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_FASTEST),

Nếu bạn muốn đăng ký các cảm biến khác tại đây, bạn có thể thay đổi thuộc tính loại cảm biến của giá trị tham số đầu tiên. Chúng ta nên thực hiện đăng ký dựa trên các cảm biến thực sự tồn tại trong điện thoại. Nếu trong điện thoại di động.

Cảm biến chúng tôi đã đăng ký không tồn tại và ngay cả khi chúng tôi đăng ký nó, nó sẽ không có tác dụng.

Giá trị tham số thứ ba cho biết tốc độ lấy dữ liệu cảm biến SENSOR_DELAY_FASTEST cho biết việc lấy dữ liệu cảm biến càng nhanh càng tốt. Ngoài giá trị này, cũng có thể đặt 3 lần thu thập.

Các giá trị tốc độ cho dữ liệu cảm biến như sau:

  。

Sao chép mã Mã này như sau:

SENSOR_DELAY_GAME Giá trị này được khuyến nghị nếu bạn đang phát triển trò chơi sử dụng cảm biến. Nói chung, hầu hết các trò chơi có hiệu suất thời gian thực cao đều sử dụng cấp độ này.
SENSOR_DELAY_NORMAL Tốc độ mặc định của việc thu thập dữ liệu cảm biến. Độ trễ tiêu chuẩn có thể được sử dụng cho các trò chơi giải đố thông thường hoặc các trò chơi trong trường DỄ DÀNG, nhưng tốc độ lấy mẫu quá thấp có thể gây ra tình trạng bỏ khung hình trong một số trò chơi đua xe.
SENSOR_DELAY_UI Nếu bạn sử dụng cảm biến để cập nhật giao diện người dùng, bạn nên sử dụng giá trị này.
SENSOR_DELAY_FASTEST: Độ trễ thấp nhất thường không được khuyến nghị cho quá trình xử lý không đặc biệt nhạy cảm. Chế độ này có thể gây ra mức tiêu thụ điện năng lớn trên điện thoại di động và do một lượng lớn dữ liệu thô được truyền đi nên việc xử lý thuật toán kém sẽ ảnh hưởng đến. hiệu suất của logic trò chơi và giao diện người dùng.

  。

Bước ba, vì chúng ta đã thiết lập tính năng nghe cảm biến ở phần hai. Chúng ta cần triển khai các phương pháp nghe cụ thể. Trong Android, các ứng dụng sử dụng cảm biến chủ yếu dựa vào giao diện android.hardware.SensorEventListener. Giao diện này có thể theo dõi các sự kiện cảm biến khác nhau. Mã giao diện SensorEventListener như sau:

  。

Sao chép mã Mã này như sau:

          giao diện công khai SensorEventListener {
                 public void onSensorChanged(sự kiện SensorEvent) {
                       }
                   public void onAccuracyChanged(Cảm biến cảm biến, int độ chính xác){
                      }
                   
          }

  。

     OnSensorChanged() được gọi khi giá trị của cảm biến thay đổi, chẳng hạn như khi hướng của cảm biến từ điện trở thay đổi. Phương thức OnAccuracyChanged() được gọi khi độ chính xác của cảm biến thay đổi. Đầu tiên, chúng ta có thể xem các nhận xét và mã ví dụ trong tài liệu phát triển Android:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
công cộng lớp học Hoạt động cảm biến mở rộng Hoạt động, thực hiện Trình nghe sự kiện cảm biến {
  riêng tư cuối cùng Trình quản lý cảm biến mSensorManager;
  riêng tư cuối cùng Cảm biến mAccelerometer;
 
  công cộng Hoạt động cảm biến() {
  mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
  mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
  }
 
  được bảo vệ vô hiệu onResume() {
  siêu .onResume();
  mSensorManager.registerListener( cái này , mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
  }
 
  được bảo vệ vô hiệu onPause() {
  siêu .onPause();
  mSensorManager.unregisterListener( cái này );
  }
 
  công cộng vô hiệu onAccuracyChanged(Cảm biến cảm biến, số nguyên sự chính xác) {
  }
 
  công cộng vô hiệu onSensorChanged(sự kiện SensorEvent) {
  }
  }

Luôn đảm bảo tắt các cảm biến mà bạn không cần, đặc biệt là khi hoạt động của bạn bị tạm dừng. Không làm như vậy có thể làm cạn kiệt pin chỉ trong vài giờ. Lưu ý rằng hệ thống sẽ không tự động tắt các cảm biến khi màn hình tắt.

Như bạn có thể thấy, tài liệu yêu cầu chúng ta hủy đăng ký các cảm biến mà chúng ta không cần càng nhiều càng tốt, đặc biệt là khi hoạt động của chúng ta mất tập trung. Nếu chúng ta không làm theo những điều trên thì pin điện thoại di động sẽ sớm bị cạn kiệt.

Cũng lưu ý rằng cảm biến sẽ không tự động hủy đăng ký khi màn hình tắt.

Vì vậy chúng ta có thể sử dụng phương thức onPause() và phương thức onresume() trong hoạt động. Đăng ký trình nghe cho cảm biến trong phương thức onresume i, trong onPause().

Hủy đăng ký trong phương thức.

Sau đây là DEMO đơn giản được viết bằng cảm biến hướng.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
công cộng lớp học Hoạt động cảm biến mở rộng Hoạt động, thực hiện Trình nghe sự kiện cảm biến {
  riêng tư cuối cùng Trình quản lý cảm biến mSensorManager;
  riêng tư cuối cùng Cảm biến mAccelerometer;
  công cộng Hoạt động cảm biến() {
  mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
  mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
  }
  được bảo vệ vô hiệu onResume() {
  siêu .onResume();
  mSensorManager.registerListener( cái này , mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
  }
  được bảo vệ vô hiệu onPause() {
  siêu .onPause();
  mSensorManager.unregisterListener( cái này );
  }
  công cộng vô hiệu onAccuracyChanged(Cảm biến cảm biến, số nguyên sự chính xác) {
  }
  công cộng vô hiệu onSensorChanged(sự kiện SensorEvent) {
  }
  }
 
 
bưu kiện net.blogjava.mobile.sensor;
nhập khẩu android.app.Activity;
nhập khẩu android.phần cứng.Cảm biến;
nhập khẩu android.phần cứng.Cảm biếnSự kiện;
nhập khẩu android.hardware.SensorEventListener;
nhập khẩu android.phần cứng.SensorManager;
nhập khẩu android.os.Bundle;
nhập khẩu android.widget.TextView;
công cộng lớp học Định hướngCảm biếnKiểm tra mở rộng Hoạt động thực hiện
  Trình nghe sự kiện cảm biến {
  riêng tư Trình quản lý cảm biến Trình quản lý cảm biến = vô giá trị ;
  riêng tư Định hướng cảm biếnCảm biến = vô giá trị ;
  riêng tư Chế độ xem văn bản Chế độ xem văn bản;
  @Ghi đè
  được bảo vệ vô hiệu onCreate(Gói savedInstanceState) {
  siêu .onCreate(trạng thái đã lưu);
  thiết lậpContentView(R.layout.main);
  setTitle( "DEMO cảm biến hướng" );
  textView = (TextView) tìmViewTheoId(R.id.textview);
  cảm biếnManager = (SensorManager) getSystemService(SENSOR_SERVICE);
  orientaionSensor = cảm biếnManager
  .getDefaultSensor(Cảm biến.TYPE_ORIENTATION);
  }
  @Ghi đè
  được bảo vệ vô hiệu onPause() {
  siêu .onPause();
  cảm biếnManager.unregisterListener( cái này ); // Hủy đăng ký người nghe
  }
  @Ghi đè
  được bảo vệ vô hiệu onResume() {
  siêu .onResume();
  cảm biếnManager.registerListener( cái này , cảm biến định hướng,
  SensorManager.SENSOR_DELAY_NORMAL); // Đăng ký người nghe cho cảm biến
 
  }
  @Ghi đè
  công cộng vô hiệu onAccuracyChanged(Cảm biến cảm biến, số nguyên sự chính xác) {
  }
  @Ghi đè
  công cộng vô hiệu onSensorChanged(sự kiện SensorEvent) {
  trôi nổi x = sự kiện.giá trị[SensorManager.DATA_X];
  trôi nổi y = sự kiện.giá trị[SensorManager.DATA_Y];
  trôi nổi z = sự kiện.giá trị[SensorManager.DATA_Z];
  textView.setText( "x=" + ( số nguyên ) x + "," + "vâng=" + ( số nguyên ) và + "," + "z="
  + ( số nguyên ) Với);
  }
}

Phần sau đây mô tả cách hệ tọa độ android xác định trục x và yz.

Hướng của trục x là từ trái sang phải theo chiều ngang của màn hình. Nếu điện thoại không vuông thì cạnh ngắn hơn cần đặt ngang và cạnh dài hơn cần đặt dọc. Hướng của trục Y là từ góc dưới bên trái màn hình lên phía trên màn hình theo chiều dọc của màn hình.

Đặt điện thoại lên bàn sao cho trục z hướng từ điện thoại lên trời.

Kể từ khi Apple ra mắt iPhone thế hệ đầu tiên vào năm 2007, những cảm biến mà trước đây tưởng chừng như không thể tách rời khỏi điện thoại di động đã dần trở thành một phần quan trọng của phần cứng điện thoại di động. Nếu độc giả đã từng sử dụng iPhone, HTC Dream, HTC Magic, HTC Hero và các dòng điện thoại Android khác sẽ thấy rằng khi đặt điện thoại theo chiều ngang hoặc chiều dọc, màn hình sẽ đổi hướng tùy theo vị trí của điện thoại. Chức năng này cần được thực hiện thông qua cảm biến trọng lực, ngoài cảm biến trọng lực, còn có nhiều loại cảm biến khác được sử dụng trong điện thoại di động, ví dụ như cảm biến từ trở là cảm biến quan trọng nhất. Mặc dù điện thoại di động có thể xác định hướng thông qua GPS, nhưng khi tín hiệu GPS kém hoặc hoàn toàn không có tín hiệu GPS thì GPS sẽ vô dụng. Tại thời điểm này, hướng (đông, nam, tây, bắc) có thể được xác định dễ dàng thông qua cảm biến từ điện trở. Với cảm biến từ điện trở, người ta cũng có thể chế tạo la bàn (thường được gọi là kim trỏ) thành điện tử. Việc sử dụng cảm biến trong ứng dụng Android dựa trên giao diện android.hardware.SensorEventListener. Các sự kiện khác nhau của cảm biến có thể được theo dõi thông qua giao diện này. Mã của giao diện SensorEventListener như sau:

  。

Sao chép mã Mã này như sau:

gói android.hardware;
giao diện công khai SensorEventListener
{
    công khai vô hiệu
onSensorChanged(sự kiện SensorEvent);
    công khai vô hiệu
onAccuracyChanged(Cảm biến cảm biến, int độ chính xác);   
}

  。

Hai phương thức được xác định trong giao diện SensorEventListener: onSensorChanged và onAccuracyChanged. Phương thức onSensorChanged được gọi khi giá trị của cảm biến thay đổi, chẳng hạn như khi hướng của cảm biến từ điện trở thay đổi. Phương thức onAccuracyChanged được gọi khi độ chính xác của cảm biến thay đổi. Phương thức onSensorChanged chỉ có một sự kiện tham số thuộc loại SensorEvent Điều rất quan trọng là lớp SensorEvent có một biến giá trị. Loại của biến là float[]. Nhưng biến này chỉ có tối đa 3 phần tử và tùy vào cảm biến mà các phần tử trong biến value có ý nghĩa khác nhau.

Trước khi giải thích ý nghĩa của các phần tử trong biến giá trị, trước tiên hãy giới thiệu cách hệ tọa độ của Android xác định các trục X, Y và Z.

Hướng của trục X là từ trái sang phải theo chiều ngang của màn hình. Nếu điện thoại không vuông thì cạnh ngắn hơn cần đặt ngang và cạnh dài hơn cần đặt dọc. Hướng của trục Y là từ góc dưới bên trái màn hình lên phía trên màn hình theo chiều dọc của màn hình. Đặt điện thoại nằm phẳng trên bàn, sao cho trục Z hướng từ điện thoại lên trời.

Sau đây là những gì các phần tử của biến giá trị thể hiện trong các cảm biến chính.

1.1 Cảm biến hướng.

Ba giá trị của biến giá trị trong cảm biến hướng đều biểu thị độ và ý nghĩa của chúng như sau:

value[0]: Giá trị này thể hiện hướng, là góc mà điện thoại xoay quanh trục Z. 0 tượng trưng cho hướng Bắc, 90 tượng trưng cho hướng Đông, 180 tượng trưng cho hướng Nam, 270 tượng trưng cho hướng Tây. Nếu giá trị của value[0] chính xác là 4 giá trị này và điện thoại được đặt theo chiều ngang thì có nghĩa là mặt trước của điện thoại nằm ở 4 hướng này. Tính năng này có thể được sử dụng để triển khai la bàn điện tử. Ví dụ 76 sẽ giới thiệu chi tiết quy trình triển khai la bàn điện tử.

value[1]: Giá trị này biểu thị độ nghiêng hoặc mức độ nghiêng của điện thoại. Giá trị này thay đổi khi điện thoại nghiêng quanh trục X. Phạm vi giá trị của các giá trị [1] là -180 giá trị [1] 180. Giả sử rằng màn hình điện thoại di động được đặt nằm ngang trên bàn. Nếu bảng nằm ngang hoàn toàn, giá trị của các giá trị [1] phải là 0 (vì một số bảng nằm ngang hoàn toàn nên giá trị có thể không phải là 0. , nhưng nhìn chung là một số giá trị. trong khoảng từ -5 đến 5). Lúc này, bắt đầu nâng từ trên đỉnh điện thoại cho đến khi điện thoại xoay 180 độ dọc theo trục X (màn hình hướng xuống và đặt nằm ngang trên bàn). Trong quá trình xoay này, giá trị [1] sẽ thay đổi trong khoảng từ 0 đến -180, tức là khi bạn nhấc nó lên từ đỉnh điện thoại, giá trị của giá trị [1] sẽ nhỏ dần cho đến khi bằng -180. Nếu bạn bắt đầu từ phần dưới cùng của điện thoại và xoay điện thoại 180 độ dọc theo trục X, các giá trị[1] sẽ thay đổi trong khoảng từ 0 đến 180. Tức là giá trị của value[1] sẽ tăng dần cho đến khi bằng 180. Bạn có thể sử dụng giá trị [1] và giá trị [2] được giới thiệu bên dưới để đo độ nghiêng của các đối tượng như bảng.

value[2]: Cho biết góc lăn của điện thoại di động dọc theo trục Y. Phạm vi giá trị là -90

1.2 Cảm biến gia tốc.

    Ba giá trị phần tử của biến giá trị của cảm biến lần lượt biểu thị giá trị gia tốc của trục X, Y và Z. Ví dụ: nếu một chiếc điện thoại di động được đặt nằm ngang trên bàn di chuyển từ trái sang phải, thì giá trị [0] là giá trị âm; nếu nó di chuyển từ phải sang trái, thì giá trị [0] là giá trị dương. Bạn đọc có thể trải nghiệm những thay đổi về giá trị ở cảm biến gia tốc thông qua các ví dụ ở phần này. Để sử dụng cảm biến tương ứng, việc triển khai giao diện SensorEventListener là chưa đủ. Bạn cũng cần sử dụng mã sau để đăng ký cảm biến tương ứng.

  。

Sao chép mã Mã này như sau:

// Nhận trình quản lý cảm biến
Trình quản lý cảm biến sm = (Trình quản lý cảm biến) getSystemService(DỊCH VỤ_SENSOR);
// Đăng ký cảm biến hướng
sm.registerListener(cái này,
sm.getDefaultSensor(Cảm biến.TYPE_ORIENTATION),
SensorManager.SENSOR_TRÌ_HẠN_NHANH NHẤT);

  。

Nếu bạn muốn đăng ký các cảm biến khác, bạn có thể thay đổi giá trị tham số đầu tiên của phương thức getDefaultSensor. Ví dụ: để đăng ký cảm biến gia tốc, bạn có thể sử dụng Sensor.TYPE_ACCELEROMETER. Nhiều hằng số cảm biến cũng được xác định trong lớp Cảm biến, nhưng các cảm biến phải được đăng ký theo cấu hình phần cứng thực tế của điện thoại di động. Nếu không có phần cứng cảm biến tương ứng trong điện thoại di động, ngay cả khi cảm biến tương ứng được đăng ký, nó sẽ không có bất kỳ tác dụng nào. Tham số thứ hai của phương thức getDefaultSensor cho biết tốc độ lấy dữ liệu cảm biến. SensorManager.SENSOR_DELAY_ FASTEST nghĩa là nhận dữ liệu cảm biến nhanh nhất có thể. Ngoài giá trị này, bạn cũng có thể đặt 3 giá trị tốc độ để lấy dữ liệu cảm biến như sau:

SensorManager.SENSOR_DELAY_NORMAL: Tốc độ lấy dữ liệu cảm biến mặc định. SensorManager.SENSOR_DELAY_GAME: Nên sử dụng giá trị này nếu phát triển trò chơi sử dụng cảm biến. SensorManager.SENSOR_DELAY_UI: Giá trị này được khuyến nghị nếu bạn sử dụng cảm biến để cập nhật dữ liệu trong giao diện người dùng.

1.3 Cảm biến trọng lực.

Hằng số loại của cảm biến gia tốc là Sensor.TYPE_GRAVITY. Cảm biến trọng lực và cảm biến gia tốc sử dụng cùng một hệ tọa độ. Ba phần tử trong mảng giá trị lần lượt biểu thị trọng lực của trục X, Y và Z. SDK Android xác định các hằng số biểu thị lực hấp dẫn của các hành tinh, mặt trăng và bề mặt mặt trời trong thiên hà. Hãy cùng ôn lại một số kiến ​​thức thiên văn học nếu sau này bạn sử dụng điện thoại Android bên ngoài trái đất thì nó có thể sẽ hữu ích.

  。

Sao chép mã Mã này như sau:

công khai tĩnh cuối cùng float GRAVITY_SUN= 275.0f;
công khai tĩnh cuối cùng float GRAVITY_MERCURY= 3.70f;
công khai tĩnh cuối cùng float GRAVITY_VENUS= 8.87f;
công khai tĩnh cuối cùng float GRAVITY_EARTH= 9.80665f;
công khai tĩnh cuối cùng float GRAVITY_MOON= 1.6f;
công khai tĩnh cuối cùng float GRAVITY_MARS= 3.71f;
công khai tĩnh cuối cùng float GRAVITY_JUPITER= 23.12f;
công khai tĩnh cuối cùng float GRAVITY_SATURN= 8.96f;
công khai tĩnh cuối cùng float GRAVITY_URANUS= 8.69f;
công khai tĩnh cuối cùng float GRAVITY_NEPTUNE= 11.0f;
công khai tĩnh cuối cùng float GRAVITY_PLUTO= 0.6f;
công khai tĩnh cuối cùng float GRAVITY_DEATH_STAR_I= 0,000000353036145f;
công khai tĩnh cuối cùng float GRAVITY_THE_ISLAND= 4.815162342f;

  1.4 Cảm biến ánh sáng.

  。

Hằng số loại cho cảm biến ánh sáng là Sensor.TYPE_LIGHT. Chỉ phần tử đầu tiên của mảng giá trị (values[0]) là có ý nghĩa. Biểu thị cường độ ánh sáng. Giá trị tối đa là 120000.0f. SDK Android chia cường độ ánh sáng thành các mức khác nhau. Giá trị tối đa của mỗi cấp được biểu thị bằng một hằng số. Các hằng số này được xác định trong lớp SensorManager. Mã như sau:

  。

Sao chép mã Mã này như sau:

công khai tĩnh cuối cùng float LIGHT_SUNLIGHT_MAX =120000.0f;
công khai tĩnh cuối cùng float LIGHT_SUNLIGHT=110000.0f;
công khai tĩnh cuối cùng float LIGHT_SHADE=20000.0f;
công khai tĩnh cuối cùng float LIGHT_OVERCAST= 10000.0f;
công khai tĩnh cuối cùng float LIGHT_SUNRISE= 400.0f;
công khai tĩnh cuối cùng float LIGHT_CLOUDY= 100.0f;
công khai tĩnh cuối cùng float LIGHT_FULLMOON= 0.25f;
công khai tĩnh cuối cùng float LIGHT_NO_MOON= 0,001f;

  。

Tám hằng số trên chỉ là những giá trị tới hạn. Bạn đọc nên xác định phạm vi dựa trên tình hình thực tế khi thực tế sử dụng cảm biến ánh sáng. Ví dụ: khi mặt trời mọc dần, giá trị của các giá trị [0] có khả năng vượt quá LIGHT_SUNRISE. Khi giá trị của các giá trị [0] tăng dần, nó sẽ vượt dần LIGHT_OVERCAST và đạt đến LIGHT_SHADE. tốt, , cũng có thể đạt tới LIGHT_SUNLIGHT, hoặc thậm chí cao hơn. 1.5 Cảm biến con quay hồi chuyển Hằng số loại của cảm biến con quay hồi chuyển là Sensor.TYPE_GYROSCOPE. Ý nghĩa của ba phần tử trong mảng giá trị như sau: value[0]: vận tốc góc quay dọc theo trục X. value[1]: Vận tốc góc quay dọc theo trục Y. value[2]: Vận tốc góc quay dọc theo trục Z. Khi điện thoại quay ngược chiều kim đồng hồ, vận tốc góc là dương và khi quay theo chiều kim đồng hồ, vận tốc góc là âm. Cảm biến con quay hồi chuyển thường được sử dụng để tính toán góc quay của điện thoại. Mã như sau:

  。

Sao chép mã Mã này như sau:

private static final float NS2S = 1.0f / 1000000000.0f;
dấu thời gian float riêng tư;
public void onSensorChanged(sự kiện SensorEvent)
{
    nếu (dấu thời gian != 0)
    {
    // event.timesamp biểu thị thời gian hiện tại tính bằng nano giây (một phần triệu mili giây)
              float cuối cùng dT = (event.timestamp - dấu thời gian) * NS2S;
              góc[0] += giá trị sự kiện[0] * dT;
              góc[1] += giá trị sự kiện[1] * dT;
              góc[2] += giá trị sự kiện[2] * dT;
     }
     timestamp = event.timestamp;
}

  。

Trong đoạn mã trên, chênh lệch thời gian (dT) giữa hai lần thu thập dữ liệu liền kề của cảm biến con quay hồi chuyển được sử dụng để tính toán góc quay của điện thoại di động dọc theo trục X, Y và Z trong khoảng thời gian này và các giá trị được tích lũy vào các phần tử khác nhau của mảng góc. 1.6 Các cảm biến khác Các cảm biến khác đã được giới thiệu ở các phần trước như cảm biến gia tốc, cảm biến trọng lực, cảm biến ánh sáng, cảm biến con quay hồi chuyển và cảm biến hướng. Ngoài các cảm biến này, SDK Android còn hỗ trợ các cảm biến sau. Để biết thông tin về cách sử dụng các cảm biến này cũng như các hằng số và phương pháp liên quan đến các cảm biến này, độc giả có thể tham khảo tài liệu chính thức.

Cảm biến tiệm cận (Sensor.TYPE_PROXIMITY) Cảm biến gia tốc tuyến tính (Sensor.TYPE_LINEAR_ACCELERIC) Cảm biến vectơ quay (Sensor.TYPE_ROTATION_VECTOR) Cảm biến từ trường (Sensor.TYPE_MAGNETIC_FIELD) Cảm biến áp suất (Sensor.TYPE_PRESSURE) Cảm biến nhiệt độ (Sensor.TYPE_TEMPERATURE).

Mặc dù AndroidSDK định nghĩa hơn chục cảm biến nhưng không phải điện thoại di động nào cũng hỗ trợ đầy đủ các cảm biến này. Ví dụ: Google Nexus S hỗ trợ 9 cảm biến trong số này (không hỗ trợ cảm biến áp suất và nhiệt độ), trong khi HTC G7 chỉ hỗ trợ 5 trong số đó. Nếu sử dụng cảm biến không được điện thoại hỗ trợ, thông thường sẽ không đưa ra ngoại lệ nhưng không thể lấy được dữ liệu do cảm biến trả về. Khi đầu đọc sử dụng cảm biến, tốt nhất trước tiên bạn nên xác định xem điện thoại di động hiện tại có hỗ trợ cảm biến đang được sử dụng hay không.

Cuối cùng, bài viết về giới thiệu cảm biến android (OnSensorChanged) kết thúc tại đây. Nếu bạn muốn biết thêm về giới thiệu cảm biến android (OnSensorChanged), vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt qua các bài viết liên quan. hỗ trợ nó trong tương lai blog của tôi! .

27 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress