繁体   English   中英

如何为警报打开系统声音,或关闭系统静音。 (机器人)

[英]How do I turn the system sound on for an alarm, or turn off the system mute. (Android)

我正在构建一个需要警报的应用程序,如果用户将其设备静音或将其设置为DND,我想知道如何覆盖它。

我真的在努力清楚详细说明声音和通知系统的权限如何工作,它们重叠的位置等等。我希望让用户启用权限以覆盖其DND首选项。

要清楚。 我是否可以拨打电话来覆盖声音或通知设置设置在设备级别购买用户,如果有,我需要什么权限?

如果这太笼统并且了解它是否已被摘牌,我很抱歉。

尝试:

private void playSound(Context context, int soundResId, int volFactor) {
    if (context != null) {
        try {
            MediaPlayer mediaPlayer = new MediaPlayer();
            AssetFileDescriptor assetFileDescriptor = context.getResources().openRawResourceFd(soundResId);
            if (assetFileDescriptor != null) {
                mediaPlayer.setDataSource(assetFileDescriptor.getFileDescriptor(), assetFileDescriptor.getStartOffset(), assetFileDescriptor.getLength());
                assetFileDescriptor.close();
            }
            if (mediaPlayer != null) {
                mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        try {
                            mediaPlayer.reset();
                            mediaPlayer.release();
                        } catch (Exception e) {
                            e.printStackTrace();
                        } finally {
                            mp = null;
                        }
                    }
                });
                mediaPlayer.setOnErrorListener(new OnErrorListener() {
                    @Override
                    public boolean onError(MediaPlayer mp, int what, int extra) {
                        try {
                            mediaPlayer.reset();
                            mediaPlayer.release();
                        } catch (Exception e) {
                            e.printStackTrace();
                        } finally {
                            mp = null;
                        }
                        return true;
                    }
                });
                AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
                am.setStreamVolume(AudioManager.STREAM_ALARM, am.getStreamMaxVolume(AudioManager.STREAM_MUSIC)/volFactor, 0);
                mediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
                mediaPlayer.prepare();
                mediaPlayer.start();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

也在清单中:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM