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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Andorid 风水罗盘简单实现

發布時間:2023/12/20 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Andorid 风水罗盘简单实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

公司最近要開發關于風水的產品,產品需求說要做一個風水羅盤。接著UI就馬上出了幾張圖,然后我想了一下,羅盤應該是android 特有的傳感器,通過傳感器獲取一些動態數據,然后給與指針進行動態賦值,添加動畫。

上圖:

首先介紹一下,什么是傳感器。

1.什么是傳感器

維基百科是這樣定義的:傳感器是一種物理裝置或生物器官,能夠探測、感受外界的信號、物理條件(如光、熱、濕度)或化學組成(如煙霧),并將探知的信息傳遞給其他裝置或器官。

在Android中傳感器可以展示當前手機狀態的應用,包括硬件信息、當前位置、加速計、陀螺儀、光感、磁場、定向、電池窗臺,聲壓,同時還可以進行多點觸控的測試。只要你的想象力足夠豐富,完全可以利用這些信息做出一些很新奇得應用。

Android sensor framewrok允許你訪問多種類型的傳感器,這些傳感器有的基于硬件,有一些是基于軟件的。基于硬件的傳感器是內嵌到手機或者平板中的物理器件,它們的數據直接來源于測量特定的物理特性,如加速度,地球磁場強度,或角速度的變化。基于軟件的傳感器沒有物理元器件,它們是模仿基于硬件的傳感器工作的。基于軟件的傳感器從一個或更多的基于硬件的傳感器中獲取數據。有時候它們也被稱為虛擬傳感器或合成傳感器,線性加速度傳感器和重力傳感器就是基于軟件傳感器的例子。表1總結了Android平臺支持的傳感器。

一般的Android都不支持所有類型的傳感器。例如,大部分手機和平板都有一個加速傳感器和磁力傳感器,但是很少有擁有氣壓傳感器或者溫度傳感器。并且,一個設備可以擁有一種類型的不止一個的傳感器,如,一個設備擁有兩個重力傳感器,每個傳感器有不同的測量范圍。

傳感器種類

傳感器主要分三大類:

動作(Motion)傳感器
環境(Environmental)傳感器
位置(Position)傳感器

動作傳感器:

這類傳感器在三個軸(X、Y、Z)上測量加速度和旋轉角度。包括如下幾個傳感器

加速(accelerometer)傳感器
陀螺儀(gyroscope)傳感器
重力(gravity)傳感器
線性加速(linear acceleration)傳感器
旋轉向量(rotational vector)傳感器

環境傳感器

這類傳感器可以測量不同環境的參數,例如周圍環境的空氣溫度和壓強、光照強度和濕度。包括如下幾個傳感器

溫度(barometer)傳感器
光線(photometer)傳感器
溫度(thermometer)傳感器
壓力(pressure)傳感器

位置傳感器

這類傳感器可以測量設備的物理位置。包括如下幾個傳感器

方向(orientation)傳感器(數據來自加速傳感器和磁場傳感器)
磁場(magnetomenter)傳感器

傳感器類型名稱 傳感器類別 系統定義的傳感器常量 傳感器常量對應的數值
1. 加速度 TYPE_ACCELEROMETER SENSOR_TYPE_ACCELEROMETER 1
2. 磁力域 TYPE_MAGNETIC_FIELD SENSOR_TYPE_MAGNETIC_FIELD 2
3. 方向 TYPE_ORIENTATION SENSOR_TYPE_ORIENTATION 3
4. 陀螺 TYPE_GYROSCOPE SENSOR_TYPE_GYROSCOPE 4
5. 光線(亮度)TYPE_LIGHT SENSOR_TYPE_LIGHT 5
6. 壓力 TYPE_PRESSURE SENSOR_TYPE_PRESSURE 6
7. 溫度 TYPE_TEMPERATURE SENSOR_TYPE_TEMPERATURE 7
8. 臨近性 TYPE_PROXIMITY SENSOR_TYPE_PROXIMITY 8

