- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
今晚我在传感器方面遇到了很多麻烦,但似乎是因为没有调用 onSensorChanged()。很抱歉最终出现重复问题,但我没有看到任何解决方案。这是我的代码:
public SensorManager manager;
public Sensor rotation_vector;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
manager = (SensorManager)getSystemService(SENSOR_SERVICE);
rotation_vector = manager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
}
@Override
public void onSensorChanged(SensorEvent event) {
int xValue = (int) event.values[0];
int yValue = (int) event.values[1];
int zValue = (int) event.values[2];
Toast.makeText(getApplicationContext(),"this doesn't appear...",Toast.LENGTH_LONG);
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
//TODO: we'll see later about it
}
public void onPause() {
/*Et on le dés-enregistre quand on sort de l'activité, pour économiser de la batterie*/
super.onPause();
manager.unregisterListener(this);
}
@Override
protected void onResume() {
/*On enregistre le sensor quand l'utilisateur revient sur l'activité*/
super.onResume();
manager.registerListener(this, rotation_vector, SensorManager.SENSOR_DELAY_NORMAL);
if (null != rotation_vector) {
} else {
Toast.makeText(getApplicationContext(),
"There is no gyroscope on your device",
Toast.LENGTH_LONG).show();
}
}
我在不同的论坛上看到了很多类似的代码,但来自 there和其他一些没有解决方案的主题,我还没有看到这样的问题......我必须在 AndroidManifest 中添加一些东西吗?这是一个常见问题吗?有解决办法吗?
谢谢,托马斯(抱歉我的英语不好,我是法国人^^)
最佳答案
到目前为止我还没有使用传感器,但看起来您已经获得了 SensorManager
但没有为应该发生的更改注册任何监听器。问问自己如何调用 onSensorChanged
?
查看 official android tutorial site 上的示例关于传感器,您可以在 onResume()
方法中看到:
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_NORMAL);
}
另外不要忘记研究整个页面,它会对您有很大帮助。
编辑:
我不得不复制粘贴您的源代码,因为我没有发现任何问题。基本上有 2 个:
Toast.show()
将显示它。但是您宁愿使用 Log
将更改输出到控制台。由你决定onSensorChanged()
方法中将 float 重新键入 int,因为所有值都是 0 或(1/-1,如果幸运的话)结果如下:
@Override
public void onSensorChanged(SensorEvent event) {
float xValue = event.values[0];
float yValue = event.values[1];
float zValue = event.values[2];
Log.d(LOG_TAG, "x:"+xValue +";y:"+yValue+";z:"+zValue);
}
其他方法都正确
关于java - onSensorChanged() 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28159716/
这是我的职责。 public void onSensorChanged(SensorEvent event) { if (event.sensor.getType()
我有以下函数来监听加速度计和磁力计值: // Storage for Sensor readings public float[] mGravity = new float[3]; pub
我昨天刚开始使用 android 和 java,但遇到了问题。我正在尝试将传感器的值输出到某些 TextView。文本更新,但使用定义时设置的值。 onSensorChanged 应该更新这些值吗?
我正在开发一个可穿戴应用程序,我注意到一个奇怪的行为。我有一个类 FooService extends Service implements SensorEventListener 并且我重写了 on
我有一个 SensorEventListener,它在 onSensorChanged() 方法中执行如下操作: public void onSensorChanged(SensorEvent e){
我试图在 1 秒内获得 100 个加速度计读数,但它不是 100 个不同的读数,而是 100 次给出 1 个相同的读数。 当我按下应用程序中的按钮时,我尝试显示这 100 个加速度计读数 我的 Mai
我读过一些关于哪个线程调用各种回调方法的讨论,例如与传感器关联的回调方法。大多数声称 UI 线程调用回调 - 即使涉及单独的工作线程。我们确定吗? 考虑这种情况:一个单独的类实现 Runnable 和
今晚我在传感器方面遇到了很多麻烦,但似乎是因为没有调用 onSensorChanged()。很抱歉最终出现重复问题,但我没有看到任何解决方案。这是我的代码: public SensorManager
我正在编写 Android 应用程序,但在使用加速度计时遇到了一些问题。奇怪的是,我的函数 onSensorChanged() 没有被调用,我不知道为什么:/你能帮帮我吗? :) 这是我的代码: @S
我正在尝试开发一个检测跌倒的应用程序,到目前为止,跌倒的准确性在可接受的范围内,但问题是“OnSensorChanged”的调用过于频繁,导致 toast 不断出现在我的屏幕上. 我认为问题在于,在自
我需要在另一种方法中使用传感器的值。我不知道如何从 onSensorChanged() 方法获取值。 我尝试创建一个全局字段,在其中写入传感器值,但在 onSensorChanged() 方法之外该字
当我使用onSensorChanged()测试手机的加速度计时,发现它响应速度很快。几乎每1~3msonSensorChanged()就会被激活。我查了一些其他手机的信息,感觉有点奇怪,所以我怀疑我的
我是 Android 开发新手。我正在构建一个简单的 Android 应用程序,它分析加速计传感器数据并使用 MediaPlayer 播放声音。 SensorEventListener 实现代码:
当传感器打开时,onSensorChanged 上有数据 连续。 我想: 开启传感器 10 秒,每隔 10 秒读取一次数据。 关闭传感器 20 秒。 不断重复同一件事(步骤 1 到 2)。 我使用 S
我已经编写了一种通过网络发送 UDP 消息的方法。它工作正常。 在那之后,我尝试使用我的 Galaxy S 智能手机的加速计传感器。我得到了加速计值,并将它们显示在屏幕上。当值发生变化时(onSens
我将传感器用作 Sensor.TYPE_ACCELEROMETER。我正在按如下方式实现 OnSensorChanged() 方法: @Override public void onS
我正在使用传感器加速度计,我想知道它是否可能以及如何在 onSensorChanged 中运行两个东西。1. 我想将加速度计数据 x、y、z 始终存储在现场2. 如果检测到抖动,运行另一个 Activ
这是我的问题的后续:Android thread runnable performance 我在思考应用程序的同步方法时遇到了一些困难 我轮询传感器并在传感器值发生变化时将其存储到数组中 float[
只是想知道,有没有办法在 Android 手机上获取光传感器的值,而无需等待 onSensorChanged() 事件发生?为了节省电量,我在获得单个 lux 值后使用 registerListene
我需要检查移动设备是否处于水平位置(没有横向,我的意思是就像你把它放在 table 上一样)。 我知道我必须使用“SensorEventListener”接口(interface)和“onSensor
我是一名优秀的程序员,十分优秀!