1

我正在为 Android 开发一个应用程序。我有一个称为 ringtone 的方法,当满足某些条件时会调用它。我想创建一个响亮的声音并创建一个对话框来消除声音。我的代码:

    public void ringtone() {
        AudioManager manager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
        manager.setStreamVolume(AudioManager.STREAM_RING, 10, AudioManager.FLAG_SHOW_UI);
            Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            final Ringtone r= RingtoneManager.getRingtone(getApplicationContext(), notification);
        AlertDialog alertDialog = new AlertDialog.Builder(getApplicationContext()).create();
        alertDialog.setTitle("We Detected You Were Asleep");
        alertDialog.setMessage("WAKE UP!");
        alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "I am Awake", new DialogInterface.OnClickListener()
        {
                public void onClick(DialogInterface dialog, int which)
                {
                    dialog.dismiss();
                    r.stop();
                }
            });

        r.play();
        alertDialog.show();
}   

当我运行我的应用程序时,铃声音量会发生变化,但铃声不会播放。但是,当我注释掉对话框生成器时,铃声会响起。所以我的结论是对话框构建器中有一些错误不允许代码继续。

4

1 回答 1

0

我有几次想知道自己:我的对话框显示在一个活动上,该活动目前不在屏幕上。

解决方案:您需要使用活动的上下文创建构建器,应该显示对话框。

我已经使用另一个活动(我共享的主要活动)的上下文创建了构建器,这是错误的。

现在,在您的情况下,您可能必须创建并显示一个半透明的活动,在其中显示您的对话框。创建半透明活动只是清单文件中的一些设置。

于 2016-01-17T17:54:00.877 回答