【问题标题】:Android: vibrator method (if phone has no vibrator?)Android:振动器方法(如果手机没有振动器?)
【发布时间】:2012-02-10 09:52:39
【问题描述】:

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

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

Vibrator vi;

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

vi.vibrate(100);

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

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

【问题讨论】:

    标签: android methods vibration


    【解决方案1】:

    查看文档,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 电子市场不会过滤您的应用,因为您正在使用振动权限。所以你可以使用 uses-permission 并检查 Java 代码。

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

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

    【讨论】:

    • 请注意,hasVibrator() 是在 API 级别 11 中添加的。比这更旧的设备大多会配备振动电机,特别是如果它们(合法地)有 Android 电子市场。
    • 我已经阅读了文档,但它没有说明这一点。我在 API 7 上运行,所以我不能使用“hasVibrator”,所以如果振动器不存在会发生什么。
    • 它只会被忽略而不振动!您可以使用反射来调用这些设备的 api lvl 11 调用,这取决于您希望如何实现您的想法。
    • 非常感谢,最后一个简短的问题,如果用户拒绝许可,它会错过代码还是会阻止应用程序运行?
    • 用户不能拒绝权限。它们只是在用户下载您的应用时声明。
    【解决方案2】:

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

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

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

    您无法从市场中筛选出缺少振动电机的设备。因此,VIBRATE 权限不是if you ask for it imply a hardware feature 的权限之一。

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

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

    【讨论】:

    • 因此,如果我正在开发 API 7,我可以保留所有内容,因为它不会在市场上被过滤掉,如果没有的话,手机应该只是错过它振动器?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    相关资源
    最近更新 更多