电话监听器特定免打扰逻辑实现咨询及代码验证
实现免打扰随电话状态自动切换的电话监听器
最近我开发了一款电话监听器(Phone Listener),它能识别电话的**ringing(响铃)和idle(空闲)**两种状态,核心实现了以下逻辑:
- 当**Do Not Disturb(免打扰)**未开启时:电话响铃时自动打开免打扰,电话停止响铃回到空闲状态后,自动关闭免打扰
- 当免打扰已经开启时:不执行任何操作
目前实际运行完全符合预期,尤其是电话停止响铃时,免打扰会自动关闭这一点表现得很稳定。
以下是核心代码片段:
// 假设已提前初始化NotificationManager和用于记录免打扰初始状态的变量wasDoNotDisturbEnabled switch (state) { case CALL_STATE_RINGING: assert notificationManager != null; // 检查当前免打扰是否未开启 if (notificationManager.getCurrentInterruptionFilter() != NotificationManager.INTERRUPTION_FILTER_NONE) { // 开启免打扰模式 notificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE); // 标记初始状态为未开启,方便后续恢复 wasDoNotDisturbEnabled = false; } else { // 免打扰已开启,记录状态 wasDoNotDisturbEnabled = true; } break; case CALL_STATE_IDLE: assert notificationManager != null; // 如果之前是因为电话响铃才开启的免打扰,现在恢复原状 if (!wasDoNotDisturbEnabled) { notificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_ALL); } break; }
内容的提问来源于stack exchange,提问作者Code Poet
相关产品推荐
相关产品推荐

