• 安卓开发实例:方向传感器


    调用手机的方向传感器,X轴,Y轴,Z轴的数值
    在这里插入图片描述

    activity_sensor.xml

    
    <androidx.constraintlayout.widget.ConstraintLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      tools:context="com.weijun901.randomNum.Second">
    
      <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center" tools:ignore="MissingConstraints">
        <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:background="#F8BBD0"
          android:gravity="center">
          <TextView
            android:text="倾斜角(X轴):"
            android:textSize="30sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/tvX" tools:ignore="HardcodedText"/>
          <TextView
            android:text="TextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/tv1" android:layout_weight="1"
            tools:ignore="HardcodedText,InefficientWeight"/>
        LinearLayout>
        <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:background="#B2DFDB">
          <TextView
            android:text="滚动角(Y轴):"
            android:textSize="30dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/tvY" tools:ignore="HardcodedText,SpUsage"/>
          <TextView
            android:text="TextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/tv2" android:layout_weight="1"
            tools:ignore="HardcodedText,InefficientWeight"/>
        LinearLayout>
        <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:background="#B3E5FC">
          <TextView
            android:text="方位角(Z轴):"
            android:textSize="30dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/tvZ" tools:ignore="HardcodedText,SpUsage"/>
          <TextView
            android:text="TextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/tv3" android:layout_weight="1"
            tools:ignore="HardcodedText,InefficientWeight"/>
        LinearLayout>
        <Button
          android:text="Main"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:onClick="toMainActivity"
          android:id="@+id/button" tools:ignore="HardcodedText"/>
      LinearLayout>
    androidx.constraintlayout.widget.ConstraintLayout>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68

    Sensor.java

    package com.weijun901.show;
    
    import android.content.Intent;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.view.View;
    import android.widget.TextView;
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    
    public class Sensor extends AppCompatActivity implements SensorEventListener {
      private TextView tv1;
      private TextView tv2;
      private TextView tv3;
      private SensorManager sManager;
      private android.hardware.Sensor mSensorOrientation;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sensor);
    
        // 设置标题栏的文字
        getSupportActionBar().setTitle("方向传感器");
    
        sManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        mSensorOrientation = sManager.getDefaultSensor(android.hardware.Sensor.TYPE_ORIENTATION);
        sManager.registerListener(this, mSensorOrientation, SensorManager.SENSOR_DELAY_UI);
        bindViews();
      }
      private void bindViews() {
        tv1 = findViewById(R.id.tv1);
        tv2 = findViewById(R.id.tv2);
        tv3 = findViewById(R.id.tv3);
      }
      @Override
      public void onSensorChanged(SensorEvent event) {
        tv1.setText((float) (Math.round(event.values[1] * 100)) / 100 + "°");
        tv2.setText((float) (Math.round(event.values[2] * 100)) / 100 + "°");
        tv3.setText((float) (Math.round(event.values[0] * 100)) / 100 + "°");
      }
    
      public void toMainActivity(View view) {
        Intent intent = new Intent(this, MainActivity.class); // 替换为目标页面的类名
        startActivity(intent);
      }
    
      @Override
      public void onAccuracyChanged(android.hardware.Sensor sensor, int accuracy) {
    
      }
    
      @Override
      protected void onDestroy() {
        super.onDestroy();
        sManager.unregisterListener(this);
      }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
  • 相关阅读:
    uniapp字符串转base64,无需导入依赖(多端支持)
    Vue之vue-cli搭建SPA项目
    win10 家庭版安装软件报错:无法成功安装操作,因为文件包含病毒或潜在的垃圾软件
    边缘路由器和普通路由器哪个好 边缘路由器跟路由器有什么区别
    JNPF开发平台凭什么火?
    Elasticsearch 从入门到实践
    JavaScript垃圾回收机制解析
    10道不得不会的Docker面试题
    Android - 文件存储
    C++编译过程
  • 原文地址:https://blog.csdn.net/weixin_45853406/article/details/134080353