在安卓系统中,是否有可能通过程序来关闭静音模式?

28

在Android中,是否可以使用编程的方式关闭静音模式?


@Mat,好的,那个问题是关于iPhone的,这个是关于Android的。我怀疑那个问题的答案对OP没有帮助。 - aioobe
5个回答

66

这是为你准备的解决方案。

AudioManager am;
am= (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE);

//For Normal mode
am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

//For Silent mode
am.setRingerMode(AudioManager.RINGER_MODE_SILENT);

//For Vibrate mode
am.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);

3
这个答案在2013年仍然有效吗?我记得我读过最近的某个更新说明这不再可行了。 - temporary_user_name
2
你好?我能在这里得到一个答案吗? - temporary_user_name
1
在三星、Nexus和Moto设备上工作正常,但在小米设备上无法运行。有什么办法可以在小米设备上实现吗? - Abhi
这需要什么权限? - M. Usman Khan
2
一个小更新:根据文档,“从N开始,除非应用程序已被授予Do Not Disturb访问权限,否则不允许切换勿扰模式的铃声模式调整。” -> 这意味着您不能更改静音模式而不请求DnD权限。 - E.Akio
显示剩余3条评论

10
//SilentToNomal and NormalToSilent device Programatically
 final AudioManager mode = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
//Silent Mode Programatically
mode.setRingerMode(AudioManager.RINGER_MODE_SILENT);

//Normal Mode Programatically
  mode.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

6
解决方案:
AudioManager audio_mngr = (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE);
audio_mngr .setRingerMode(AudioManager.RINGER_MODE_SILENT);

如何使其反向,静音模式后如何设置回正常模式。 - sandy
@sandy,你可以尝试使用RINGER_MODE_NORMAL(http://developer.android.com/reference/android/media/AudioManager.html#RINGER_MODE_NORMAL)吗? - Aman Alam

0

是的,可以通过编程来打开和关闭静音模式,以下是代码:

AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);

设置静音模式:

audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

对于普通模式:

audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

0
int normal = 2;
int vibrate = 1;
int silent = 0;
int RingerMode;
public static AudioManager AUDIOMANAGER;

@Override
public void onCreate() {
    super.onCreate();

    AUDIOMANAGER= (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE);
    if (AUDIOMANAGER.getRingerMode() == normal) {
                    AUDIOMANAGER.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                    RingerMode = normal;
    } else if (AUDIOMANAGER.getRingerMode() == vibrate) {
                    AUDIOMANAGER.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                    RingerMode = vibrate;
                }
    //And after do all your jobs..... you can return to previous mode:
                    AUDIOMANAGER.setRingerMode(RingerMode);

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接