无线传感器基础:获取手机传感器、加速度

这篇具有很好参考价值的文章主要介绍了无线传感器基础:获取手机传感器、加速度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一些实验过程中的疑问:

如何知道设备上有哪些传感器?

如果手机不支持的传感器,程序运行往往不会抛出异常,只是无法获得传感器传回的数据。那么如何知道设备上有哪些传感器可用呢?有两种方式,一种是直接方式,一种是间接方式。直接方式就是遍历获取得到传感器信息集合。间接方式则是通过在AndroidManifest.xml配置文件中,指定该应用程序只支持运行在具有哪些硬件功能的设备上。如果应用程序需要温度传感器,可以在配置文件中添加下面一行代码:

        <uses-feature android:name="android.hardware.sensor.temperature"

                             android:required="true"/>

        Android Market只将应用程序安装在有温度传感器的设备上。但是该规则并不适用于其他Android应用商店。也就是说,一些Android应用商店不会执行检测以确保应用程序安装在支持指定传感器的设备上

import android.support.v7.app.AppCompatActivity;       报错

去Google android研发网站查找到了关于Android X的解释:

    AndroidX 对原始 Android 支持库进行了重大改进,后者现在已不再维护。
    androidx 软件包完全取代了支持库,不仅提供同等的功能,而且提供了新的库。
    此外,AndroidX 还包括以下功能:
    AndroidX 中的所有软件包都使用一致的命名空间,以字符串 androidx 开头。支持库软件包已映射到对应的 androidx.* 软件包。有关所有旧类到新类以及旧构建工件到新构建工件的完整映射,请参阅软件包重构页面。
    与支持库不同,androidx 软件包会单独维护和更新。从版本 1.0.0 开始,androidx 软件包使用严格的语义版本控制。您可以单独更新项目中的各个 AndroidX 库。
    版本 28.0.0 是支持库的最后一个版本。我们将不再发布 android.support 库版本。所有新功能都将在 androidx 命名空间中开发。
    怎么使用Android X呢?

例如:

把原先的

import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;

改为

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

就可以了

原先的很多都要去替换。包括在build.gradle、xml文件、java文件中。

手机没有温度传感器怎么监控温度

其实在我们的手机中的元器件是十分微小紧密而又复杂的,光是一个CPU就是以nm级别的单位来研发制造的,而在手机的内部也存在着许多热敏元器件,其中就会在多个地方设置安装热敏电阻,以达到实时检测手机某些特殊地方运行温度来进行整体调度避免手机损坏的目的。而这些软件就是通过这些热敏电阻其中的参数值变化,将其转化为手机上可以实时直观看到的温度的,所以即便是你的手机没有专门的温度检测器,也能够通过手机上都内置的热敏电阻来获取温度信息。

参考代码:https://www.cnblogs.com/1138720556Gary/p/9279841.html

chuanganqi2.app(获取手机传感器列表)

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private TextView tx1;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        Button bt1 = findViewById(R.id.button);

        tx1=findViewById(R.id.textView);

        //从系统获得传感器管理器

        final SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);

        bt1.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                String str;

                //从传感器管理器中获得全部的传感器列表

                // 用TYPE_ALL参数调用getSensorList()方法,以获取一个包含设备上所有传感器的列表。

                List<Sensor> allSensors = sm.getSensorList(Sensor.TYPE_ALL);

                int i;

                //给ViewText添加滚动条

                tx1.setMovementMethod(ScrollingMovementMethod.getInstance());

                //显示有多少个传感器

                tx1.setText("经检测该手机有"+allSensors.size()+"个传感器,它们分别是:");

                Sensor s;

                //显示每个传感器的具体信息

                for(i=0;i<allSensors.size();i++)

                {

                    s=allSensors.get(i);

                    str="设备名称:"+s.getName();

                    switch(s.getType())

                    {

                        //加速传感器     Sensor.TYPE_ACCELEROMETER

                        case Sensor.TYPE_ACCELEROMETER:

                            tx1.setText(tx1.getText()+"\n"+i+"加速传感器accelerometer:\n"+str);

                            break;

                        //陀螺仪传感器    Sensor.TYPE_GYROSCOPE

                        case Sensor.TYPE_GYROSCOPE:

                            tx1.setText(tx1.getText()+"\n"+i+"陀螺仪传感器gyroscope:\n"+str);

                            break;

                        //环境光仪传感器   Sensor.TYPE_LIGHT

                        case Sensor.TYPE_LIGHT:

                            tx1.setText(tx1.getText()+"\n"+i+"环境光仪传感器light:\n"+str);

                            break;

                        //电磁场传感器    Sensor.TYPE_MAGNETIC_FIELD

                        case Sensor.TYPE_MAGNETIC_FIELD:

                            tx1.setText(tx1.getText()+"\n"+i+"电磁场传感器magnetic:\n"+str);

                            break;

                        //方向传感器    Sensor.TYPE_ORIENTATION:

                        case Sensor.TYPE_ORIENTATION:

                            tx1.setText(tx1.getText()+"\n"+i+"方向传感器orientation:\n"+str);

                            break;

                        //压力传感器     Sensor.TYPE_PRESSURE:

                        case Sensor.TYPE_PRESSURE:

                            tx1.setText(tx1.getText()+"\n"+i+"压力传感器pressure:\n"+str);

                            break;

                        //距离传感器     Sensor.TYPE_PROXIMITY:

                        case Sensor.TYPE_PROXIMITY:

                            tx1.setText(tx1.getText()+"\n"+i+"距离传感器proximity:\n"+str);

                            break;

                        //温度传感器     Sensor.TYPE_TEMPERATURE:

                        case Sensor.TYPE_TEMPERATURE:

                            tx1.setText(tx1.getText()+"\n"+i+"温度传感器temperature:\n"+str);

                            break;

                        default:

                            tx1.setText(tx1.getText()+"\n"+i+"未知传感器:\n"+str);

                            break;

                    }

                }

            }

        });

    }

}

