我正在创建一个应用程序,用户按住一个按钮,使手机振动,我不知道如何制作,只有当按钮按下它振动,我的代码到目前为止。
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);
}
}
如果有任何可以帮助感谢很多。
答案 0 :(得分:66)
试试此代码
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
在点击之前被调用,因此它可以为您的应用提供最佳输出。
答案 1 :(得分:32)
如果您需要像ActionMode或ContextMenu那样的长按反馈振动,
view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
v.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
return true;
}
});
答案 2 :(得分:6)
使用OnTouchListener()
代替onClick()
。
在MotionEvent.getAction() == MotionEvent.ACTION_DOWN
时,您将在vibrator.start(some arbitrarily large number here perhaps 1 minute or more)
内拨打getAction() == MotionEvent.ACTION_UP
{1}}拨打vibrator.cancel().
这样,当你按下时它会开始振动,当你抬起时会停止。
答案 3 :(得分:0)
button1.setOnClickListener(new View.OnClickListener() {
[...]
public void onClick(View v) {
if(v==button1){ // <- Don't need that...
// Do Stuff...
}
}});
如果对'onClickListener'使用内部类,则不需要检查View是否为Button,因为只有Button可以触发'onClick'方法。
此外,如果您希望手机在按住按钮时振动,请使用'onLongClick'-method。
答案 4 :(得分:-2)
在清单文件中添加振动权限。