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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android手机摇一摇的实现SensorEventListener

發(fā)布時(shí)間:2024/1/17 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android手机摇一摇的实现SensorEventListener 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Android手機(jī)搖一搖的實(shí)現(xiàn)SensorEventListener 看實(shí)例 package com.example.shakeactivity;import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager;public class ShakeListener implements SensorEventListener {/* Sensor 說(shuō)明 * Sensor.TYPE_ACCELEROMETER 加速度感應(yīng)檢測(cè) * Sensor.TYPE_MAGNETIC_FIELD 磁場(chǎng)感應(yīng)檢測(cè) * Sensor.TYPE_ORIENTATION 方位感應(yīng)檢測(cè) * Sensor.TYPE_GYROSCOPE 回轉(zhuǎn)儀感應(yīng)檢測(cè) * Sensor.TYPE_LIGHT 亮度感應(yīng)檢測(cè) * Sensor.TYPE_PRESSURE 壓力感應(yīng)檢測(cè) * Sensor.TYPE_TEMPERATURE 溫度感應(yīng)檢測(cè) * Sensor.TYPE_PROXIMITY 接近感應(yīng)檢測(cè)* SENSOR_DELAY_FASTEST 最低延遲,一般不是特別敏感的處理不推薦使用,該種模式可能造成手機(jī)電力大量消耗,由于傳遞的為原始數(shù)據(jù),算法不處理好將會(huì)影響游戲邏輯和UI的性能,所以不推薦使用。 * SENSOR_DELAY_GAME 游戲延遲,一般絕大多數(shù)的實(shí)時(shí)性較高的游戲都使用該級(jí)別 * SENSOR_DELAY_NORMAL 標(biāo)準(zhǔn)延遲,對(duì)于一般的益智類(lèi)或EASY級(jí)別的游戲可以使用,但過(guò)低的采樣率可能對(duì)一些賽車(chē)類(lèi)游戲有跳幀現(xiàn)象。 * SENSOR_DELAY_UI 用戶(hù)界面延遲,一般對(duì)于屏幕方向自動(dòng)旋轉(zhuǎn)使用,相對(duì)節(jié)省電能和邏輯處理,一般游戲開(kāi)發(fā)中我們不使用。 */ private static final int FORCE_THRESHOLD = 350; private static final int TIME_THRESHOLD = 100; private static final int SHAKE_TIMEOUT = 500; private static final int SHAKE_DURATION = 1000; private static final int SHAKE_COUNT = 6;private SensorManager mSensorMgr; private float mLastX = -1.0f, mLastY = -1.0f, mLastZ = -1.0f; private long mLastTime; private OnShakeListener mShakeListener; private Context mContext; private int mShakeCount = 0; private long mLastShake; private long mLastForce;public interface OnShakeListener { public void onShake(); //public void onShakeHorizontal(); //public void onShakeVertical(); }public ShakeListener(Context context) { mContext = context; resume(); }public void setOnShakeListener(OnShakeListener listener) { mShakeListener = listener; }public void resume() { mSensorMgr = (SensorManager) mContext .getSystemService(Context.SENSOR_SERVICE); if (mSensorMgr == null) { throw new UnsupportedOperationException("Sensors not supported"); }boolean supported = mSensorMgr.registerListener(this, mSensorMgr .getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI); if (!supported) { mSensorMgr.unregisterListener(this); throw new UnsupportedOperationException( "Accelerometer not supported"); } }public void pause() { if (mSensorMgr != null) { mSensorMgr.unregisterListener(this); mSensorMgr = null; } }@Override public void onAccuracyChanged(Sensor sensor, int accuracy) {}@SuppressWarnings("deprecation") @Override public void onSensorChanged(SensorEvent event) {if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER) { return; }long now = System.currentTimeMillis();if ((now - mLastForce) > SHAKE_TIMEOUT) { mShakeCount = 0; }if ((now - mLastTime) > TIME_THRESHOLD) { long diff = now - mLastTime; float speed = Math.abs(event.values[SensorManager.DATA_X] + event.values[SensorManager.DATA_Y] + event.values[SensorManager.DATA_Z] - mLastX - mLastY - mLastZ) / diff * 10000; if (speed > FORCE_THRESHOLD) { if ((++mShakeCount >= SHAKE_COUNT) && (now - mLastShake > SHAKE_DURATION)) { mLastShake = now; mShakeCount = 0; if (mShakeListener != null) { mShakeListener.onShake(); } } mLastForce = now; } mLastTime = now; mLastX = event.values[SensorManager.DATA_X]; mLastY = event.values[SensorManager.DATA_Y]; mLastZ = event.values[SensorManager.DATA_Z]; } } } 將上面的內(nèi)容保存為ShakeActivity.java文件,在 MainActivity.java 使用以下方法 ShakeListener mShaker = new ShakeListener(this); mShaker.setOnShakeListener(new ShakeListener.OnShakeListener() { public void onShake() { // action while shaking setTextView("shaked"); } });

總結(jié)

以上是生活随笔為你收集整理的Android手机摇一摇的实现SensorEventListener的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美麻豆 | 亚洲高清二区 | 成年人在线免费观看视频网站 | 国产婷婷久久 | av噜噜在线 | 亚洲一区二区在线电影 | 九九热视频精品 | 国产精品调教视频 | 本道综合精品 | 欧洲精品免费一区二区三区 | 国产精品麻豆入口 | 欧美 国产 精品 | 女性爱爱视频 | 欧美黄色a视频 | 翔田千里88av中文字幕 | 澳门黄色一级片 | 日韩国产成人无码av毛片 | 黄色一级大片在线免费看产 | 色欲无码人妻久久精品 | 丝袜制服中文字幕 | 日韩欧美高清一区 | 欧美黄色一级生活片 | xxxx 国产| 古代玷污糟蹋np高辣h文 | 蜜臀久久精品久久久久久酒店 | 丰满熟妇被猛烈进入高清片 | 久久久国产网站 | 免费网站www在线观看 | 欧美成人免费高清视频 | 动漫精品一区一码二码三码四码 | 精品久久一区 | 欧美日韩亚洲免费 | 久久国产色 | 欧美精品区 | 精品一区二区在线免费观看 | 国产一区免费在线 | 九九热精品视频 | 一区二区三区在线观 | a视频在线观看免费 | 啪啪五月天 | 自拍偷拍日韩 | 超碰国产91 | 日本精品一二三 | 国产外围在线 | 性欧美精品中出 | 少妇高潮久久久久久潘金莲 | 99综合 | 日韩一区二区三区免费视频 | 毛片的网站| 午夜久久久久久久久久久 | 国产美女av在线 | 九七av | 国产区91 | 91久久精品无码一区二区 | 中文字幕人妻一区二区三区在线视频 | 亚洲一区二区动漫 | 日本一区二区在线免费观看 | 国产1页 | 国产99久久久久久免费看 | 海角社区id | 国产精品一区二区免费视频 | 国产高清自拍视频 | 日韩大片免费观看视频播放 | 精品国产91久久久久久 | 美日韩一区二区三区 | 手机看片一区 | 怡春院视频| 亚洲中文字幕在线观看 | 麻豆传媒在线视频 | 精品视频免费在线 | 91九色视频 | 亚洲视频一二三 | 久久久久九九九九 | 丰满人妻妇伦又伦精品国产 | 91禁动漫在线 | 免费涩涩网站 | 国产va在线观看 | 葵司免费一区二区三区四区五区 | 国产精品高潮呻吟久久aⅴ码 | 人人精品久久 | www.久久99 | 视频一区二区在线 | 亚洲va天堂va国产va久 | 先锋av在线资源 | 国产精品aⅴ| 国产精品网站在线 | 国产高清自拍视频 | 日韩精品欧美精品 | 久久国产精品国产精品 | 久久五 | 欧美精品一区三区 | 欧美一区国产一区 | 亚洲区成人 | www.com国产| 久久久久久久网 | 亚洲精品91天天久久人人 | 欧美精品99久久久 | 国产区视频 | 制服丝袜影音先锋 |