Android編程之方向傳感器用法示例
本文實例講述了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軸運動時是正值 values[2]: Roll(滾),圍繞Y軸旋轉(zhuǎn)(-90 to 90),當(dāng)X軸向Z軸運動時是正值
*/
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)聽 事件
* 第一個參數(shù):監(jiān)聽Sensor事件,第二個參數(shù)是Sensor目標(biāo)種類的值,第三個參數(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);// 移動到指點點
mPath.lineTo(-20, 60);// 用線條連接到指定點
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ā)入門與進階教程》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對大家Android程序設(shè)計有所幫助。
- Android編程之光線傳感器用法詳解
- Android編程使用光線傳感器獲取光線強弱的方法【LightSensorManager封裝類】
- Android開發(fā)中方向傳感器定義與用法詳解【附指南針實現(xiàn)方法】
- Android開發(fā)中的重力傳感器用法實例詳解
- Android編程中光線傳感器的調(diào)用方法詳解
- android 傳感器(OnSensorChanged)使用介紹
- Android利用方向傳感器獲得手機的相對角度實例說明
- Android 利用方向傳感器實現(xiàn)指南針具體步驟
- Android 傳感器--光照傳感器詳解及使用
- Android重力傳感器實現(xiàn)滾動的彈球
- Android操作系統(tǒng)介紹之11種傳感器
- Android編程基于距離傳感器控制手機屏幕熄滅的方法詳解
相關(guān)文章
Android開發(fā)Kotlin語言協(xié)程的依賴及使用示例
這篇文章主要為大家介紹了Android開發(fā)Kotlin語言協(xié)程的依賴及使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
android開發(fā)之listView組件用法實例簡析
這篇文章主要介紹了android開發(fā)之listView組件用法,結(jié)合實例形式簡單分析了listView組件的相關(guān)屬性與使用技巧,需要的朋友可以參考下2016-01-01
Android編程實現(xiàn)Gallery中每次滑動只顯示一頁的方法
這篇文章主要介紹了Android編程實現(xiàn)Gallery中每次滑動只顯示一頁的方法,涉及Android擴展Gallery控件實現(xiàn)翻頁效果控制的功能,涉及Android事件響應(yīng)及屬性控制的相關(guān)技巧,需要的朋友可以參考下2015-11-11
Android入門之使用OKHttp組件訪問網(wǎng)絡(luò)資源
這篇文章主要為大家詳細介紹了Android如何使用OKHttp組件訪問網(wǎng)絡(luò)資源功能,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下2022-12-12
解決Android 沉浸式狀態(tài)欄和華為虛擬按鍵沖突問題
對于現(xiàn)在的 App 來說,布局頁面基本都會用到沉浸式狀態(tài)欄,單純的沉浸式狀態(tài)欄很容易解決,但是在華為手機上存在一個底部虛擬按鍵的問題,會導(dǎo)致頁面底部和頂部出現(xiàn)很大的問題,下面通過本文給大家分享Android 沉浸式狀態(tài)欄和華為虛擬按鍵沖突問題,一起看看吧2017-07-07
Android實現(xiàn)在列表List中顯示半透明小窗體效果的控件用法詳解
這篇文章主要介紹了Android實現(xiàn)在列表List中顯示半透明小窗體效果的控件用法,結(jié)合實例形式分析了Android半透明提示框的實現(xiàn)與設(shè)置技巧,需要的朋友可以參考下2016-06-06

