如何检测音频当前是不是正在 Android 手机扬声器上播放?

Posted

技术标签:

【中文标题】如何检测音频当前是不是正在 Android 手机扬声器上播放?【英文标题】:How to detect if the audio is currently playing on an Android phone speaker?如何检测音频当前是否正在 Android 手机扬声器上播放? 【发布时间】:2019-05-27 02:09:49 【问题描述】:

当在设备扬声器(不是有线耳机和蓝牙接收器)上完成音频播放时,我需要在我的应用中进行一些自定义行为。 为此,我正在执行以下操作

    AudioManager audioManager = (AudioManager) service.getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
    isSpeakerPhoneOn = audioManager.isSpeakerphoneOn();

但 isSpeakerPhoneOn 总是为假。 顺便说一句,我是在播放开始后调用代码。

知道我做错了什么吗?

【问题讨论】:

【参考方案1】:

我建议你试试这个

AudioManager manager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
if(manager.isMusicActive())
 
     // do something - or don't
 

【讨论】:

即使我正在通过 BT 耳机收听,这也将返回 true 您要检查扬声器是否在播放或蓝牙耳机是否在播放? 我想知道手机扬声器是否有声音 是的 isMusicActive() 应该可以完美运行!用于手机扬声器...我不知道它是否适用于BT耳机 它在播放过程中返回true,无论它是否通过BT接收器路由

以上是关于如何检测音频当前是不是正在 Android 手机扬声器上播放?的主要内容,如果未能解决你的问题,请参考以下文章

Android:检测用户是不是停止使用手机一段时间

Android - 查找当前是不是正在播放音频并停止它

如何检测其他应用程序是不是正在播放背景音频?

如何以编程方式检测 android 手机是不是处于静音模式

如何使用套接字编程在两个 android 手机之间创建实时音频流..?

如何检测断开的蓝牙音频设备是当前播放音乐流的设备?