传感器

本文介绍了Android系统的传感器应用,通过代码示例展示了如何检测手机支持的传感器数量。作者透露其手机支持21种传感器,包括常见的距离传感器和运动传感器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说到传感器,大家都会想到微信的摇一摇,还有打电话的距离传感器,。现在我们来学习一下传感器。

代码实现:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/values"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="111111" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/show"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="10dp"
            android:text="22222" />
    </ScrollView>
</LinearLayout>
SensorActivity.java:
public class SensorActivity extends AppCompatActivity implements SensorEventListener{
    TextView show, values;
    private SensorManager sm;
    private Sensor sensor;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sensor);
        Log.e("11", "onCreate");
        show = findViewById(R.id.show);
        values = findViewById(R.id.values);

        initView();
        initData();
    }

    public void initData() {
        //单独使用光线传感器

        //1、获取传感器的管理器
        //2、你要使用什么传感器(注册什么传感器—方向传感器)
        sensor = sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
        //3、注册这个传感器(第一个参数是传感器的监听,注册什么传感器,传感器的感应频率)
        sm.registerListener(this, sensor, SensorManager.SENSOR_DELAY_UI);
    }

    public void initView() {
        //1、先获取传感器的管理器
        sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        //2、获取到手机中所有传感器的列表
        List<Sensor> all = sm.getSensorList(Sensor.TYPE_ALL);

        StringBuffer sb = new StringBuffer();
        sb.append("你的手机有:" + all.size() + "\n" + "传感器支持");
        for (Sensor s : all) {
            switch (s.getType()) {
                case Sensor.TYPE_ACCELEROMETER:
                    sb.append(s.getType() + " 加速度传感器(Accelerometer sensor)" + "\n");
                    break;
                case Sensor.TYPE_GYROSCOPE:
                    sb.append(s.getType() + " 陀螺仪传感器(Gyroscope sensor)" + "\n");
                    break;
                case Sensor.TYPE_LIGHT:
                    sb.append(s.getType() + " 光线传感器(Light sensor)" + "\n");
                    break;
                case Sensor.TYPE_MAGNETIC_FIELD:
                    sb.append(s.getType() + " 磁场传感器(Magnetic field sensor)" + "\n");
                    break;
                case Sensor.TYPE_ORIENTATION:
                    sb.append(s.getType() + " 方向传感器(Orientation sensor)" + "\n");
                    break;
                case Sensor.TYPE_PRESSURE:
                    sb.append(s.getType() + " 气压传感器(Pressure sensor)" + "\n");
                    break;
                case Sensor.TYPE_PROXIMITY:
                    sb.append(s.getType() + " 距离传感器(Proximity sensor)" + "\n");
                    break;
                case Sensor.TYPE_TEMPERATURE:
                    sb.append(s.getType() + " 温度传感器(Temperature sensor)" + "\n");
                    break;
                default:
                    sb.append(s.getType() + " 其他传感器" + "\n");
                    break;
            }
            sb.append("设备名称:" + s.getName() + "\n 设备版本:" + s.getVersion() + "\n 供应商:" + s.getVendor() + "\n\n");
        }

        show.setText(sb.toString());

    }


    @Override
    public void onSensorChanged(SensorEvent event) {
        float[] values = event.values;
        Log.e("111", values[0] + "");
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }
}

好的,今天的学习就这样了,。可以复制代码到自己的项目里,看看自己的手机支持多少传感器,。

偷偷告诉小伙伴们,我的手机支持21个传感器哦.....


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值