You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android实现文本显示或按钮点击时设备振动的方法

Android设备振动实现分步指导

1. 添加振动权限

首先在项目的AndroidManifest.xml文件中添加振动权限,这是实现振动的必要前提:

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

如果应用目标是Android 13(API 33)及以上,需额外添加通知权限(部分设备要求):

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

2. 封装通用振动方法

在你的Story类中添加通用振动工具方法,兼容不同Android版本,避免重复代码:
先导入所需包:

import android.os.Build;
import android.os.VibrationEffect;

再添加方法:

private void vibrateDevice(long milliseconds) {
    // 获取系统振动服务
    Vibrator vibrator = (Vibrator) h1.getSystemService(Context.VIBRATOR_SERVICE);
    // 检查振动器是否可用
    if (vibrator != null && vibrator.hasVibrator()) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            // Android 8.0及以上使用VibrationEffect API
            vibrator.vibrate(VibrationEffect.createOneShot(milliseconds, VibrationEffect.DEFAULT_AMPLITUDE));
        } else {
            // 旧版本直接调用vibrate方法
            vibrator.vibrate(milliseconds);
        }
    }
}

3. 文本框显示内容时触发振动

在所有设置h1.text.setText()的方法中,调用封装好的振动方法。示例修改:

public void hospital11() {
    h1.character.setVisibility(View.VISIBLE);
    h1.character.setImageResource(R.mipmap.nurse2);
    h1.text.setText("你的文本内容");
    // 文本显示时振动500毫秒
    vibrateDevice(500);
    t = "h12";
}

public void hospital12() {
    h1.character.setVisibility(View.INVISIBLE);
    h1.text.setText("另一段文本");
    // 文本显示时振动500毫秒
    vibrateDevice(500);
    t = "h13";
}

4. 点击选项按钮时触发振动

在设置选项按钮的方法(如hospital1select1)中,给按钮添加点击监听,先振动再执行跳转逻辑:

public void hospital1select1() {
    h1.character.setVisibility(View.INVISIBLE);
    h1.text.setVisibility(View.INVISIBLE);
    showButton();
    h1.choice1.setVisibility(View.INVISIBLE);
    h1.choice4.setVisibility(View.INVISIBLE);
    h1.choice2.setText("选项2");
    h1.choice3.setText("选项3");

    c2 = "h16a";
    c3 = "h16b";

    // 选项2点击振动
    h1.choice2.setOnClickListener(v -> {
        vibrateDevice(300);
        selectNext(c2);
    });

    // 选项3点击振动
    h1.choice3.setOnClickListener(v -> {
        vibrateDevice(300);
        selectNext(c3);
    });
}

5. 测试验证

运行应用后测试两个场景:

  • 文本框更新内容时,设备是否振动
  • 点击选项按钮时,设备是否振动

注:部分模拟器不支持振动功能,建议使用真实设备测试。

内容的提问来源于stack exchange,提问作者Myungwon Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:11:09