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 に答える