Android 4.1 VIBRATE and HapticFeedback


4.1的震子变成一个服务,调用方式有所变化:

private static final int VIBRATE_DURATION = 15;
private Vibrator mVibrator;
mVibrator = (Vibrator) launcher.getSystemService(Context.VIBRATOR_SERVICE);
mVibrator.vibrate(VIBRATE_DURATION);
//以前的用法如下:
private Vibrator mVibrator = new Vibrator();
mVibrator.vibrate(VIBRATE_DURATION);
//END

一般也可以利用view的HapticFeedback来实现触摸点击反馈:

v.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
                        HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING); 

该参数在设置的声音选项触摸时振动设置并存储为系统数据,view在刷新绘制时会获取该值然后进行振动回馈。

有时候需要定制一个view的振动强度这时候我们可以两者搭配使用:

public void performVibrate(int adjustment){	
		int val = new Settings.System().getInt(getContentResolver(),Settings.System.HAPTIC_FEEDBACK_
			ENABLED,0);	
       if (DEBUG_WIDGETS) {	
           Log.d(TAG,"-----performVibrate for onLongClick----" + val);
       }	
       if (val != 0){
           mVibrator.vibrate(VIBRATE_DURATION + adjustment);	
       }	
    }
定制化view的振动时需要关闭它自身的HapticFeedback,不然会出现振动时间和设值不一致的情况:

launcher.setupViews:mWorkspace.setHapticFeedbackEnabled(false);
AppsCustomizePagedView.syncAppsPageItems:icon.setHapticFeedbackEnabled(false);



猜你喜欢

转载自blog.csdn.net/aaa2832/article/details/8831073