日韩性视频-久久久蜜桃-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 风水罗盘简单实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 一级黄色片在线播放 | 日韩欧美精品中文字幕 | 中文字幕乱码在线 | 最近中文字幕免费 | 国产精彩视频在线观看 | 性欧美hd调教 | 日韩精品视频在线免费观看 | 中文字幕av免费在线观看 | 91在线视频免费播放 | 欧美一级色片 | wwwa级片| 加勒比久久综合 | 女人18片毛片60分钟 | xxxxx国产 | 日韩五码 | 天天搞天天搞 | 正在播放木下凛凛88av | 精品三区视频 | 男女偷爱性视频刺激 | 丰满少妇久久久久久久 | 日本黄色www| 国产免费一区二区三区免费视频 | 欧美色啪| 在线精品小视频 | 国产ts丝袜人妖系列视频 | caobi视频 | www.sesehu| 顶弄h校园1v1 | 亚洲最大黄色 | 91华人在线 | 天堂资源在线 | www.av成人| 香蕉视频免费在线看 | 免费观看的av | 欧美乱轮视频 | 亚洲丝袜视频 | 两口子交换真实刺激高潮 | jzzijzzij亚洲成熟少妇 | 光棍影院手机版在线观看免费 | 亚洲激情网址 | 美女张开腿流出白浆 | 看国产一级片 | 欧美日韩国产三级 | 国产一在线 | 在线观看欧美 | 久久国产色av | 国产又粗又长又黄视频 | 欧美精品网址 | 爱爱二区 | 毛片av在线观看 | 成年人免费小视频 | 日本三级日本三级日本三级极 | 成人乱码一区二区三区 | 日日日干| 亚洲免费av电影 | 色综合亚洲 | 亚洲国产爱 | 在线精品亚洲欧美日韩国产 | 波多野吉衣一区 | 女生扒开尿口让男生桶 | 手机av免费 | jizz一区二区 | 一级淫片a | www.人人干 | 欧美一级二级在线观看 | 亚洲av无码一区二区三区观看 | 富婆如狼似虎找黑人老外 | 草草色 | 性色在线观看 | av免费福利| 成人污污视频 | 男生女生操操操 | www.成人精品| 久久久成人精品一区二区三区 | 亚洲图片欧美日韩 | 中文字幕在线第一页 | 亚洲香蕉网站 | 亚洲一区二区三区免费在线观看 | 国产精品美女 | 少妇高潮一区二区三区四区 | 中文字幕一区二区三区久久久 | 日日射夜夜 | 久久久久无码国产精品不卡 | 日韩色区| 美女扒开粉嫩的尿囗给男生桶 | 蜜桃在线一区二区三区 | 色哟哟一区二区三区 | 国产精品无码粉嫩小泬 | 国产做a视频 | 国产精品成人一区 | 欧美一级黄色片视频 | 国产主播一区二区 | 爱爱爱爱网| 最新中文字幕第一页 | 精品少妇一区二区三区密爱 | 姑娘第5集在线观看免费好剧 | 色哟哟入口 | 3级黄色片| 亚洲无av|