如何通过Android API关闭所有声音和振动

12

我正在开发一个Android应用程序,当应用程序启动时,我想要禁用设备的所有声音和振动。

由于我是新手,所以无法找到如何实现这一点。

有任何想法吗?

先谢谢了。

3个回答

14

谢谢! :) 我回答自己来完成回答:

AudioManager aManager=(AudioManager)getSystemService(AUDIO_SERVICE);
aManager.setRingerMode(aManager.RINGER_MODE_SILENT);

这个方法可以实现,但会关闭所有应用程序的设备声音。同时也会关闭TalkBack功能。仅供参考。 - edhnb
@mtb 顺便说一下,F 不是元音字母 ;) - Muhammad Babar

4

请查看这里,并查看具有RINGER_MODE_SILENT选项的public void setRingerMode (int ringerMode)


0

您需要首先在清单文件中添加更改音频设置的权限。要能够将铃声模式设置为静音,您必须请求访问通知策略的权限。

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />

然后在 onClick 事件中(下面是针对一个 textView 的),您可以逐个切换声音设置:

    // attach an OnClickListener
    audioToggle.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            // your click actions go here
            NotificationManager notificationManager = (NotificationManager) getActivity().getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);

            // Check if the notification policy access has been granted for the app.
            if (!notificationManager.isNotificationPolicyAccessGranted()) {
                Intent intent = new Intent(android.provider.Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
                startActivity(intent);
                return;
            }
            ToggleDoNotDisturb(notificationManager);
            }
    });  


  private void ToggleDoNotDisturb(NotificationManager notificationManager) {
    if (notificationManager.getCurrentInterruptionFilter() == NotificationManager.INTERRUPTION_FILTER_ALL) {
        notificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE);
        audioToggle.setText(R.string.fa_volume_mute);
    } else {
        notificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_ALL);
        audioToggle.setText(R.string.fa_volume_up);
    }
}

同时你需要检查权限

     NotificationManager mNotificationManager = (NotificationManager) getActivity().getSystemService(Context.NOTIFICATION_SERVICE);

 // Check if the notification policy access has been granted for the app.
 if (!mNotificationManager.isNotificationPolicyAccessGranted()) {
     Intent intent = new Intent(android.provider.Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
     startActivity(intent);
 }

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