Android:可控震源方法(如果手机没有可控震源?)

Android:可控震源方法(如果手机没有可控震源?),android,methods,vibration,Android,Methods,Vibration,我想在我的应用程序中使用可控震源方法,我的手机上有一个很棒的可控震源。然而,没有振动器的手机会发生什么。它根本不起作用吗?它会停止应用程序工作吗?或者它根本就没有出现在市场上?或者我必须问电话是否有振动器 我也想知道这个代码是好的还是需要调整?这是我的密码 Vibrator vi; vi = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); vi.vibrate(100); <uses-permission android:

我想在我的应用程序中使用可控震源方法,我的手机上有一个很棒的可控震源。然而,没有振动器的手机会发生什么。它根本不起作用吗?它会停止应用程序工作吗?或者它根本就没有出现在市场上?或者我必须问电话是否有振动器

我也想知道这个代码是好的还是需要调整?这是我的密码

Vibrator vi;

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

vi.vibrate(100);

<uses-permission android:name="android.permission.VIBRATE" /> (In manifest)
vi;
vi=(可控震源)getSystemService(Context.可控震源服务);
振动(100);
(舱单中)
谢谢,任何帮助都会很好。

检查文档

您只需检查手机上是否有振动器,如下所示:

 Vibrator vi;

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

 if(vi.hasVibrator()){
     vi.vibrate(100);
 }
由于振动许可,Android market可能会过滤你的应用程序,使其仅适用于带有振动的手机。为了避免这种情况,可以使用属性为required=“false”的标记


所有这些都记录在这里:

但是

没有振动功能字符串,因此Android Market不会过滤你的应用程序,因为你正在使用振动权限。因此,您的ok使用权限并在Java代码中进行检查

设备需要一个可控震源才能与android市场兼容,但亚马逊和其他应用程序市场(Barnes&Noble Nook没有可控震源)当然不需要

这是由Dianne Hackthorn(谷歌安卓首席开发人员)对此帖子的回复:

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

您的振动请求应该被忽略

或者它根本就没有出现在市场上

你无法从市场上筛选出缺少振动电机的设备。因此,
振动
权限不是其中之一

或者我必须问电话是否有振动器


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

注意,
has可控震源()
是在API级别11中添加的。比这更老的设备大多会有振动马达,特别是如果它们(合法地)有安卓市场的话。我读过文件,它没有提到这一点。我在API7上运行,所以我不能使用“has可控震源”,所以如果可控震源不存在会发生什么。它将被忽略,不会振动!您可以使用反射来调用这些设备的api lvl 11调用,这取决于您希望如何实现您的想法。非常感谢,最后一个简短的问题是,如果用户拒绝权限,它会错过代码还是会停止应用程序的工作?用户不能拒绝权限。他们只是在用户下载你的应用程序时声明。因此,如果我正在使用API 7,我可以保留我现在拥有的一切,因为在市场上它不会被过滤掉,如果没有振动器,手机就应该错过它?
 <uses-permission android:name="android.permission.VIBRATE" />
 <uses-feature android:name="there.isnt.a.vibrate.feature" android:required="false" />