最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android編程之方向傳感器用法示例

 更新時間:2017年08月22日 10:41:45   作者:遲做總比不做強(qiáng)  
這篇文章主要介紹了Android編程之方向傳感器用法,結(jié)合實例形式分析了Android方向傳感器的定義、監(jiān)聽及事件響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了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)動時是正值 values[2]: Roll(滾),圍繞Y軸旋轉(zhuǎn)(-90 to 90),當(dāng)X軸向Z軸運(yùn)動時是正值
   */
  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ā)入門與進(jìn)階教程》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設(shè)計有所幫助。

相關(guān)文章

最新評論

遂川县| 托克逊县| 平凉市| 玛纳斯县| 揭西县| 新平| 论坛| 西乌| 花莲县| 崇文区| 三都| 石阡县| 西林县| 延寿县| 泰来县| 商南县| 宜州市| 满洲里市| 织金县| 金乡县| 宁波市| 青海省| 通渭县| 靖安县| 堆龙德庆县| 赫章县| 睢宁县| 衡阳县| 铁力市| 万年县| 尼勒克县| 吴江市| 昂仁县| 龙门县| 庄浪县| 淄博市| 平安县| 军事| 辉县市| 调兵山市| 保靖县|