Java 如何在Android中设置闹钟铃声
我正在做一个报警应用程序,我被困在报警音阶段。我目前正在尝试使用RingtoneManager设置闹钟铃声,但它根本不起作用。此外,我有一个seekbar可以播放用户选择的报警音,但它没有。当我设置报警音调时,我不希望它是默认的,只希望它是该报警的音调,因为用户可以选择创建多个报警 这是seekbar代码:Java 如何在Android中设置闹钟铃声,java,android,eclipse,android-intent,Java,Android,Eclipse,Android Intent,我正在做一个报警应用程序,我被困在报警音阶段。我目前正在尝试使用RingtoneManager设置闹钟铃声,但它根本不起作用。此外,我有一个seekbar可以播放用户选择的报警音,但它没有。当我设置报警音调时,我不希望它是默认的,只希望它是该报警的音调,因为用户可以选择创建多个报警 这是seekbar代码: volumeBar = (SeekBar) findViewById(R.id.seekBarVolume); audioManager = (AudioManager) g
volumeBar = (SeekBar) findViewById(R.id.seekBarVolume);
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
mMediaPlayer = new MediaPlayer();
volumeBar.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM));
volumeBar.setKeyProgressIncrement(1);
volumeBar.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_ALARM));
volumeBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
try {
Uri alert = RingtoneManager
.getDefaultUri(RingtoneManager.TYPE_ALARM);
mMediaPlayer.setDataSource(getApplicationContext(), alert);
if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0 && !mMediaPlayer.isPlaying()) {
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
mMediaPlayer.setLooping(true);
mMediaPlayer.prepare();
mMediaPlayer.start();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
audioManager.setStreamVolume(AudioManager.STREAM_ALARM, progress, AudioManager.FLAG_SHOW_UI);
}
});
这是铃声选择器的目的:
case R.id.buttonAlarmTones:
try {
mMediaPlayer.release();
mMediaPlayer.stop();
} catch (Exception e) {
// TODO: handle exception
}
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALL);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, RingtoneManager.getActualDefaultRingtoneUri(getApplicationContext(), RingtoneManager.TYPE_ALARM));
startActivityForResult(intent, 5);
break;
最后,这里是onActivityResult():
任何帮助都将不胜感激。谢谢。这里是一个使用RingtoneManager的示例
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
Ringtone ringtone = RingtoneManager.getRingtone(context, uri);
ringtone.play();
您不需要MediaPlayer。使用seekbar后,如何循环
铃声.play()
?我可能需要使用medidaplayer。我看不到侦听器,但您可以轮询Ringtone.isPlaying()。不是说这很好,但这是一个选择。更不用说我发现了为什么它没有循环。一些“铃声”是通知音。无论如何,谢谢你帮我解决了我的问题<代码>铃声只是铃声而不是警报声。因此,如果铃声音量已静音,ringtone.play()
即使未静音报警声音也不会响起<代码>铃声。play()无论报警声是否静音,都会继续发出声音。所以这只是误用了铃声
贴在那里的代码对我来说非常合适
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
Ringtone ringtone = RingtoneManager.getRingtone(context, uri);
ringtone.play();