6

我想在我的应用程序中使用振动器方法,并且我已经让它在我的手机上工作,它有一个很棒的振动器。但是没有振动器的手机会发生什么。它根本不起作用吗?它会停止应用程序的工作吗?还是根本没有出现在市场上?或者我必须问手机是否有振动器?

我也想知道这段代码是否良好或需要任何调整?这是我的代码..

Vibrator vi;

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

vi.vibrate(100);

<uses-permission android:name="android.permission.VIBRATE" /> (In manifest)

谢谢,任何帮助都会很棒。

4

2 回答 2

18

检查文档,http://developer.android.com/reference/android/os/Vibrator.html

您需要做的就是检查手机上是否存在振动器,如下所示:

 Vibrator vi;

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

 if(vi.hasVibrator()){
     vi.vibrate(100);
 }

由于振动许可,Android 市场可能会将您的应用过滤为仅具有振动功能的手机。为避免这种情况,您可以使用带有 required="false" 属性的标签

 <uses-permission android:name="android.permission.VIBRATE" />
 <uses-feature android:name="there.isnt.a.vibrate.feature" android:required="false" />

这一切都记录在这里:

http://developer.android.com/guide/topics/manifest/uses-permission-element.html

http://developer.android.com/guide/topics/manifest/uses-feature-element.html

然而

没有振动功能字符串,因此 Android Market不会过滤您的应用,因为您正在使用振动权限。因此,您可以使用使用权限并检查 Java 代码。

设备需要振动器才能与安卓市场兼容,但这当然不适用于亚马逊和其他应用市场(Barnes & Noble Nook 没有振动器)。

这得到了 Dianne Hackthorn(Google 的 Android 首席开发人员)对此线程的回复的支持: http ://groups.google.com/group/android-developers/browse_thread/thread/7713e796ea2d0f5f

于 2012-01-14T16:10:41.743 回答
3

它根本不起作用吗?它会停止应用程序的工作吗?

您的振动请求应该被简单地忽略。

还是根本没有出现在市场上?

您无法从市场中筛选出缺少振动电机的设备。因此,如果您要求VIBRATE许可,则该许可不是暗示硬件功能的许可之一。

或者我必须问手机是否有振动器?

您可以在 API 级别 11 及更高级别上 - 请参阅 Blundell 的答案。

于 2012-01-14T16:17:33.990 回答