首页 > 代码库 > 判断是否在播放闹铃
判断是否在播放闹铃
怎么判断系统在播放闹铃?
AudioManager里有个方法isMusicActive()来判断当前是否在播放音乐。
对于闹铃呢?目前没找到相关的API。
两种解决方法:
1. 在AudioManager里增加方法,需要改动源码。可以参考Android获取第三方闹钟的闹铃信息
2. 通过反射。
反射的解决方法:
/** * Unhide android api: check is stream is active now (AudioManager.STREAM_RING, AudioManager.STREAM_NOTIFICATION...), * uses reflection * @param audioStream * @return */ public static boolean isStreamActive(int audioStream) { Class<?> audioSystemClazz = null; Boolean res = false; try { audioSystemClazz = Class.forName("android.media.AudioSystem"); if (null != audioSystemClazz) { // isStreamActive Method method = audioSystemClazz.getDeclaredMethod("isStreamActive", new Class<?>[] { int.class, int.class }); if (null != method) { res = (Boolean) method.invoke(null, audioStream, 0); } } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } return res; }
你只需要传递你所要检测的Stream type.对于闹铃一般用的是ALARM.
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。