日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 传感器之《加速传感器》——摇一摇功能

發布時間:2024/3/12 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 传感器之《加速传感器》——摇一摇功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android傳感器開發參考網站:

Android Developers鏡像網站:http://wear.techbrood.com/guide/topics/sensors/sensors_overview.html

Android Developers中文翻譯:http://blog.csdn.net/think_soft/article/details/8054692

仿微信搖一搖功能主要使用加速傳感器

1.獲取傳感器管理器的實例

sensorManager = (SensorManager) getSystemService(Service.SENSOR_SERVICE);
2.在Activity的onResume生命周期方法中注冊加速傳感器

SensorManager.registerListener(SensorEventListener listener, Sensor sensor, int rateUs) 參數詳解:

listener :傳感器監聽事件,SensorEventListener接口,提供了以下兩個回調方法:

onSensorChanged(SensorEvent event):傳感器值的變化

event的實例的values變量非常重要,根據傳感器的不同,里面的值代表的含義也不相同,以加速傳感器為例:
values該變量的類型是float[]數組,最多有三個元素:
float x = values[0] 代表X軸
float y = values[1] 代表Y軸
float z = values[2] 代表Y軸

X軸的方向是沿著屏幕的水平方向從左向右。如果手機不是正方形的話,較短的邊需要水平放置,較長的邊需要垂直放置。Y軸的方向是從屏幕的左下角開始沿著屏幕的垂直方向指向屏幕的頂端。將手機平放在桌子上,Z軸的方向是從手機里指向天空。
我們判斷手機是否搖一搖,只要x,y,z軸,達到設定的閥值時就表示搖一搖。

onAccuracyChanged(Sensor sensor, int accuracy):傳感器精度的變化

精度使用以下四個狀態常量之一來代表的:
SENSOR_STATUS_ACCURACY_LOW
SENSOR_STATUS_ACCURACY_MEDIUM
SENSOR_STATUS_ACCURACY_HIGH
SENSOR_STATUS_UNRELIABLE

sensor :傳感器實例,這里使用加速傳感器 sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER

rateUs ?:?感應器反應速度,有四個常量共選擇

SENSOR_DELAY_NORMAL:匹配屏幕方向的變化,默認傳感器速度;

SENSOR_DELAY_UI:匹配用戶接口,如果更新UI建議使用;

SENSOR_DELAY_GAME:匹配游戲,游戲開發建議使用SENSOR_DELAY_FASTEST.:匹配所能達到的最快;

以上四種常量,根據實際情況選擇,一般情況選擇第一種就可以。

3. 在onPause生命周期方法中,注銷相應傳感器

SensorManager.unregisterListener(SensorEventListener listener, Sensor sensor)

注意:為防止同一時間內重復觸發搖一搖事件,可以設置一個記錄上次觸發事件的時間點變量,用于控制是否觸發搖一搖事件!

示例代碼:

package com.example.androidtest;import android.app.Activity; import android.app.Service; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.widget.Toast;public class MainActivity extends Activity implements SensorEventListener{//觸發搖一搖的最小時間間隔private final int SHAKE_SHORTEST_TIME_INTERVAL = 5;//傳感器值變化的閥值private final int SHAKE_SHORTEST_SENSOR_VALUE = 10;private long lastShakeTime = 0;private SensorManager sensorManager;private Sensor sensor;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sensorManager = (SensorManager) getSystemService(Service.SENSOR_SERVICE);sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);}@Overrideprotected void onResume() {super.onResume();sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);}@Overrideprotected void onPause() {super.onPause();sensorManager.unregisterListener(this, sensor);}@Overridepublic void onSensorChanged(SensorEvent event) {long currentTime = System.currentTimeMillis();int type = event.sensor.getType();if (((currentTime-lastShakeTime) <= SHAKE_SHORTEST_TIME_INTERVAL) ||(type != Sensor.TYPE_ACCELEROMETER)) {return;}lastShakeTime = currentTime;float[] values = event.values;if ((Math.abs(values[0]) > SHAKE_SHORTEST_SENSOR_VALUE || Math.abs(values[1]) > SHAKE_SHORTEST_SENSOR_VALUE || Math.abs(values[2]) > SHAKE_SHORTEST_SENSOR_VALUE)){ Toast.makeText(this, "搖一搖成功", Toast.LENGTH_SHORT).show(); } }@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}}















總結

以上是生活随笔為你收集整理的Android 传感器之《加速传感器》——摇一摇功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。