Android 方向传感器 + Low Pass Filter +补间动画的一个Demo


Android 方向传感器 Low Pass Filter 和 High Pass Filter的实现

 

实现了两个小球,一个小球为白色他使用Low Pass Filter 过滤掉高频,一个小球为蓝色,过滤掉低频,根据加速度方向移动。

在摇晃手机的时候,可以看到两个小球的运动,白色的小球运动比较平滑,蓝色的小球运动比较跳跃,在针对开发的问题,High Pass Filter 可以侦测到用户摇晃手机。Low Pass Filter 可以侦测用户往哪个方向有加速度。

 

针对Low Pass Filter,有一个参数为 SMOOTHING,该参数的范围从(1.0-0):

 

	// Low Pass Filter key parameter this value should be from 0 to 1,
	// when 1 means the least smoothness and 0 means no move at all, my
	// value is 0.3f.
	private static float SMOOTHING = 0.3f;
	private static float THRESHOLD_VAL = 80f;


1.  1.0表示一点也不平滑

2.  这个值取0则将不会移动

另外有一个阀值 THRESHOLD_VAL,该参数我取的是80,如果加速度波动超过这个范围,我则简单的舍弃(实际可根据需要进行判断)他表示用户急剧的改变方向。

 

针对High Pass Filter,使用采集样本的方式进行,判断,我的样本数为30个,这个是一个经验值,

 // Sample count.
 private static final int ELEMENT_COUNT = 30;

 

根据样本的值,取出中间值,作为高频下加速度的一个修正:

	private float getMedian(float[] values) {

		float[] tmp = values.clone();

		Arrays.sort(tmp);

		int len = tmp.length;

		int first = 0;
		for (int i = 0; i < tmp.length; i++) {
			first = i;
			if (tmp[i] != BLANK) {
				break
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值