草庐IT

android - 需要关于在安卓/非安卓设备之间通过 A2DP 发送/接收音频的想法

coder 2023-12-28 原文

我需要能够通过蓝牙发送和接收音频,似乎 A2DP 就是这样做的

使用给定的代码 here ,我设法让我的手机检测并与远程蓝牙设备配对,然后建立 A2DP 连接,通过蓝牙将 android 设备的所有音频输出发送到远程设备

我以前能够通过 RFCOMM 与同一个远程蓝牙设备进行这种两种方式的数据通信(尽管 android 手机需要是启动通信的设备,但我无法通过远程设备进行通信,尽管我知道它是可能的)。一旦建立了 RFCOMM 链接,android 设备就可以向远程设备发送数据,也可以从远程设备接收数据

我现在需要的是类似的东西,但用于音频(最好使用 A2DP,但我愿意使用其他任何东西,只要它能完成工作)。在四处窥探时,我得到提示,无法通过 A2DP 在手机上接收音频数据(至少是一个无根的普通数据,对我来说不是一个选项)(例如,参见 here) .但我也见过允许完全通过蓝牙调用电话的耳机(好吧,实际上是无线的,我假设它必须是蓝牙)。例如,来电时,只需按下蓝牙耳机上的一个按钮,即可通话和听对方讲话。如果手机不能用作音频接收器,那么此类耳机是如何做到的呢?

我需要一些关于我应该如何编写一个 android 应用程序以通过蓝牙发送和接收音频数据的想法(为简单起见,我们将其视为类似于 Bluechat sample program ,但涉及音频而不是文本)。有可能吗(通过java)?只能通过NDK吗?市面上的设备是怎么做到的?它与 A2DP 的配置文件不同吗?

PS:我的测试设备是带有 Gingerbread 的 Samsung Galaxy 2(手机)和带有 KitKat 的 Asus Nexus 7(平板电脑)。顺便说一下,远程蓝牙设备(它是一个开发板)带有一个示例项目,可以将开发板变成 A2DP 音频源。如果我在开发板上运行这个示例项目,使用手机和平板电脑的内置蓝牙设置,我可以与远程开发板配对,但安卓设备收不到任何音频。

最佳答案

有两种不同的 A2DP 配置文件,A2DP sourceA2DP sink。 Android 支持 A2DP source 配置文件,因此您可以将音乐从您的设备流式传输到接收器(如蓝牙扬声器)。据我所知,A2DP sink 配置文件未启用,这就是为什么您无法将音乐流式传输到手机并让它充当扬声器的原因。我只是在一段时间前用谷歌搜索才知道这一点,所以事情可能已经改变了。

可以通过编辑 /etc/bluetooth/audio.conf 并重启手机来启用 A2DP sink 配置文件。不幸的是,这具有禁用 A2DP source 配置文件的副作用,因此不能在广泛分布的应用程序中使用。另一个缺点是没有太多的 java 软件堆栈可用于处理该配置文件,因此您必须做很多工作才能使事情顺利进行。

回答您关于为什么耳机能够连接到 Android 的问题,那是因为耳机使用不同的配置文件,称为 Headset profile (HSP),通常由耳机使用,或 Handsfree profile (HFP) 常用于汽车。两种配置文件都有两个方面:客户端和网关端(手机)。这两个配置文件的音频质量被认为是语音质量。 8 或 16kHz 采样率和糟糕的编解码器。还有很多用于接听/调用电话等的协议(protocol)...我不确定您是否可以在没有主动连接到电话网络的情况下传输音频。

关于android - 需要关于在安卓/非安卓设备之间通过 A2DP 发送/接收音频的想法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27934221/

有关android - 需要关于在安卓/非安卓设备之间通过 A2DP 发送/接收音频的想法的更多相关文章

  1. ruby - 我需要将 Bundler 本身添加到 Gemfile 中吗? - 2

    当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/

  2. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  3. ruby - rspec 需要 .rspec 文件中的 spec_helper - 2

    我注意到像bundler这样的项目在每个specfile中执行requirespec_helper我还注意到rspec使用选项--require,它允许您在引导rspec时要求一个文件。您还可以将其添加到.rspec文件中,因此只要您运行不带参数的rspec就会添加它。使用上述方法有什么缺点可以解释为什么像bundler这样的项目选择在每个规范文件中都需要spec_helper吗? 最佳答案 我不在Bundler上工作,所以我不能直接谈论他们的做法。并非所有项目都checkin.rspec文件。原因是这个文件,通常按照当前的惯例,只

  4. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  5. ruby - #之间? Cooper 的 *Beginning Ruby* 中的错误或异常 - 2

    在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee

  6. ruby-on-rails - `a ||= b` 和 `a = b if a.nil 之间的区别? - 2

    我正在检查一个Rails项目。在ERubyHTML模板页面上,我看到了这样几行:我不明白为什么不这样写:在这种情况下,||=和ifnil?有什么区别? 最佳答案 在这种特殊情况下没有区别,但可能是出于习惯。每当我看到nil?被使用时,它几乎总是使用不当。在Ruby中,很少有东西在逻辑上是假的,只有文字false和nil是。这意味着像if(!x.nil?)这样的代码几乎总是更好地表示为if(x)除非期望x可能是文字false。我会将其切换为||=false,因为它具有相同的结果,但这在很大程度上取决于偏好。唯一的缺点是赋值会在每次运行

  7. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  8. ruby - 为什么在 ruby​​ 中创建 Rational 不需要新方法 - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Rubysyntaxquestion:Rational(a,b)andRational.new!(a,b)我正在阅读ruby镐书,我对创建有理数的语法感到困惑。Rational(3,4)*Rational(1,2)产生=>3/8为什么Rational不需要new方法(我还注意到例如我可以在没有new方法的情况下创建字符串)?

  9. ruby - 使用 Ruby 通过 Outlook 发送消息的最简单方法是什么? - 2

    我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=

  10. [工业相机] 分辨率、精度和公差之间的关系 - 2

    📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年

随机推荐