判断是否在播放闹铃

怎么判断系统在播放闹铃?

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.

判断是否在播放闹铃,布布扣,bubuko.com

时间: 2024-10-13 20:58:15

判断是否在播放闹铃的相关文章

Android获取第三方闹钟的闹铃信息

闹铃信息采集 闹铃时间,闹铃备注信息 闹铃引起系统变化的点: 1. Send Notification 2. Play Ring 闹铃信息结构体 ClockInfo{ String apkName; String startTime; String backup; boolean isPlayingRing; } SendNotification SystemUI BaseStatusBar.java 解析ExpandedView,获取Clock发送的Notification.因为在BaseSt

Android 设置闹铃步骤和基础代码

主要分三步: 1. 设置闹铃时间; 2. 接收闹铃事件广播; 3. 重开机后重新计算并设置闹铃时间; 1. 设置闹铃时间(毫秒) private void setAlarmTime(Context context,long timeInMillis) { AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(”android.alarm

守卫农场元素碎片闹铃

守卫农场元素碎片闹铃(时间提醒) 碎片产生: 周一至周五:10:00 - 21:00 碎片产出: 60碎片/小时 120碎片/小时 240碎片/小时 360碎片/小时 480碎片/小时 初始碎片:   增加或减少初始碎片 (当掠夺或被掠夺时可用) 碎片上限: 1500碎片 3000碎片 6000碎片 12000碎片 20000碎片 30000碎片 提醒方式: 声音.标题栏闪动.弹框.弹窗 倒计时: 未计算 下次收获: 未计算 碎片消耗: 未计算   作者QQ/手机:15059818923    

JS判断Flash是否播放结束

JS判断Flash是否加载完成 (function () { var flash = 网页上某个flash对象. var interval = setInterval(function () { try { if(flash.IsPlaying()) { //轮询flash的某个方法即可 callBack && callBack.call(flash, args); //回调函数 clearInterval(interval); } } catch (ex) { } }, 1000); v

[UE4]判断UI动画播放方向

使用一个变量来记录播放的方向. 原文地址:https://www.cnblogs.com/timy/p/9158092.html

【非凡程序员】 OC第十四节课 (代理模式 二 闹铃响了)

这是一个人定闹钟的例子,就是人委托闹钟叫醒自己 main函数: #import <Foundation/Foundation.h>#import "Person.h"#import "Clock.h" int main(int argc, const char * argv[]) {    @autoreleasepool  {        // insert code here...        NSLog(@"Hello, World!

简单闹铃

static void Main(string[] args) { DateTime a = DateTime.Now; DateTime nz=Convert.ToDateTime("2015-4-2 17:30"); while (true) { a = a.AddMinutes(1); if (nz.ToShortTimeString().Equals(a.ToShortTimeString())) { Console.WriteLine(a + "起床啦!"

cocos2dx3.2 判断音效是否播放

SimpleAudioEngine类中加入一函数 如下 bool isEffectPlaying(unsigned int nSoundId); 定义如下 bool SimpleAudioEngine::isEffectPlaying(unsigned int nSoundId) { EffectList::iterator p = sharedList().find(nSoundId); bool bRet = false; if (p != sharedList().end()) { bRe

FAQ-MT6250,11B1132MP,录音过程中来闹铃,没有铃声

跟综下来发现control_sound这个函数中if (behavior == MMI_NOTI_SND_BEHA_NO_PLAY){#ifdef MMI_NOTI_MGR_UTplay_sound = MMI_FALSE;snd_action = action;play_sound_id = tone_id;#endif /* MMI_NOTI_MGR_UT */return;}返回了.修改方法:关注//add begin和//add end 之间的语句.static MMI_BOOLcont