以上傳感器只是部分,后面將用代碼獲取到手機所支持的傳感器類型。再此之前我們還需要了解ASF。

什么是ASF

所謂ASF就是Android SDK提供的Android sensor framework(Android傳感器框架),其作用是用來訪問當前Android設備內置的傳感器,幫助我們完成各種與傳感器有關的任務。例如

1、確定當前Android設備內置了哪些傳感器。
2、確定某一個傳感器的技術指標。例如該傳感器能測量的最大范圍、傳感器的制造商、對電量的要求、測量的精度等。
3、獲取傳感器傳回來的數據以及定義傳感器回傳的數據的精度。
4、注冊和注銷傳感器事件監聽器,這些監聽器用于監聽傳感器的變化,通常從傳感器回傳的數據需要利用這些監聽器完成。

ASF支持的傳感器:

TYPE_ACCELEROMETER //加速度傳感器(硬件) TYPE_MAGNETIC_FIELD //磁場傳感器(硬件) TYPE_ORIENTATION //方向傳感器(軟件傳感器,數據來自重力和磁場傳感器) TYPE_GYROSCOPE //陀螺儀傳感器(硬件) TYPE_LIGHT //光線傳感器(硬件) TYPE_PRESSURE //壓力傳感器(硬件) TYPE_PROXIMITY //臨近傳感器(硬件) TYPE_GRAVITY //重場傳感器(硬件或軟件) TYPE_LINEAR_ACCELERATION //線性加速度傳感器(硬件或軟件) TYPE_ROTATION_VECTOR //旋轉矢量傳感器(硬件或軟件) TYPE_RELATIVE_HUMIDITY //濕度傳感器(硬件) TYPE_AMBIENT_TEMPERATURE //溫度傳感器(硬件) TYPE_TEMPERATURE //溫度傳感器(硬件),從Android4.0開始被TYPE_AMBIENT_TEMPERATURE取代

ASF的主要類和接口

SensorManager類:用于創建sensor service的實例。該類提供了很多用于訪問和枚舉傳感器、注冊和注銷傳感器監聽器的方法。而且還提供了與傳感器精度、掃描頻率、校正有關的常量。
Sensor類:提供了一些用于獲取傳感器技術參數的方法。如版本、類型、生產商等。
SensorEvent類:系統使用該類創建傳感器事件對象。該對象可以提供與傳感器事件相關的信息。傳感器事件對象包括的信息有:原始的傳感器回傳數據、傳感器類型、數據的精度以及觸發事件的時間。
SensorEventListener接口:該接口包含兩個回調方法,當傳感器的回傳值或精度發生變化時,系統會調用這兩個回調方法。

上代碼

1、得到SensorManager

sensorManager = (SensorManager) getProxyActivity().getBaseContext().getSystemService(Context.SENSOR_SERVICE);

2、注冊傳感器

sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_GAME);

3、實現接口,以及方法
implements SensorEventListener

