如何为特定来电提供自定义振动

     2023-04-14     135

关键词:

【中文标题】如何为特定来电提供自定义振动【英文标题】:How to provide customized vibration on specific incoming calls 【发布时间】:2012-02-06 16:36:23 【问题描述】:

程序的功能是这样的:用户有一个电话号码列表,只有当没有其他系统范围的应用程序提供振动(例如在静音模式下)时,手机才能在来电时振动。我知道这在某种程度上违反了规则,因为应用程序应该尊重用户的设置,但应用程序仅限于某些有此需求的用户。我尝试了两种方法,但都不满意:

    监听电话状态,直接用我自己的pattern(用Vibrator.vibrate())触发震动服务。这种方法在手机处于CALL_STATE_RINGING状态时有效,没有来电但随机有效,我猜这是因为与实际处理来电振动的系统范围的应用程序冲突。

    来电时判断手机是否振动(AudioManager.shouldVibrate()),决定是否改变振动设置(AudioManager.setRingerMode()AudioManager.setVibrateSetting())。如果我的应用程序更改了振动设置,一旦手机回到CALL_STATE_IDLE 状态,它们将被恢复。但是,这种方法有时仍然不起作用,没有任何原因。

我希望有人可以就这个问题提供一些建议。欢迎对这两种方式发表评论或提出其他建议。

【问题讨论】:

@Rizon 很遗憾,没有,这个问题为我赢得了风滚草徽章。 这不一样,但有人尝试在来电时禁用振动,但事实证明这是不可能的,但您的发现很有趣:***.com/q/8065862/969325 @Warpzit 谢谢。看来如果我能在 Ringer 之前收到广播,问题就解决了。我不知道该怎么做,也许我应该检查一下 Ringer.java。 setVibrateSetting()setRingerMode() 似乎可以在我的手机上使用。你能发布你的代码吗? @SergeyGlotov 好吧,实际上它们也适用于我的手机。问题出现在我朋友正在测试的设备上。我只是在寻找一些更强大的方法。代码太长太复杂,恐怕不是问题所在。 【参考方案1】:

您需要使用两种设置才能让您的手机振动。第一个是声音模式,需要使用 AufioManager 设置:

AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(targetSoundMode);

第二部分没有正确记录,我认为这是您的代码中缺少的部分:

String VIBRATE_IN_SILENT_SETTING_NAME = "vibrate_in_silent";
Settings.System.putInt(getContentResolver(), VIBRATE_IN_SILENT_SETTING_NAME, 1);

使用 1 打开振动,使用 0 关闭振动。

要全面了解您应该如何使用振动设置和模式,请查看以下链接: http://hi-android.info/src/com/android/settings/SoundSettings.java.html

【讨论】:

感谢您的回答!但这不是阻止振动器的原因,因为vibrate_in_silent 已经设置为 1。Phone.apk 是否有可能在我们触发后立即取消振动器?根据VibratorService.java,振动器在这种情况下会随机运行。这就解释了为什么这个问题只出现在某些手机上:Phone.apk 不是系统的一部分。 你看过上面链接中的 setPhoneVibrateSettingValue 函数了吗?这两个设置之间存在一些依赖关系,应该非常小心地处理 依赖是我错过的东西。我将在更多设备上对依赖项进行一些测试。提前致谢! +1 给你。 链接已失效。我有同样的问题。你能帮我吗? @Prince 您好,您可以在最新发布代码中查看SoundSettings.java。

如何为特定视图的导航栏设置自定义背景图像

】如何为特定视图的导航栏设置自定义背景图像【英文标题】:HowtoSetthecustombackgroundimagefornavigationbarofaspecificview【发布时间】:2013-05-1905:21:31【问题描述】:我在应用程序delegate.m中使用此代码:-(BOOL)application:(UIApplication*)applicati... 查看详情

如何为 Vuepress 的特定页面使用自定义布局?

】如何为Vuepress的特定页面使用自定义布局?【英文标题】:HowcanIuseCustomLayoutforSpecificPagesoftheVuepress?【发布时间】:2020-05-2610:31:43【问题描述】:我正在尝试使用我自己的vuepress自定义布局,步骤如下:从VuePress文档中的Homepagesty... 查看详情

如何为反应表 7 提供自定义排序功能?

