点击震动

26

有没有一种方法可以让按钮在 if 条件被验证时振动?

这是代码:

Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE) ;

if(l2>=l1){
        insertactone.setBackgroundColor(Color.RED);

    };

这是用于insertactone的onclick方法:

einsertactone = (Button) findViewById(R.id.bsqlinsertactone);
    insertactone.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.bsqlinsertactone:
                insertactoneClick();
                break;
            }
        }

        private void insertactoneClick() {
            startActivity(new Intent(
                    "com.example.everydaybudgetplanner.ACTONESQLENTRY"));
        }

    });

我希望只有在验证了 IF 条件后它才会振动。

5个回答

58

如果条件验证通过,有办法使按钮振动吗?

是的。看起来您已经完成了95%的代码。您在哪里卡住了?

您已经有一个Vibrator对象和一个条件语句了。现在您需要做的就是调用vibrate()方法,像这样:

Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

if(l2 >= l1) {
    insertactone.setBackgroundColor(Color.RED);
    vibe.vibrate(100);
}

别忘了你需要添加

<uses-permission android:name="android.permission.VIBRATE" />

在你的 AndroidManifest.xml 文件中。


1
你已经采取了什么调试步骤?“它不工作”是什么意思?它是否崩溃?它是否编译通过? - Bryan Herbst
问题是,每次我启动包含这段代码的活动时,它都会震动。我希望只有在我按下按钮时才会震动。 - Rui Miranda
然后将 vibrate() 调用(和条件语句)移动到 onClick() 中。 - Bryan Herbst
1
一个选项是将您的Activity更改为实现OnClickListener(而不是像您现在所做的那样创建匿名OnClickListener)。 - Bryan Herbst
1
我会尝试的!谢谢你的帮助。 - Rui Miranda
显示剩余4条评论

3

对于Kotlin:

首先,您需要将以下内容添加到您的清单文件中。

<uses-permission android:name="android.permission.VIBRATE"/>

代码:

private var vibration = activity?.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator

if (Build.VERSION.SDK_INT >= 26) {
    vibration.vibrate(VibrationEffect.createOneShot(200, VibrationEffect.DEFAULT_AMPLITUDE))
} else {
    vibrator.vibrate(200)
}

1
private fun vibrateOnce(context: Context) {
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
       val vibratorManager =  context.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
       val vib  = vibratorManager.defaultVibrator;
       vib.vibrate(VibrationEffect.createOneShot(100,1 ))
   } else {
       val vib  = context.getSystemService(VIBRATOR_SERVICE) as Vibrator
       vib.vibrate(500)
    }
}

1
请确保在AndroidManifest中添加了以下权限:<uses-permission android:name="android.permission.VIBRATE" />

1
这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - Vini.g.fer
3
这句话的意思是:“这个回答可能完全错误,但这并不意味着我们应该滥用审查队列来删除它。” - Undo

0

请确保您的手机已启用振动功能。 因为我关闭了它。最终意识到错误不在代码中,而是在我的默认设置中。这段代码可以正常工作。

生成振动的清单权限:

<uses-permission android:name="android.permission.VIBRATE"/>

onCreate函数中或者你的按钮所在的函数中添加以下代码:

final Vibrator vibe = (Vibrator) yourActivity.this.getSystemService(Context.VIBRATOR_SERVICE);

yourActivity.this替换为你自己的活动,或者如果你声明了一个上下文,可以写成context.getSystemService(Context.VIBRATOR_SERVICE);

我们可以从任何地方调用它:

`vibe.vibrate(80);` 

80 表示震动的持续时间为毫秒

`


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接