【问题标题】:How can I find out if a device has a vibrator?如何确定设备是否有振动器?
【发布时间】:2011-10-11 17:00:35
【问题描述】:

我有一个设备,我不知道它是否有振动器。

有没有办法查询振动器的可用性?

【问题讨论】:

  • 这听起来很愚蠢,但如果它是您想知道的特定设备,您就不能在线查看规格吗?
  • 该问题旨在记录一个鲜为人知的课程。 ;)
  • @Octavian:您可能对this 感兴趣。结果是this list of questions

标签: android hardware


【解决方案1】:

Vibrator 类就是这样做的。 hasVibrator() 方法返回一个布尔值,指示是否支持振动。

  1. 获取作为系统服务的 Vibrator 类的实例。
  2. 使用hasVibrator() 方法查询振动器类。
String vs = Context.VIBRATOR_SERVICE;
Vibrator mVibrator = (Vibrator)getSystemService(vs);

boolean isVibrator = mVibrator.hasVibrator();

【讨论】:

  • [仅从 API 级别 11 (Android 3.0.x)](developer.android.com/reference/android/os/…. 你如何在设备
  • 在 Honeycomb 之前有没有没有振动器的设备?
  • 我不知道,而且我很确定无论如何都会根据您的清单文件从设备中过滤该应用程序(使用权限 android.permission.VIBRATE)。但是为什么要添加这个?从蜂窝及以上开始的设备是否不受相同的过滤?这只是为制造商准备的东西吗?
  • 我的办公桌上有这样一个设备 --- 它运行 Gingerbread 并且没有振动器。带有 android.permission.VIBRATE 的应用可以正常安装。
  • 如果设备不支持震动,getSystemService返回的Vibrator是否为空?
【解决方案2】:

这可能对 API 有所帮助

Context.getSystemService() 返回一个服务对象,如果没有服务则返回null

if ( getSystemService(VIBRATOR_SERVICE) != null ) {
    //Vibrator exists
}

【讨论】:

    【解决方案3】:

    您需要(至少)支持 Android 3.0 (11 HoneyComb) 才能使用 hasVibrator()。

    奇怪的是,您可以在任何/所有版本上使用 vibrate() 本身。

    所以真正的问题是:v1 - v10 如何检测设备是否有振动器? (或者,如果您尝试在没有振动器的情况下振动设备,不会发生任何不好的事情吗?)

    【讨论】:

    • 我的真正的问题是我问的。如果您还有其他更具体的问题,请提出一个新问题。
    【解决方案4】:

    也许它会帮助某人。 由于我正在构建 PWA,因此我最终检查了屏幕尺寸:

      if (window.innerWidth < 600) {
        window.navigator.vibrate(300);
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      相关资源
      最近更新 更多