java - Android:onSensorChanged 的​​替代方案?当手机背面放在 table 上时(没有移动时)没有加速度计数据

标签 java android accelerometer sensors android-sensors

所以我使用此代码来获取加速度计数据。当我在 DDMS 模式下检查打印语句正在打印的内容时,我注意到当手机不移动时没有打印任何内容。 IE。它在 table 上。我认为原因是当手机不移动时不会调用 onSensorChanged ,然后当手机再次开始移动时调用 onSensorChanged 。如果我想无论手机是否移动都捕获数据,我应该使用其他功能吗?有其他选择吗?或者有什么解决办法吗?任何帮助表示赞赏。

谢谢!

public void onSensorChanged(SensorEvent event) {  

    StringBuffer buff = new StringBuffer();
    buff.append(String.valueOf(event.timestamp));
    buff.append(comma);
    buff.append(String.valueOf(event.values[0]));
    buff.append(comma);
    buff.append(String.valueOf(event.values[1]));
    buff.append(comma);
    buff.append(String.valueOf(event.values[2]));

    mCurrentFile.println(buff.toString());
    mCurrentFile.write(buff.toString()+ '\n');

    System.out.println( "**" + buff.toString());

}

最佳答案

您可以让一个线程监听传感器变化(即,onSensorChanged() 会将数据写入全局变量),另一个线程运行计时器(查看 postDelayed) code>, http://developer.android.com/reference/android/os/Handler.html )将在设定的时间读取它。如果没有变化,那么它将再次读取相同的数据。简单、干净且对电池有益。

关于java - Android:onSensorChanged 的​​替代方案?当手机背面放在 table 上时(没有移动时)没有加速度计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5804142/

相关文章:

java - jni.h : no such file or directory

java - 用java测量网页的总加载时间

android - 使用 URL 启动应用程序

java - Android+Eclipse+Flixel - 找不到父类(super class)

java - 在 Java 中将 short 转换为 byte[]

java - 动态注册的第三方 Bean 上的类似 Spring 的后处理器 Hook

Android ACTIVITY_RECOGNITION 权限 SDK 28 在 Android 10/Q (SDK 29) 上运行

android - 为什么哔声会导致应用程序崩溃?

iphone - Objective-C : Detecting change in accelerometer

android - 加速度计的最小值和最大值范围以及传感器数据转换