gpt4 book ai didi

Android:如何在振动设置之间切换(始终、从不、仅在静音模式下、仅在非静音模式下)?重访

转载 作者:太空宇宙 更新时间:2023-11-03 11:19:17 28 4
gpt4 key购买 nike

问题

寻找在以下之间切换的方法:

  • 总是
  • 从不
  • 仅在静默模式下
  • 仅当不处于静默模式时

这些选项在手机上的路径---菜单>>设置>>声音>>振动---找到。

通过手机导航很容易更改(顺便说一句,我的手机是摩托罗拉 Atrix 2 和 Android 2.3.3),但我还没有找到在我的代码中使用的方法。

代码

我基本上有一些按钮,它们应该在单击时操纵振动设置。此处显示了这些按钮之一:

    bSilent.setOnClickListener(new View.OnClickListener() 
{
public void onClick(View v)
{
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);
audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF);

Toast.makeText(getBaseContext(), "Set to Never", Toast.LENGTH_SHORT).show();
}
});

audioManager 在此代码上方某处定义为:

final AudioManager audioManager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);

Android 提供了 AudioManager.setVibrateSetting,但现在已弃用。相反,它们会向您推荐 getRingerMode 方法。

http://developer.android.com/reference/android/media/AudioManager.html

但是,使用这些功能(以及它们的任意组合)并不能有效地在四种振动设置之间切换。例如,如果我从“Always”开始,我似乎不可能到达“Never”。振动方法的所有组合只会在“始终”和“仅在静音模式”之间移动。另一方面,如果我从“从不”开始,提供的方法只会在“从不”和“仅当不处于静默模式时”之间切换。

因此,假设我想让我的手机处于静音模式并希望它振动。然后,我决定不再希望它振动。我无法从“始终”或“仅在静音模式”切换到“从不”。

过去的解决方案和帖子

我知道这是 StackOverflow 上的重复帖子。这个问题之前已经提出过...

此处:Vibrate settings on Android 2.2

并且(最近)在这里:Changing vibrate setting

链接的前者提供了“答案”。 LuTHieR 在讨论中结束,并最终自己想出了办法。他引用了该网站:

https://android.googlesource.com/platform/packages/apps/Settings/+/froyo-release/src/com/android/settings/SoundSettings.java

并说“我查看了 com.android.settings.Settings 类的源代码并复制了部分启用和禁用振动的方法”。

我费力地浏览了这个网站,找不到他做了什么。谁能阐明他的解决方案?

问题

有没有人有办法在“始终”、“从不”、“仅在静默模式”和“仅在不处于静默模式时”之间精确切换?

最佳答案

我的解决方案(传入String sParam的函数路径,需要的振动模式设置,如果需要整型0-3重构):

AudioManager audioManager = getSystemService( Context.AUDIO_SERVICE);

if( Build.VERSION.SDK_INT < 16)
{
// sParam may be:
// 0 - Always
// 1 - Never
// 2 - Only in silent mode (when sound is off)
// 3 - Only when not in silent mode (when sound is on)

if( (sParam.equals( "1") == true) || (sParam.equals( "3") == true))
{
Settings.System.putInt( Static.contextApplication.getContentResolver(), "vibrate_in_silent", 0);
if( sParam.equals( "1") == true)
audioManager.setVibrateSetting( AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF);

if( sParam.equals( "3") == true)
audioManager.setVibrateSetting( AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON);
}

if( (sParam.equals( "0") == true) || (sParam.equals( "2") == true))
{
Settings.System.putInt( Static.contextApplication.getContentResolver(), "vibrate_in_silent", 1);
if( sParam.equals( "0") == true)
audioManager.setVibrateSetting( AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON);
if( sParam.equals( "2") == true)
audioManager.setVibrateSetting( AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ONLY_SILENT);
}
}
// else (for new SDK > 16 via setRingerMode() ??? )

关于Android:如何在振动设置之间切换(始终、从不、仅在静音模式下、仅在非静音模式下)?重访,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11399516/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com