activity_main.xml

    <TextView

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="传感器操作!"

        android:textSize="10pt" />

    <Button

        android:id="@+id/button"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="获取手机传感器信息"/>

    <TextView

        android:id="@+id/textView"

        android:scrollbars="vertical"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent"

        android:textSize="8pt"/>

</LinearLayout>

安卓app 获取手机传感器数据,android,智能手机

Jiasuqi.app(获取手机加速度)

MainActivity.java

public class MainActivity extends AppCompatActivity implements SensorEventListener,View.OnClickListener {

//要监控传感器的原始数据,你需要实现SensorEventListener接口

    private SensorManager mSensorMgr;

    private  TextView tvx;

    private  TextView tvy;

    private  TextView tvz;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        Button bt=findViewById(R.id.bt_dsp);

        bt.setOnClickListener(this);

        Button bt_stop=findViewById(R.id.bt_stop);

        bt_stop.setOnClickListener(this);

        tvx=findViewById(R.id.tvx);

        tvy=findViewById(R.id.tvy);

        tvz=findViewById(R.id.tvz);

        //要识别设备上的传感器,你首先需要获取一个传感器设备的引用。

        // 你可以通过调用getSystemService(),并传入SENSOR_SERVICE参数,来创建一个SensorManage

        mSensorMgr=(SensorManager)getSystemService(Context.SENSOR_SERVICE);

    }

//使用了onResume()和onPause()回调方法来注册和注销传感器事件侦听器

    protected void onPause()

    {

        super.onPause();

        mSensorMgr.unregisterListener(this);

    }

    protected void onResume()

    {

        super.onResume();

    }

    protected void onStop()

    {

        super.onStop();

        mSensorMgr.unregisterListener(this);

    }

    //要监控传感器的原始数据,你需要实现SensorEventListener接口的onSensorChanged()回调方法

    //l传感器报送一个新数据

    //这种情况下,系统会调用onSensorChanged()方法,并传给你一个SensorEvent对象TYPE_ACCELEROMETER。

    // SensorEvent对象中包含了新数据的相关信息

    public void onSensorChanged(SensorEvent event)

    {

        if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER)

        {

            float[] values=event.values;

            tvx.setText("X方向的加速度: "+Float.toString(values[0]));

            tvy.setText("Y方向的加速度: "+Float.toString(values[1]));

            tvz.setText("Z方向的加速度: "+Float.toString(values[2]));

        }

    }

    //要监控传感器的原始数据,你需要实现SensorEventListener接口的onAccuracyChanged()回调办法

    public void onAccuracyChanged(Sensor sensor,int accuracy)

    {//不用处理,空着就行

        return;

    }

    public void onClick(View v)

    {

        if(v.getId()==R.id.bt_dsp)

        {

            mSensorMgr.unregisterListener(this,mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER));

            mSensorMgr.registerListener(this,

                    //用某类型常量作为参数的getDefaultSensor()来检测设备上是否存在该类型的传感器

                    mSensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),

                    SensorManager.SENSOR_DELAY_NORMAL);

            return;

        }

        if(v.getId()==R.id.bt_stop)

        {

            mSensorMgr.unregisterListener(this);

            return;

        }

    }

}

