国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

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

2019-10-22 18:29:39
字體:
來源:轉載
供稿:網友

本文實例講述了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;  /**   * 方向傳感器檢測到的感應值 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程序設計有所幫助。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑龙江省| 呼伦贝尔市| 翼城县| 凤山市| 岱山县| 安阳县| 长宁区| 都匀市| 稷山县| 翁牛特旗| 莎车县| 济源市| 屏东市| 昌黎县| 兴隆县| 房山区| 中西区| 凤冈县| 韶关市| 延吉市| 莆田市| 泾阳县| 嘉鱼县| 永春县| 仲巴县| 苏尼特左旗| 固安县| 乐安县| 长武县| 麟游县| 临猗县| 页游| 苏尼特右旗| 昌邑市| 湖南省| 灌阳县| 清徐县| 普兰店市| 福贡县| 固阳县| 资兴市|