亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Android中使用方向傳感器

發布時間:2021-04-08 16:25:53 來源:億速云 閱讀:183 作者:Leah 欄目:移動開發

怎么在Android中使用方向傳感器?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

具體如下:

public class SensorHandActivity extends GraphicsActivity {
  // 傳感器管理對象
  private SensorManager mSensorManager;
  // 傳感器類
  private Sensor mSensor;
  // 自定義繪制指針View
  private MyCompassView mView;
  /**
   * 方向傳感器檢測到的感應值 values[0]: Azimuth(方位),地磁北方向與y軸的角度,圍繞z軸旋轉(0到359)。0=North,
   * 90=East, 180=South, 270=West values[1]: Pitch(俯仰),圍繞X軸旋轉(-180 to 180),
   * 當Z軸向Y軸運動時是正值 values[2]: Roll(滾),圍繞Y軸旋轉(-90 to 90),當X軸向Z軸運動時是正值
   */
  private float[] mValues;
  // 傳感監聽
  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方法中注冊傳感器監聽 事件
     * 第一個參數:監聽Sensor事件,第二個參數是Sensor目標種類的值,第三個參數是延遲時間的精度密度。延遲時間的精密度參數 參數
     * 延遲時間 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方法中取消注冊監聽
    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();// 關閉路徑
    }
    @Override
    protected void onDraw(Canvas canvas) {
      // 設置畫面背景
      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);
    }
  }
}

看完上述內容,你們掌握怎么在Android中使用方向傳感器的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白玉县| 琼结县| 垦利县| 剑阁县| 邵武市| 永吉县| 木里| 临高县| 怀来县| 高要市| 剑阁县| 四平市| 瑞丽市| 抚松县| 宜宾市| 青铜峡市| 衡阳县| 枣强县| 九江县| 嘉峪关市| 淅川县| 长顺县| 房产| 三门县| 菏泽市| 凤庆县| 思茅市| 那曲县| 彝良县| 焦作市| 福清市| 灵丘县| 青海省| 南溪县| 江阴市| 怀柔区| 湄潭县| 青浦区| 呈贡县| 砀山县| 巴青县|