diff --git a/Notesmaster/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java b/Notesmaster/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java index 85723be..095b8a8 100644 --- a/Notesmaster/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java +++ b/Notesmaster/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java @@ -83,42 +83,61 @@ public class AlarmAlertActivity extends Activity implements OnClickListener, OnD } } + /** + * 检查屏幕是否处于亮屏状态 + * @return true 表示屏幕亮着,false 表示屏幕关闭 + */ private boolean isScreenOn() { + // 获取电源管理服务 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); + // 返回当前屏幕状态 return pm.isScreenOn(); } + /** + * 播放闹铃声音 + * 注意:需要确保mPlayer已经初始化并且有适当的权限 + */ private void playAlarmSound() { + // 获取系统默认的闹铃铃声URI Uri url = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM); + // 获取静音模式影响的音频流设置 int silentModeStreams = Settings.System.getInt(getContentResolver(), Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0); + // 检查闹铃音频流是否受静音模式影响 if ((silentModeStreams & (1 << AudioManager.STREAM_ALARM)) != 0) { + // 如果受影响,使用静音模式设置的音频流 mPlayer.setAudioStreamType(silentModeStreams); } else { + // 否则使用默认的闹铃音频流 mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); } + try { + // 设置音频源 mPlayer.setDataSource(this, url); + // 准备播放器 mPlayer.prepare(); + // 设置循环播放 mPlayer.setLooping(true); + // 开始播放 mPlayer.start(); } catch (IllegalArgumentException e) { - // TODO Auto-generated catch block + // 处理非法参数异常(如无效的URI) e.printStackTrace(); } catch (SecurityException e) { - // TODO Auto-generated catch block + // 处理权限不足异常 e.printStackTrace(); } catch (IllegalStateException e) { - // TODO Auto-generated catch block + // 处理播放器状态异常(如未正确初始化) e.printStackTrace(); } catch (IOException e) { - // TODO Auto-generated catch block + // 处理IO异常(如无法读取音频文件) e.printStackTrace(); } } - private void showActionDialog() { AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setTitle(R.string.app_name);