2014-02-17 28 views
0

如果有任何方法使用像“Normal_Delay,...”那样的常数来改变其他的andriod传感器的延迟。如何以编程方式设置Android传感器的延迟?

我想提出的延迟值,因为我喜欢。如果这是可能的?

其实,我找到了一个解决方案,通过使用“处理程序”,但它不工作。

这里是处理器的解决方案,但它不起作用:

public void registerSensorListener() { 
    String sensorName = PackageManager.FEATURE_SENSOR_ACCELEROMETER; 
    if (mHandlerThread == null) { 
     mHandlerThread = new HandlerThread("sensorThread"); 
    } 
    if (!mHandlerThread.isAlive()) { 

     if (SensorUtil.isDeviceHasSensor(sensorName, 
       activity.getApplication())) { 
      mHandlerThread.start(); 
      handler = new Handler(mHandlerThread.getLooper()); 
      mSensorManager.registerListener(this, mAccelerometer, 1000000, 
        handler); 
      eventHandler.isDeviceHasSensor(true); 
     } else { 
      Log.d("Device dos't have Sensor ", 
        PackageManager.FEATURE_SENSOR_ACCELEROMETER); 
      eventHandler.isDeviceHasSensor(false); 
     } 
    } else { 
     Log.d("Your Sensor is registered", sensorName); 
    } 

} 

像这样

HandlerThread mHandlerThread创建处理程序; 处理程序处理程序;

mHandlerThread =新HandlerThread( “sensorThread”);

+0

'通过使用 “处理程序” 找到了一个解决方案,但它不work.' ......您可以发布代码你尝试过什么? FYI-你不能改变不是'SENSOR_DELAY_FASTEST','SENSOR_DELAY_GAME','SENSOR_DELAY_UI'其他传感器延迟时间和'SENSOR_DELAY_NORMAL' ... –

+0

好的尝试这些... SENSOR_DELAY_UI,SENSOR_DELAY_GAME,或SENSOR_DELAY_FASTEST –

+0

感谢您的回复,我会立即发布@GopalRao –

回答

2

最后,我创建了一个解决方案来解决这个问题,它通过使用澄清This现在你可以设置自定义的延迟将Android传感器可以完美兼容我..!

实现它如下:

package com.example.android.location; 

public class Sensor extends Activity implements SensorEventListener { 
Handler handler; 
int interval= 1000; // read sensor data each 1000 ms 
boolean flag = false; 
boolean isHandlerLive = false; 
private Sensor mGravity; 
private SensorManager mSensorManager; 

private final Runnable processSensors = new Runnable() { 
    @Override 
    public void run() { 
     // Do work with the sensor values. 

     flag = true; 
     // The Runnable is posted to run again here: 
     handler.postDelayed(this, interval); 
    } 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // you can initialize this wherever you want... 
    handler = new Handler(); 
    mSensorManager = (SensorManager) getApplication().getSystemService(
      Context.SENSOR_SERVICE); 
    mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    mSensorManager.registerListener(this, mGravity, 
      SensorManager.SENSOR_DELAY_NORMAL); 

    handler.post(processSensors); 
} 

@Override 
public void onPause() { 
    handler.removeCallbacks(processSensors); 

    super.onPause(); 
} 

@Override 
public void onSensorChanged(SensorEvent event) { 
    if (flag) { 
     // TODO Auto-generated method stub 
     // Update UI for one reading every one second... 
     Log.d("Sensor Data of X", event.values[0] + ""); 
     Log.d("Sensor Data of Y", event.values[1] + ""); 
     Log.d("Sensor Data of Z", event.values[2] + ""); 

     // 
     flag = false; 
    } 

} 

@Override 
public void onAccuracyChanged(android.hardware.Sensor arg0, int arg1) { 
    // TODO Auto-generated method stub 

} 

}

享受:d

+0

是的,它的工作:) –

+0

很棒...享受你的编码:D –

相关问题