首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何打开警报的系统声音,或关闭系统静音。(Android)

如何打开警报的系统声音,或关闭系统静音。(Android)
EN

Stack Overflow用户
提问于 2019-06-20 08:35:28
回答 1查看 24关注 0票数 0

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

我真的很难弄清楚声音和通知系统上的权限是如何工作的,它们在哪里重叠等。我希望用户能够有权覆盖他们的免打扰首选项。

说清楚点。是否可以进行呼叫以覆盖在设备级别为用户设置的声音或通知设置,如果有,我需要什么权限?

如果这太笼统了,我很抱歉,如果它被摘牌了,我可以理解。

EN

回答 1

Stack Overflow用户

发布于 2019-06-20 14:15:20

尝试:

代码语言:javascript
复制
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();
        }
    }
}

同样在清单中:

代码语言:javascript
复制
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56677545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档