标签: accelerometer

如何在android中使用加速度计跟踪路径?

我想创建一个跟踪 android 中路径的应用程序。我使用以下代码来计算不同方向的加速度。

package com.example.usrivast.accelerometer;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;


public class MainActivity extends Activity implements SensorEventListener{

Sensor accelerometer = null;
SensorManager sm = null;
TextView acceleration = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    sm = (SensorManager)getSystemService(SENSOR_SERVICE);
    accelerometer = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    sm.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
    acceleration = (TextView)findViewById(R.id.acceleration);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar …
Run Code Online (Sandbox Code Playgroud)

c++ java android accelerometer

3
推荐指数
1
解决办法
1897
查看次数

Android:SensorManager.getRotationMatrix 和 SensorManager.getOrientation() 的算法

要在 Android 中从欧拉角(例如俯仰、滚转、方位角)中获取方向,需要执行以下操作:

  1. SensorManager.getRotationMatrix(float[] R, float[] I, float[] Gravity, float[] geomagnetic);
  2. SensorManager.getOrientation(float[] R, float[]orientation);

在第一个中,我意识到它使用了一种 TRIAD 算法;旋转矩阵(R[])由重力、地磁X重力、重力X(地磁X重力)---X为叉积组成。
请参阅以下代码:

    float Ax = gravity[0];
    float Ay = gravity[1];
    float Az = gravity[2];
    final float Ex = geomagnetic[0];
    final float Ey = geomagnetic[1];
    final float Ez = geomagnetic[2];
    float Hx = Ey*Az - Ez*Ay;
    float Hy = Ez*Ax - Ex*Az;
    float Hz = Ex*Ay - Ey*Ax;
    final float normH = (float)Math.sqrt(Hx*Hx + Hy*Hy + Hz*Hz);
    if (normH < 0.1f) {
        // device is …
Run Code Online (Sandbox Code Playgroud)

android rotation accelerometer orientation magnetometer

3
推荐指数
2
解决办法
3844
查看次数

使用 Javascript 检测摇动事件,适用于所有主要浏览器/设备(iOS、Android)

我读过Javascript。监听 iPhone 震动事件?检测html5 mobile 中的晃动,这为检测手机“晃动”事件提供了一个很好的解决方案:

<script src="shake.js"></script>
<script>
var myShakeEvent = new Shake({threshold: 15, timeout: 1000});
myShakeEvent.start(); 
window.addEventListener('shake', function() { alert('shake!'); }, false); 
</script>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎不适用于最新的 iOS 设备,并且此问题表明应为最新的 iOS 版本授予特殊权限。请注意,此处的代码不容易在 shake.js 库中使用。

问题:截至 2022 年,有哪种方法可以使用 Javascript 检测“摇动”事件,适用于主要浏览器(Firefox、Chrome、Safari)和移动设备(iOS、Android)?

如果首先出现一个请求许可的弹出窗口(例如请求地理定位请求许可的弹出窗口),那就可以了。

javascript mobile accelerometer shake

3
推荐指数
1
解决办法
6079
查看次数

禁用Blackberry Storm上的加速度计

我为Blackberry开发应用程序.在Storm 1(4.7)和Storm 2(5.0)中,我需要在我的应用程序中禁用加速度计.我希望我的应用程序不会对加速度计做出反应,但这不会影响其他应用程序.这是可能的?

blackberry accelerometer blackberry-storm

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

加速计是否适用于iphone/ipad模拟器?

据我所知,我的应用程序应该在我使用XCode中的iPad模拟器时触发加速度计事件,但事实并非如此.

我已经google了一下,似乎加速计没有在模拟器中实现,这是正确的吗?如果是这样,为什么他们会有一个"硬件 - >摇动手势"菜单选项?

我的代码如下:

.h文件:

@interface MyViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate, UIAccelerometerDelegate>{
    UIAccelerometer *accelerometer;
    //...other stuff
}
@property (nonatomic, retain) UIAccelerometer *accelerometer;
@end
Run Code Online (Sandbox Code Playgroud)

那么.m文件:

@implementation MyViewController
@synthesize accelerometer;
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    NSLog(@"%@", [NSString stringWithFormat:@"%@%f", @"X: ", acceleration.x]);
    NSLog(@"%@", [NSString stringWithFormat:@"%@%f", @"Y: ", acceleration.y]);
    NSLog(@"%@", [NSString stringWithFormat:@"%@%f", @"Z: ", acceleration.z]);
}

- (void)viewDidLoad {
    [super viewDidLoad];
    self.accelerometer = [UIAccelerometer sharedAccelerometer];
    self.accelerometer.updateInterval = .1;
    self.accelerometer.delegate = self;
}
@end
Run Code Online (Sandbox Code Playgroud)

这看起来不错吗?

iphone accelerometer ipad ios-simulator

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

Android加速度计毫秒还是微秒?

所以我使用HTC EVO获得加速度计数据.我得到这样的价值观.

967454610000 967534902000 967613576000 967692434000

这些值之间的差异大约是80,000,000.文档说:"该值必须是SENSOR_DELAY_NORMAL,SENSOR_DELAY_UI,SENSOR_DELAY_GAME或SENSOR_DELAY_FASTEST之一.或者,事件之间所需的延迟,以微秒为单位."

所以我使用的是SENSOR_DELAY_UI,我认为时间是微秒.这没有意义,因为这意味着每个时间间隔大约是80秒.如果它们以纳秒为单位意味着时间间隔约为0.08秒或每秒捕获12个数据,那将更有意义.但那会与文件相矛盾.有谁知道时间间隔是多少?

非常感谢!

java android sensor accelerometer android-sensors

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


从C++中的函数返回数组

美好的一天:)我正在研究从加速度计和陀螺仪获得俯仰,偏航和滚转角度的代码.为了创建一个易于理解的更清晰的代码,我使用了两个不同的功能.一个用于计算俯仰偏转和俯仰的陀螺仪,另一个用于加速度计也可以做同样的事情.

float *readGyro(){
    /*get data from sensor here*/
    float gyroAngles[4]={gyroPitch,gyroRoll,gyroYaw};
    float* gyroPRY=gyroAngles;
    return gyroPRY;
}

float *readAccel(){
    /*get data from sensor here*/
    float accelAngles[4]={accelPitch,accelRoll,accelYaw};
    float* accelPRY=accelAngles;
    return accelPRY;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我将函数的输出存储到一个数组中以传递给main函数.基本上指针被传递.但是,在从传递的指针访问值时,会打印常量垃圾值(不会随着我移动IMU而改变)(例如,2.38221e-44和-3.84146e-06).我通过打印这些函数中的值来检查陀螺仪和加速度计的功能输出,它们很好.

int main(void){
    float *accelData;
    float *gyroData;

    while(1){
    accelData=readGyro();
    gyroData=readAccel();

    float accelPitch=*(accelData);
    float accelRoll=*(accelData+1);
    float accelYaw=*(accelData+2);

    float gyroPitch=*(gyroData);
    float gyroRoll=*(gyroData+1);
    float gyroYaw=*(gyroData+2);

    cout << "AccelPitch=" << accelPitch <<endl;
    cout << "AccelRoll=" << accelRoll <<endl;
    cout << "AccelYaw=" << accelYaw <<endl;
    cout << "GyroPitch=" << gyroPitch <<endl;
    cout << "GyroRoll=" << gyroRoll …
Run Code Online (Sandbox Code Playgroud)

c++ arrays pointers accelerometer gyroscope

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

如何使用Android中游戏旋转矢量中的数字?

我正在开发一个AR应用程序,需要根据设备的位置和方向移动图像.

似乎Game Rotation Vector应该提供必要的数据来实现这一目标.但是我似乎无法理解从GRV传感器获得的值是什么.例如,为了在Z轴上达到相同的值,我必须将设备旋转720度.这看起来很奇怪.

如果我能以某种方式将这些数字转换为从设备的参考系朝向x,y,z坐标的角度,我的问题就会得到解决.

我已经搜索了这个问题好几天了,没有找到关于GRV坐标含义以及如何使用它们的任何合理信息.

TL:DR GRV传感器的数量显示什么?以及如何将它们转换为角度?

android vector accelerometer augmented-reality gyroscope

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

消除重力对IOS iphone加速度计的影响

我遇到了accelometer的问题.

如果设备平躺,我得到(0,0,-1),这显然是不对的.当我旋转手机时,这个-1会移动到其他轴,具体取决于手机的位置.

到目前为止,我的代码非常简单:

 override func viewDidAppear(_ animated: Bool) {

    motionManager.accelerometerUpdateInterval = 0.1
    motionManager.startAccelerometerUpdates(to: OperationQueue.current!){(data,error)
        in
        if let myData = data {
            print(Double(myData.acceleration.y)  )
  }
Run Code Online (Sandbox Code Playgroud)

accelerometer gravity ios swift

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