activity_main.xml

    <TextView

        android:id="@+id/tvx"

        android:layout_width="214dp"

        android:layout_height="69dp"

        android:text="TextView"

        tools:layout_editor_absoluteX="117dp"

        tools:layout_editor_absoluteY="100dp" />

    <TextView

        android:id="@+id/tvy"

        android:layout_width="214dp"

        android:layout_height="53dp"

        android:text="TextView"

        tools:layout_editor_absoluteX="126dp"

        tools:layout_editor_absoluteY="158dp" />

    <TextView

        android:id="@+id/tvz"

        android:layout_width="214dp"

        android:layout_height="53dp"

        android:text="TextView"

        tools:layout_editor_absoluteX="130dp"

        tools:layout_editor_absoluteY="234dp" />

    <Button

        android:id="@+id/bt_dsp"

        android:layout_width="131dp"

        android:layout_height="79dp"

        android:text="开始显示加速度"

        tools:layout_editor_absoluteX="115dp"

        tools:layout_editor_absoluteY="444dp" />

    <Button

        android:id="@+id/bt_stop"

        android:layout_width="217dp"

        android:layout_height="81dp"

        android:text="停止显示加速度" />

</LinearLayout

安卓app 获取手机传感器数据,android,智能手机

 安卓app 获取手机传感器数据,android,智能手机文章来源地址https://www.toymoban.com/news/detail-786487.html

到了这里,关于无线传感器基础:获取手机传感器、加速度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SC7A20 三轴加速度传感器 驱动

    使用的时候需要找对文档,之前文档不对,导致读取的数据计算角度一直不成功,发现要关闭高通滤波,由于高通滤波寄存器里面的滤波阈值没有文档说明,我直接关闭掉就可以使用了,代码与硬件平台无关,需要底层IIC接口支持,软件IIC或HC32的硬件IIC可以查阅我其他博客;

    2024年02月11日
    浏览(42)
  • SC7A20(士兰微-加速度传感器)示例

            做个笔录,最近项目使用了此款gsensor,实现了简单示例         硬件平台(RTL8762DK)         IDE:keil5.29 1、原理图    1、sc7a20.h   2、sc7a20.c

    2024年02月16日
    浏览(43)
  • 手机传感器的基础知识

    目录 1. 手机传感器的种类 2. 手机传感器的工作原理 3.不同类型的传感器 常见的手机传感器有加速度计、陀螺仪、磁力计、距离传感器、光线传感器、压力传感器等。这些传感器可以测量手机的运动状态、方向、磁场、光照强度、压力等信息。 传感器通过感应元件(如电容、

    2024年02月12日
    浏览(44)
  • 使用 Qt for Android 获取并利用手机传感器数据(上篇)开发环境省心搭建

    现代手机拥有许多传感器,包括地磁、姿态、GPS、光照、温度、气压、摄像、声音、电磁等,完全就是一个高度集成的科学仪器。不夸张的说,一部手机加上一个外围的计算机和控制系统,做一个功能较强的自主移动机器人并不是不可能。但是,很多APP都只是局限于自身的功

    2024年02月03日
    浏览(45)
  • 使用 Qt for Android 获取并利用手机传感器数据(下篇)使用C++实现功能

    在上一篇,我们搭建了开发环境。本篇,使用C++代码真正实现功能。我们使用UDP协议从手机上指定发送的目的地、端口。效果如下图,完整工程参考https://gitcode.net/coloreaglestdio/qtcpp_demo/-/tree/master/android/sensors2pc: 移动端1 移动端2 桌面 我们建立一个Qt的Widgets程序,添加 positio

    2024年02月13日
    浏览(44)
  • 【WSN无线传感器网络恶意节点】使用 MATLAB 进行无线传感器网络部署研究

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 在无线传

    2024年02月11日
    浏览(56)
  • 【无线传感器】使用 MATLAB和 XBee连续监控温度传感器无线网络研究(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码及数据 在本文

    2024年02月11日
    浏览(45)
  • 无线传感器网络作业题

    超星无线传感器网络作业题 选择题 1【多选题】无线传感器网络的主要特点包括( BCD )。 A、节点位置固定 B、无中心 C、自组织 D、多跳路由 2【多选题】无线传感器网络节点包括( AB )。 A、传感器节点 B、汇聚节点 C、管理节点 3【多选题】无线传感器网络中的传感器节点具

    2024年02月11日
    浏览(45)
  • 01-无线传感器网络(WSN)简介

    01-1定义 无线传感器网络(WSN)集成了传感器技术、嵌入式技术、计算机网络和无线通信技术等,在各个领域的应用不断扩展,被认为是21世纪最有影响力的技术之一。无线传感器网络是由大量静止或移动的传感器以自组织和多跳的方式构成的无线网络,目的是协作地探测、处

    2024年02月06日
    浏览(47)
  • 无线传感器网络WSN覆盖优化问题

    无线传感器网络 (Wireless Sensor Networks,WSNs)是一种分布式传感网络,嵌入了传感器的智能设备感测、通信、处理、收集数据,然后通过互联网将数据传输给监测者进行进一步分析,是通过无线通信方式形成的一个多跳自组织网络,可用于大规模物联网应用。由于其传感器通

    2024年02月05日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包