Android編程之方向傳感器用法示例
本文實(shí)例講述了Android編程之方向傳感器用法。分享給大家供大家參考,具體如下:
/** * 傳感器指針Demo * * @description: * @author ldm * @date 2016-4-25 下午5:29:18 */ public class SensorHandActivity extends GraphicsActivity { // 傳感器管理對象 private SensorManager mSensorManager; // 傳感器類 private Sensor mSensor; // 自定義繪制指針View private MyCompassView mView; /** * 方向傳感器檢測到的感應(yīng)值 values[0]: Azimuth(方位),地磁北方向與y軸的角度,圍繞z軸旋轉(zhuǎn)(0到359)。0=North, * 90=East, 180=South, 270=West values[1]: Pitch(俯仰),圍繞X軸旋轉(zhuǎn)(-180 to 180), * 當(dāng)Z軸向Y軸運(yùn)動時(shí)是正值 values[2]: Roll(滾),圍繞Y軸旋轉(zhuǎn)(-90 to 90),當(dāng)X軸向Z軸運(yùn)動時(shí)是正值 */ private float[] mValues; // 傳感監(jiān)聽 private final SensorEventListener mSensorListener = new SensorEventListener() { public void onSensorChanged(SensorEvent event) { mValues = event.values; if (mView != null) { mView.invalidate(); } } public void onAccuracyChanged(Sensor sensor, int accuracy) { } }; @SuppressWarnings("deprecation") @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); mView = new MyCompassView(this); setContentView(mView); } @Override protected void onResume() { super.onResume(); /** * 在onResume方法中注冊傳感器監(jiān)聽 事件 * 第一個(gè)參數(shù):監(jiān)聽Sensor事件,第二個(gè)參數(shù)是Sensor目標(biāo)種類的值,第三個(gè)參數(shù)是延遲時(shí)間的精度密度。延遲時(shí)間的精密度參數(shù) 參數(shù) * 延遲時(shí)間 SensorManager.SENSOR_DELAY_FASTEST 0ms * SensorManager.SENSOR_DELAY_GAME 20ms SensorManager.SENSOR_DELAY_UI * 60ms SensorManager.SENSOR_DELAY_NORMAL 200ms */ mSensorManager.registerListener(mSensorListener, mSensor, SensorManager.SENSOR_DELAY_GAME); } @Override protected void onStop() { // 在onStop方法中取消注冊監(jiān)聽 mSensorManager.unregisterListener(mSensorListener); super.onStop(); } private class MyCompassView extends View { // 定義畫筆Paint private Paint mPaint; // 定義繪制指針的路徑Path private Path mPath; public MyCompassView(Context context) { super(context); initPaintAndPath(); } private void initPaintAndPath() { // 初始化畫筆 mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setColor(Color.BLACK); mPaint.setStyle(Paint.Style.FILL); // 初始化繪制路徑 mPath = new Path(); mPath.moveTo(0, -50);// 移動到指點(diǎn)點(diǎn) mPath.lineTo(-20, 60);// 用線條連接到指定點(diǎn) mPath.lineTo(0, 50); mPath.lineTo(20, 60); mPath.close();// 關(guān)閉路徑 } @Override protected void onDraw(Canvas canvas) { // 設(shè)置畫面背景 canvas.drawColor(Color.WHITE); int w = canvas.getWidth(); int h = canvas.getHeight(); int cx = w / 2; int cy = h / 2; canvas.translate(cx, cy);// 移動畫面,把指針放到中央 if (mValues != null) { canvas.rotate(-mValues[0]); } canvas.drawPath(mPath, mPaint); } } }
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》、《Android資源操作技巧匯總》、《Android文件操作技巧匯總》、《Android開發(fā)入門與進(jìn)階教程》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計(jì)有所幫助。
- Android編程之光線傳感器用法詳解
- Android編程使用光線傳感器獲取光線強(qiáng)弱的方法【LightSensorManager封裝類】
- Android開發(fā)中方向傳感器定義與用法詳解【附指南針實(shí)現(xiàn)方法】
- Android開發(fā)中的重力傳感器用法實(shí)例詳解
- Android編程中光線傳感器的調(diào)用方法詳解
- android 傳感器(OnSensorChanged)使用介紹
- Android利用方向傳感器獲得手機(jī)的相對角度實(shí)例說明
- Android 利用方向傳感器實(shí)現(xiàn)指南針具體步驟
- Android 傳感器--光照傳感器詳解及使用
- Android重力傳感器實(shí)現(xiàn)滾動的彈球
- Android操作系統(tǒng)介紹之11種傳感器
- Android編程基于距離傳感器控制手機(jī)屏幕熄滅的方法詳解
相關(guān)文章
詳解Android中OkHttp3的例子和在子線程更新UI線程的方法
本篇文章主要介紹了詳解Android中OkHttp3的例子和在子線程更新UI線程的方法 ,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05Android實(shí)現(xiàn)四級聯(lián)動地址選擇器
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)四級聯(lián)動地址選擇器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10Android原生項(xiàng)目集成React Native的方法
本篇文章主要介紹了Android原生項(xiàng)目集成React Native的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11談?wù)凙ndroid的三種網(wǎng)絡(luò)通信方式
Android平臺有三種網(wǎng)絡(luò)接口可以使用,他們分別是:java.net.*(標(biāo)準(zhǔn)Java接口)、Org.apache接口和Android.net.*(Android網(wǎng)絡(luò)接口)。本文詳細(xì)的介紹,有興趣的可以了解一下。2017-01-01Android實(shí)現(xiàn)界面左右滑動切換功能
相信大家一定都使用過手機(jī)QQ和微信之類的軟件,當(dāng)我們使用時(shí)不難發(fā)現(xiàn)其界面的切換不僅可以通過點(diǎn)擊頁標(biāo)簽來實(shí)現(xiàn),還可以通過左右滑動來實(shí)現(xiàn)的,下面小編給大家介紹下如何實(shí)現(xiàn)這個(gè)功能2016-12-12Android 跨進(jìn)程通Messenger(簡單易懂)
這篇文章主要介紹了Android Messenger跨進(jìn)程通的相關(guān)資料,非常簡單容易理解,對android messenger 進(jìn)程通訊的相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧2016-08-08Android中AsyncTask與handler用法實(shí)例分析
這篇文章主要介紹了Android中AsyncTask與handler用法,以實(shí)例形式較為詳細(xì)的分析了Android中AsyncTask與handler的功能、用法與相關(guān)注意事項(xiàng),并附帶完整實(shí)例源碼供讀者下載,需要的朋友可以參考下2015-10-10Android實(shí)現(xiàn)Gesture手勢識別用法分析
這篇文章主要介紹了Android實(shí)現(xiàn)Gesture手勢識別用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android基于Gesture實(shí)現(xiàn)手勢識別的原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-09-09