请帮助。这是我想要实现的,我有这个按钮,当我点击它会振动手机,这取决于你按下按钮多长时间。
就像按住按钮5秒钟一样,振动将是5秒。
就像节流
一样protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button) findViewById(R.id.start);
b.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Vibrator vb = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
while((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_DOWN){
vb.vibrate(100);
}
return false;
}
});
}
在我的代码中,振动就像这样每100毫秒停止一次。它也撞坏了手机
la la la la la la la la
我想要实现这样的振动。您点击并按住的时间越长,它就会振动
laaaaaaaaaaaaaaaaaaaaaaaaaaa
答案 0 :(得分:3)
你有代码来启动振动。你可以将持续时间增加到一个不切实际的东西让某人用手指按住(10分钟?)。
当他们举起手指时取消
public boolean onTouch(View v, MotionEvent event) {
Vibrator vb = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
if((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_DOWN){
vb.vibrate(1000*60*10);//10mins
return true;
}
if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP){
vb.cancel();
return false;
}
答案 1 :(得分:0)
import android.os.Vibrator;
Vibrator v = (Vibrator) this.context.getSystemService(Context.VIBRATOR_SERVICE);
public boolean onTouch(View v, MotionEvent event) {
boolean isReleased = event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL;
boolean isPressed = event.getAction() == MotionEvent.ACTION_DOWN;
if (isReleased) {
// do whatever you want
} else if (isPressed) {
v.vibrate(500);
}
return false;
}
注意:
不要忘记在AndroidManifest.xml文件中包含权限:
<uses-permission android:name="android.permission.VIBRATE"/>