标签: android-sensors

安卓指南针似乎不可靠

在过去的几天里,我一直在研究小型指南针应用程序,并且已经启动并运行了代码,但似乎指南针读数不准确.在校准了两部手机之后,我第一次测试了我发现这个,我只是把手机靠在平面上,看着读数然后水平翻转并将它放在同一平面上(180转)并且值得做不改变180*它接近240*.

然后我测试了读数与指南针,有时读数似乎接近,但在其他点,它超过50*关闭.我甚至试图将我的手机和指南针放在地板上以保持指南针远离任何磁干扰同样的结果(注意我也保持指南针和手机分开,通过排列书的边缘使它们保持在同一方向) .

然后我将示例应用程序放在另一部手机上(首先是nexus S,第二个是Motorola droid 1).在两部手机之间,差异的范围是在某些点相等,但最多的点在50到15度之间.

我查看了文档,还浏览了许多不同的论坛帖子,我没有看到任何人有相同的结果.我的代码中可能存在一些小错误,导致我的读数错误地出现,或者一些我没有看到的记录错误.

任何见解或建议将不胜感激!!

继承传感器,我在SensorEventListener类中更改了代码

public void onSensorChanged(SensorEvent event)
    {
        // If the sensor data is unreliable return
        if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE)
        {
            Toast.makeText(main.this, "Sensor Status Unreliable",Toast.LENGTH_SHORT).show();
        }





        // Gets the value of the sensor that has been changed
        switch (event.sensor.getType())
        {
        case Sensor.TYPE_ACCELEROMETER:
            m_vfgravity = event.values.clone();
            break;
        case Sensor.TYPE_MAGNETIC_FIELD:
            m_vfgeomag = event.values.clone();
            break;
        }

        if (m_vfgravity != null && m_vfgeomag != null)
        {
            if(SensorManager.getRotationMatrix(m_vfinR, m_vfI, m_vfgravity, m_vfgeomag))
            {
                SensorManager.getOrientation(m_vfinR, m_vforientVals);

                m_fCompBearing = (float) Math.round((Math.toDegrees(m_vforientVals[0])) …
Run Code Online (Sandbox Code Playgroud)

android sensor android-sensors compass-geolocation

10
推荐指数
2
解决办法
1万
查看次数

如何以固定速率记录Android Motion Sensors的数据

我正在学习Android编程的基础知识.

我有一个简单的android测试应用程序,其中我将加速度计,磁力计和方向数据记录到外部文件,同时也显示它.我通过调用方法initLogger来单击Start按钮(相关传感器的registerListener)来启动日志记录过程.

看起来与此类似......

public void initLogger(View view)
{
    boolean bFlag = false;

    Button btnStart = (Button)findViewById(R.id.btnStartLog);
    Button btnStop = (Button)findViewById(R.id.btnStopLog);

    btnStart.setEnabled(bFlag);
    btnStop.setEnabled(!bFlag);

    bEnableLogging = true;
    //Start reading the sensor values
    sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_UI);
    sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI);

   //so on.... 
Run Code Online (Sandbox Code Playgroud)

还有一个Stop按钮,它将停止记录过程(最后通过为每个传感器调用unregisterListener来取消注册)

数据检索过程发生在onSensorChanged处理程序中,该处理程序将从相关传感器检索数据,将值设置为相应的UI元素,最后将数据记录到外部.csv文件.

onSensorChanged事件处理程序看起来像这样......

public void onSensorChanged(SensorEvent event) {


    // TODO Auto-generated method stub
    // accelerometer
    TextView tAX = (TextView) findViewById(R.id.txtViewAxValue);
    TextView tAY = (TextView) findViewById(R.id.txtViewAyValue);
    TextView tAZ = (TextView) findViewById(R.id.txtViewAzValue);

    // magnetic field
    TextView tMX …
Run Code Online (Sandbox Code Playgroud)

java android android-sensors sensor-fusion

10
推荐指数
1
解决办法
1万
查看次数

我们如何测量对象和Android手机摄像头之间的距离

我想计算相机和识别物体之间的距离.为此我尝试了很多方法,我试图用加速度计找到物体和相机之间的角度,然后使用

d = h*tan a

h是距离基部的高度,通常为1.4

我尝试使用get orientation方法计算角度.请告诉我在哪里做错了.已经超过2天,我一直在努力满足这一要求.我们已经研究了Android Store上可用的各种Camera应用程序,并尝试了解它们的功能,但没有任何成果.

 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
            accSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
            magnetSensor = mSensorManager
                    .getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub
        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
            gravity = event.values;
        if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
            geoMagnetic = event.values;
        if (gravity != null && geoMagnetic != null) {
            float R[] = new float[9];
            float I[] = new float[9];
            boolean success …
Run Code Online (Sandbox Code Playgroud)

camera android accelerometer android-sensors

10
推荐指数
1
解决办法
1万
查看次数

如何从地面计算Android手机的高度

我正在开展一个项目,我必须从地面计算我的设备高度.我在互联网上搜索过但找不到任何解决方案.

拜托,有人告诉我该怎么做.. ??

android android-sensors

10
推荐指数
1
解决办法
9658
查看次数

智能手机GPS定位算法研究

我正在开发一个Android应用程序来根据传感器的数据计算位置

  1. 加速度计 - >计算线性加速度

  2. 磁力计+加速度计 - >运动方向

初始位置将取自GPS(纬度+经度).

现在根据传感器的读数,我需要计算智能手机的新位置:

我的算法遵循 - (但不计算准确位置):请帮助我改进它.

注意: 我的算法代码在C#中(我将传感器数据发送到服务器 - 数据存储在数据库中.我正在计算服务器上的位置)

所有DateTime对象都是使用TimeStamps计算的 - 从01-01-1970

    var prevLocation = ServerHandler.getLatestPosition(IMEI);
    var newLocation = new ReceivedDataDTO()
                          {
                              LocationDataDto = new LocationDataDTO(),
                              UsersDto = new UsersDTO(),
                              DeviceDto = new DeviceDTO(),
                              SensorDataDto = new SensorDataDTO()
                          };

    //First Reading
    if (prevLocation.Latitude == null)
    {
        //Save GPS Readings
        newLocation.LocationDataDto.DeviceId = ServerHandler.GetDeviceIdByIMEI(IMEI);
        newLocation.LocationDataDto.Latitude = Latitude;
        newLocation.LocationDataDto.Longitude = Longitude;
        newLocation.LocationDataDto.Acceleration = float.Parse(currentAcceleration);
        newLocation.LocationDataDto.Direction = float.Parse(currentDirection);
        newLocation.LocationDataDto.Speed = (float) 0.0;
        newLocation.LocationDataDto.ReadingDateTime = date;
        newLocation.DeviceDto.IMEI = …
Run Code Online (Sandbox Code Playgroud)

c# algorithm gps android android-sensors

10
推荐指数
2
解决办法
8929
查看次数

如何控制Android接近传感器?

有人可以举例说明如何使用接近传感器吗?请描述一些事件以及如何使用它们.

android proximity android-sensors

10
推荐指数
1
解决办法
5043
查看次数

打盹模式如何影响已注册的侦听器(尤其是传感器侦听器)

打盹模式如何影响已注册的侦听器?

另外,我想知道它是如何影响传感器监听器的.

我的问题是我WatchFaceService在清单中有一个唤醒锁定权限.WatchFace onTimeTick每分钟运行一次.很多时候,当设备处于打盹状态时会发生这种情况.那时它会为HR注册一个监听器来收集10个值.根据我的观察,在听众注册后,打盹模式会启动,但传感器保持活动状态.例如,HR传感器保持点亮状态.

这是正常的,为什么?这是我的观察


采样周期为0微秒的监听器:

sensorManager.registerListener(averagingSensorEventListener, sensor, averageSamplingPeriodUs, averageMaxReportLatencyUs);
Run Code Online (Sandbox Code Playgroud)

日志:

06-12 17:35:00.308 724-724/? D/android.sensor.heart_rate: Starting average calculation
06-12 17:36:01.065 724-724/? D/android.sensor.heart_rate: Event value 75.0 accepted
06-12 17:36:01.166 724-724/? D/android.sensor.heart_rate: Event value 75.0 accepted
06-12 17:36:20.471 724-724/? D/android.sensor.heart_rate: Event value 71.0 accepted
06-12 17:37:01.066 724-724/? D/android.sensor.heart_rate: Event value 72.0 accepted
06-12 17:38:01.067 724-724/? D/android.sensor.heart_rate: Event value 73.0 accepted
06-12 17:39:00.072 724-724/? D/android.sensor.heart_rate: Event value 81.0 accepted
06-12 17:39:28.135 724-724/? D/android.sensor.heart_rate: Event value 81.0 accepted
06-12 17:39:28.276 724-724/? …
Run Code Online (Sandbox Code Playgroud)

android android-sensors wear-os

10
推荐指数
1
解决办法
1257
查看次数

为什么不同智能手机的磁性值存在差异?

我需要通过两个智能手机将磁数据记录在同一表面.

我发现不同的磁场强度值知道我把智能手机放在同一个地方的同一个高度.磁力计是YAS532(sensitivity 0.2µT/LSB, Measurement Range ±1200 µT )AK09911(sensitivity 0.6µT/LSB, Measurement Range ±4900 µT ).

为什么结果是不同的,而磁场已知是恒定和稳定的?如何使用磁力计的参数校正值?

android android-sensors

10
推荐指数
1
解决办法
194
查看次数

如何使用Accelerometer测量Android应用程序开发的距离

我只是应用程序开发行业的初学者.我知道加速度计可用于沿三轴返回当前加速度,单位为米/秒平方(m/s2).但我已经知道加速度计也可以用作速度计.

我想知道如何使用加速度计来确定Android设备在兴趣点之间的行进距离.如果可能,那我该如何实现呢?我已经看到了类似的问题"我如何使用加速度计测量 Iphone行进的距离" 如何测量iPhone使用加速度计行进的距离?.但我没有达到目的.

谢谢,阿尔斯兰

android accelerometer android-sensors

9
推荐指数
2
解决办法
4万
查看次数

如何在Android中的Graph中绘制实时传感器值?

我想在Android应用程序中绘制传感器值图.

哪个图书馆最适合这个?

plot android graph real-time android-sensors

9
推荐指数
1
解决办法
1万
查看次数