@SuppressLint("SetTextI18n")@Overridepublic void onSensorChanged(SensorEvent sensorEvent) {//如果真機上觸發event的傳感器類型為水瓶傳感器類型if (sensorEvent.sensor.getType()==Sensor.TYPE_ORIENTATION){//獲取繞Z軸轉過的角度float degree = sensorEvent.values[0];if (degree>338||degree<22){text = "北";}else if (degree>23&&degree<=67){text= "西北";}else if (degree>68&&degree<=112){text= "西";}else if (degree>113&&degree<=157){text="西南";}else if (degree>158&&degree<=201){text = "南";}else if (degree>202&&degree<=247){text = "東南";}else if (degree>248&&degree<=291){text = "東";}else if (degree>292&&degree<337){text="東北";}//創建旋轉動畫(反向轉過degree度)rotateAnimation = new RotateAnimation(currentDegree, -degree, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);//設置動畫的持續時間rotateAnimation.setDuration(200);//設置動畫結束后保存狀態rotateAnimation.setFillAfter(true);//啟動動畫ivZhen.setAnimation(rotateAnimation);ivZhen.startAnimation(rotateAnimation);//動態賦值當前角度currentDegree = -degree;//計算當前顯示角度currentUpdate = (int) (360-degree);//顯示角度tvDegree.setText(text+" "+currentUpdate+"°");}}@Overridepublic void onAccuracyChanged(Sensor sensor, int i) {}

4、注銷傳感器

@Overridepublic void onPause() {super.onPause();sensorManager.unregisterListener(this);}

有什么疑問歡迎留言,一起討論。

總結

以上是生活随笔為你收集整理的Andorid 风水罗盘简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产亚洲精品精品国产亚洲综合 | 欧美大黄 | 国产精品久久久久永久免费看 | 国产青青草在线 | 日本免费在线观看 | 欧美日韩一区二区在线 | 另类一区二区三区 | 夫妻黄色片 | 成人夜晚视频 | 欧美大黑b| 亚洲日日干 | 国产一区二区三区在线播放无 | 欧美丝袜一区二区三区 | 老湿福利影院 | 免费看黄20分钟 | 国产中文一区二区 | 精品人妻一区二区三区四区五区 | 后宫秀女调教(高h,np) | 亚洲av日韩精品久久久久久久 | 一区二区三区www污污污网站 | 国产十八熟妇av成人一区 | 久久99久久久久久 | 久久综合成人网 | h视频免费在线观看 | 久久久久人妻一区二区三区 | 快播在线视频 | 国产福利av | 99精品福利视频 | 一起操17c | 好吊色视频一区二区三区 | 中文字幕在线免费观看视频 | 国产99免费 | 激情亚洲网 | 91视频免费在线 | 亚洲欧美日韩中文字幕在线观看 | 国产精品美女久久久久久久 | 福利片第一页 | 亚洲网站免费观看 | 轻点好疼好大好爽视频 | 欧美黑人孕妇孕交 | 黑白配在线观看免费观看 | 成人午夜视频一区二区播放 | 黑料视频在线观看 | 看欧美一级片 | 午夜性生活片 | 久久在线一区二区 | 激情文学88 | 香蕉视频网站入口 | 黄色片久久 | 草草网址 | 欧美嫩草 | 一级久久 | 国产高清视频免费观看 | 女人十八毛片嫩草av | 国产一区二区激情 | 日韩欧美v | 国产精品呻吟 | 懂色av一区 | 亚洲网站免费观看 | 波多野结衣片子 | 亚洲一区二区网站 | 国产做爰xxxⅹ性视频国 | 天天色图片| 免费看污的网站 | 毛茸茸毛片 | 狠狠干狠狠干狠狠干 | www.日本高清 | 日本成人精品 | 在线观视频免费观看 | 激情五月婷婷综合网 | 日韩aaaaa| 91久久久久国产一区二区 | 欧美乱三级| 第一页在线视频 | 美女一区二区三区视频 | 成年人在线视频免费观看 | 日本精品网站 | 色综合视频在线 | 久久999| 国产精品v日韩精品v在线观看 | 国产一国产精品一级毛片 | 日日躁夜夜躁狠狠躁 | 91本色 | 99黄色网| 激情五月激情综合网 | 国产免费无遮挡吸奶头视频 | 男人和女人日b视频 | 亚州av网| 午夜精品久久久久久久久久久久久 | 国产r级在线观看 | 91视频网页 | 国产宾馆实践打屁股91 | 色呦呦日韩精品 | 亚洲欧洲自拍偷拍 | 偷偷在线观看免费高清av | 在线观看免费黄色小视频 | 亚洲久久在线观看 | 黄色av日韩 | 日日夜夜狠狠爱 |