【问题标题】:Background music for call [closed]通话的背景音乐[关闭]
【发布时间】:2013-01-04 03:31:05
【问题描述】:

我想开发一个应用程序,它可以为通话播放背景音乐,并且只有来电者和听众才能听到。有没有已经可用的应用程序,在android中可以吗?

【问题讨论】:

  • 不,安卓应用不能干扰通话数据。你能做的最好的就是通过扬声器播放它并希望它接听,但电话使用的音频编解码器对音乐不友好。
  • 对不起,不是。除非你卖手机。如果您是,您可以编辑 Android 本身以使其成为可能。但是应用程序没有这个能力。
  • 似乎是一个真正的问题,至少现在..

标签: android phone-call background-music


【解决方案1】:

目前没有办法做到这一点,因为硬件不支持它。

【讨论】:

  • 你确定它不能作为应用程序吗?
  • 是的。您不能通过上行链路发送音乐。操作系统和硬件都不支持它。您可以尝试在扬声器上播放音乐。虽然我不确定后面那个。
  • 硬件是有能力的,无论制造商如何。它的软件可能会或可能不会限制。
【解决方案2】:

某些移动平台确实在平台级别支持此功能(例如,我已经使用 Qualcomm APQ8064 对此进行了测试,并在其中相应地配置了硬件编解码器路由,并且它可以正常工作)。但是 Android 没有 API 可以让您将其用作应用程序开发人员,因此在没有 root 权限的手机上,您实际上无能为力。
为什么没有适用于它的 API - 或者是否会有即将推出的 Android 版本 - 我不知道。在某些市场中可能存在法律问题,或者可能只是因为它被认为是一种半晦涩的功能,他们没有看到很大的需求,并且仅得到相对少数平台的支持。

要考虑的另一件事是,您真的想在通话期间在后台播放音乐吗?
音频将是 8 kHz 单声道(或 16 kHz 单声道,如果您'在宽带通话中),它将与语音信号的其余部分一起进行 AMR 编码(AMR 是专为编码语音而设计的低比特率编解码器)。换句话说,您通过语音呼叫上行链路播放的任何音乐听起来都会非常非常糟糕。

更新:对于您具有 root 访问权限的基于 APQ8064 的手机,该过程将是这样的(我不记得确切的语法了):

audioManager.setParameters("incall_music_enabled=true");

// Execute the following using e.g. Runtime.exec()
amix 'SLIMBUS_4_RX Audio Mixer MultiMedia2' 1
aplay -Dhw:0,1 mono_8khz_data.pcm

// When you want to stop music playback, stop the aplay process, and then do
audioManager.setParameters("incall_music_enabled=false");

【讨论】:

  • google play 中有一个链接谁在做同样的事情......play.google.com/store/apps/…
  • 该应用程序的描述说“在一些三星和新的索尼爱立信手机上”。和“在大多数手机上,您无法共享音频。”
  • 即使对于某些手机,我该怎么做???
  • 我不熟悉三星的手机或平台,所以无法回答。对于您具有 root 访问权限的 Qualcomm APQ8064 平台(例如在 LG Optimus G、Sony XPeria Z/ZL 和其他一些手机上使用),请参阅我的答案中的更新。如果您没有 root 访问权限,那么我不知道您将如何执行此操作。我使用过的所有手机的默认行为是在通话期间将音乐播放混合到下行链路中;即你可以听到音乐,但对方听不到。
  • @Michael 你有时间检查一下吗? stackoverflow.com/questions/21024851/…
猜你喜欢
  • 2011-05-30
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
相关资源
最近更新 更多