0
我已經在我的應用程序中實現了傳感器功能。現在2分鐘振動處於激活模式後,由於設備得到了一些運動並且傳感器得到了工作。我想讓傳感器激活只有當用戶手動移動device.There不應該對sensor.Following振動的效果是我code.Thanks用於提前...在傳感器模式下振動設備
vib= (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
vib.vibrate(val);
@Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER) {
float x=event.values[0];
float y=event.values[1];
float z=event.values[2];
float deltaX = Math.abs(mLastX - x);
float deltaY = Math.abs(mLastY - y);
float deltaZ = Math.abs(mLastZ - z);
if(deltaX>NOISE){
compareX();
}
else if(deltaY>NOISE){
compareX();
}
else if(deltaZ>NOISE){
compareX();
}
mLastX = x;
mLastY = y;
mLastZ = z;
}
}
private void compareX() {
mStartTime = SystemClock.uptimeMillis();
mHandler.removeCallbacks(mUpdateTimeTask);
mHandler.postDelayed(mUpdateTimeTask, 100);
vib.cancel();
stopService(new Intent(getApplicationContext(),AlarmService.class));
System.out.println("Movemenet>><><><><><><>><Occur");
}
是啊你是對的..它應該因設備而異。我只在三星Galaxy S3中遇到這個問題。在其他設備上沒有振動對Sensor的影響。請幫我解決這個問題。 –
請Gabe試圖幫助我解決這個問題..由於它我的應用程序沒有交付給客戶端... :( –
我建議測量它的振動有多快,做一些數字信號處理 - 使用帶隙過濾以允許通過除該範圍的值以外的所有內容。 –