当按钮保持时,Android会振动

时间:2014-02-18 09:21:38

标签: android

请帮助。这是我想要实现的,我有这个按钮,当我点击它会振动手机,这取决于你按下按钮多长时间。

就像按住按钮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

2 个答案:

答案 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"/>