我正在做一个应用程序,用户按下一个按钮来使手机振动,我不确定如何让它只有在按下按钮时才振动,到目前为止我的代码是。
package one.two.bn;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.widget.Button;
import android.view.View.OnClickListener;
public class Vb extends Activity {
/** Called when the activity is first created. */
private Button button1;
private Vibrator vibrator;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
public void onClick(View v) {
if(v==button1){
vibrator.vibrate(300000);
}
}
如果有什么可以帮上忙的,非常感谢。
发布于 2011-04-24 23:52:09
试试这段代码
Vibrator vibe = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE) ;
然后在按钮的OnClickListener
中:
vibe.vibrate(50); // 50 is time in ms
别忘了您需要将权限添加到清单中(在</application>
标记之后):
<uses-permission android:name="android.permission.VIBRATE" />
我也同意Tim的观点,因为onTouchListener
是在点击之前调用的,所以它为你的应用程序提供了最好的输出。
发布于 2014-10-03 19:15:41
如果您需要像ActionMode或ContextMenu那样的长按反馈振动,
view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
v.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
return true;
}
});
发布于 2011-04-24 23:45:19
使用OnTouchListener()
而不是onClick()
。
在侦听器内部,当调用MotionEvent.getAction() == MotionEvent.ACTION_DOWN
时,您将调用vibrator.start(some arbitrarily large number here perhaps 1 minute or more)
当getAction() == MotionEvent.ACTION_UP
调用vibrator.cancel().
时
这样,当你按下它时,它就会开始振动,当你提起它时,它就会停止振动。
https://stackoverflow.com/questions/5770935
复制相似问题