】如何为反应表7提供自定义排序功能?【英文标题】:Howdoesonesupplyacustomsortfunctionforreacttable7?【发布时间】:2021-01-0317:36:32【问题描述】:documentionforuseSortBysortType属性说:sortType:String|Function(rowA:<Row>,rowB:<Row>,columnId:String... 查看详情

如何为 HTML 验证提供自定义验证错误消息?

】如何为HTML验证提供自定义验证错误消息?【英文标题】:HowtogivecustomvalidationerrormessagesforHTMLvalidations?【发布时间】:2019-05-2117:47:28【问题描述】:当我使用默认HTML验证时,它会显示默认错误消息,而我不想向我的客户显示这... 查看详情

如何为可编码对象提供自定义代码功能

】如何为可编码对象提供自定义代码功能【英文标题】:howtoprovideacustomcodefunctoencodableobject【发布时间】:2018-12-2613:47:25【问题描述】:有一种方法可以使我的oncode函数适用于我的可编码结构,我面临的问题是我可以从网络对其... 查看详情

如何为 ios 本地通知内容提供自定义辅助功能文本 - UNNotificationContent

】如何为ios本地通知内容提供自定义辅助功能文本-UNNotificationContent【英文标题】:HowdoIprovidecustomaccessibilitytextforioslocalnotificationcontent-UNNotificationContent【发布时间】:2019-07-1018:56:31【问题描述】:我正在尝试为画外音用户提供自... 查看详情

如何为 ASP.NET MVC 2 创建自定义成员资格提供程序?

】如何为ASP.NETMVC2创建自定义成员资格提供程序?【英文标题】:HowdoIcreateacustommembershipproviderforASP.NETMVC2?【发布时间】:2011-02-1519:09:47【问题描述】:如何根据ASP.NET成员资格提供程序为ASP.NETMVC2创建自定义成员资格?【问题讨论... 查看详情

如何为 Elastic Beanstalk 的 Tomcat 实例提供自定义日志附加程序?

】如何为ElasticBeanstalk的Tomcat实例提供自定义日志附加程序?【英文标题】:HowtoprovideacustomlogappendertoElasticBeanstalk\'sTomcatinstance?【发布时间】:2019-09-2517:42:00【问题描述】:如何将包含自定义日志附加程序的自定义jar文件拖放到To... 查看详情

如何为 NavigationView 中的单个菜单项提供自定义图标颜色?

】如何为NavigationView中的单个菜单项提供自定义图标颜色?【英文标题】:HowtogivecustomiconcolorforasinglemenuiteminaNavigationView?【发布时间】:2016-03-2100:23:51【问题描述】:我正在使用安卓导航视图。我想为NavigationView中的某些项目提... 查看详情

如何为特定的mongo文档实现TTL

】如何为特定的mongo文档实现TTL【英文标题】:HowtoimplementTTLforspecificmongodocuments【发布时间】:2021-11-1900:27:29【问题描述】:首先为您提供一些背景信息,我的服务会临时存储通知。有一个最大TTL(由管理员预定义),但是我想... 查看详情

如何为客户特定数据使用通用变量

】如何为客户特定数据使用通用变量【英文标题】:HowDoIUseGenericVariablesforCustomerSpecificData【发布时间】:2017-05-2521:22:27【问题描述】:我创建了一个包含常用变量的通用dll。我有用户定义的占位符字段,因此我们可以保存客户特... 查看详情

如何为 chai expect 提供 mocha 单元测试的自定义错误消息?

】如何为chaiexpect提供mocha单元测试的自定义错误消息?【英文标题】:Howtoprovidechaiexpectwithcustomerrormessageformochaunittest?【发布时间】:2018-01-2212:56:48【问题描述】:我有一个使用chai的期望的mocha测试:it("shouldparsesailsoutofcachefile",as... 查看详情

如何为导航控制器提供自定义 UIViewControllerAnimatedTransitioning 并使用默认 UIViewControllerInteractiveTransitioning

】如何为导航控制器提供自定义UIViewControllerAnimatedTransitioning并使用默认UIViewControllerInteractiveTransitioning【英文标题】:HowtoprovidecustomUIViewControllerAnimatedTransitioningandusedefaultUIViewControllerInteractiveTransitioningforanavig 查看详情

如何为具有与内置单元格相同的布局指标的“UITableView”提供自定义“UITableCell”?

】如何为具有与内置单元格相同的布局指标的“UITableView”提供自定义“UITableCell”?【英文标题】:HowcanIsupplyacustom`UITableCell`toan`UITableView`withthesamelayoutmetricsthatabuilt-incellwouldhave?【发布时间】:2018-05-3010:40:43【问题描述】:当我... 查看详情

如何为排毒 e2e 测试提供自定义测试文件路径

】如何为排毒e2e测试提供自定义测试文件路径【英文标题】:howtogivecustomtestfilespathfordetoxe2etesting【发布时间】:2018-09-2107:44:38【问题描述】:我们正在使用Detox框架进行IOSe2e测试。Detox默认创建e2e文件夹并运行在其下创建的所有... 查看详情

如何为uilabel使用自定义字体[重复]

】如何为uilabel使用自定义字体[重复]【英文标题】:howtousecustomfontforuilabel[duplicate]【发布时间】:2014-01-0500:17:45【问题描述】:嗨,我正在使用自定义字体xcode5。它的字体系列名称是“AlegreSans”我在网上遵循了许多在xcode中使用... 查看详情

iPhone:如何为自定义键盘制作按键声音?

】iPhone:如何为自定义键盘制作按键声音?【英文标题】:iPhone:howtomakekeyclicksoundforcustomkeypad?【发布时间】:2009-05-0401:38:04【问题描述】:有没有办法以编程方式调用键盘“点击”声音?我的应用程序有一个自定义键盘(由UIButt... 查看详情

如何为uitableview自定义多选编辑模式

】如何为uitableview自定义多选编辑模式【英文标题】:Howtocustomizemultiselecteditmodeforuitableview【发布时间】:2014-02-2510:27:35【问题描述】:是否可以自定义多选编辑模式?因此,我需要显示一个自定义的图标,而不是默认的选择图... 查看详情