5

我正在尝试使用以下代码在 android 中播放默认警报声音-

private void startAlarm() {
        Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
        if (alert == null) {
            alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            if (alert == null) {
                alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
            }
        }
        MediaPlayer mMediaPlayer = new MediaPlayer();
        try {
            mMediaPlayer.setDataSource(getActivity().getApplicationContext(), alert);
            AudioManager audioManager = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
            int volumen = audioManager.getStreamVolume(AudioManager.STREAM_ALARM);
            if (volumen != 0) {
                mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
                mMediaPlayer.setLooping(true);
                mMediaPlayer.prepare();
                mMediaPlayer.start();
            }
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

但它抛出以下异常 -

08-01 10:59:10.478: E/MediaPlayer(4529): Unable to to create media player
08-01 10:59:16.158: W/System.err(4529): java.io.IOException: setDataSource failed.: status=0x80000000
08-01 10:59:16.166: W/System.err(4529):     at android.media.MediaPlayer.setDataSource(Native Method)
08-01 10:59:16.174: W/System.err(4529):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:745)
08-01 10:59:16.174: W/System.err(4529):     at android.media.MediaPlayer.setDataSource(MediaPlayer.java:675)

我调试了 Uri 警报的代码和值是

content://settings/system/alarm_alert

我无法弄清楚为什么它无法创建媒体播放器并抛出该异常?有人可以指出问题出在哪里。

提前致谢

4

0 回答 0