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

调用手机的方向传感器,X轴,Y轴,Z轴的数值

activity_sensor.xml

xml 复制代码
<?xml version="1.0" encoding="utf-8"?>
<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>

Sensor.java

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);
  }
}
相关推荐
hudawei99613 分钟前
kotlin中withContext,async,launch几种异步的区别
android·开发语言·kotlin
消失的旧时光-194317 分钟前
Kotlin 常用语法糖完整整理
android·开发语言·kotlin
coderlin_8 小时前
BI布局拖拽 (1) 深入react-gird-layout源码
android·javascript·react.js
2501_915918419 小时前
Fiddler中文版全面评测:功能亮点、使用场景与中文网资源整合指南
android·ios·小程序·https·uni-app·iphone·webview
wen's10 小时前
React Native安卓刘海屏适配终极方案:仅需修改 AndroidManifest.xml!
android·xml·react native
编程乐学11 小时前
网络资源模板--基于Android Studio 实现的聊天App
android·android studio·大作业·移动端开发·安卓移动开发·聊天app
没有了遇见13 小时前
Android 通过 SO 库安全存储敏感数据,解决接口劫持问题
android
hsx66613 小时前
使用一个 RecyclerView 构建复杂多类型布局
android
hsx66613 小时前
利用 onMeasure、onLayout、onDraw 创建自定义 View
android
守城小轩13 小时前
Chromium 136 编译指南 - Android 篇:开发工具安装(三)
android·数据库·redis