我正在寻找为 iPhone 编写的应用程序,它将能够控制汽车中的 radio 和 CD 播放器。 radio 和播放器具有可用的蓝牙连接。
我开始这个问题是为了获得我需要的关于这个地方的所有信息。我有几个问题,但如果您发现任何我没有提出的问题对我开始开发此应用程序很重要,请告诉我。
我已经阅读了有关 AVRCP 配置文件的信息,车载蓝牙设备支持 AVRCP 1.3,这对我来说已经足够好了,考虑到可以在该协议(protocol)版本中执行的控制。
我读到很多人说“Apple 设备只能相互交互”、“Apple 设备不能通过蓝牙连接到非 Apple 设备”、“如果你想这样做,MFi 程序是必须的” ,“不需要MFi”等。我的第一个问题是:
1)是否可以通过蓝牙将 iPhone (4, 4S) 与车载 radio 和 CD 播放器配对,并使用任何 iPhone 版本控制广播电台和音乐?如果是,进行这种成功的蓝牙连接的限制是什么?
关于 iPhone 可以工作的角色的信息也很少。对于 AVRCP 有两种角色: Controller 和目标角色。通过阅读本文:https://developer.apple.com/hardwaredrivers/BluetoothDesignGuidelines.pdf我没有找到第二个问题的答案:
2) iPhone 能否充当 Controller 并向目标设备( radio 和 CD 播放器)发出 AVRCP 1.3 中规定的所有可用命令?
我还想了解针对此特定问题的可用框架。我知道其中有几个,但如果有人认出适合我的问题的那个,我想知道:
3) 我应该使用哪个框架与目标设备进行交互?
从开发人员的角度来看,我还对用于与连接的蓝牙设备进行交互的可用 API 感兴趣。由于我正在制作自己的应用程序并将操作分配给按钮,因此在分配给按钮的方法内部我需要执行向目标设备发送消息。所以我的下一个问题是:
4) 有谁知道如何将命令发送到目标设备(开始/停止/暂停/前进/后退等)作为 XCode 中提供的某些 API 的一部分,或者我参加的每条消息通过蓝牙发送到目标设备我需要根据协议(protocol)文档制作(自己制作整个消息(标题、正文、命令部分等))?
AVRCP 是我完成此应用程序的想法。如果我错了,请告诉我。 蓝牙具有不同的配置文件,据我所知,当从一个设备发送消息时,配置文件本身会处理消息并对其进行解释并传递给目标设备,以便目标设备可以理解它。从我从 Objective-C(或 C)代码发送消息的那一刻起,我不明白如何处理从 iPhone 发送到目标蓝牙设备的消息。这是我的主要疑问,它与问题 4 有关 - 我是否需要以正确的格式制作原始消息以便将 AVRCP 命令发送到设备,或者我可以使用一些 API 将这些消息识别为AVRCP(或任何其他类型)并将其传送到目标设备?
从开发人员的角度来看,最后一个问题(如果我认为之前的所有问题都有任何肯定的答案)是我最关心的问题。因此,如果有人可能遇到过这个特定问题,我将不胜感激任何类型的回答或建议。
我真的很期待你的回答。我希望建设性和有用的讨论将围绕这个话题展开,并且会写出很多有用的信息。
最好的问候。
最佳答案
如果您的设备(CD 播放器)兼容蓝牙 4.0 LE,您可以使用 CoreBluetooth 实现
关于iphone - 用 iPhone 控制蓝牙音频设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11309950/
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时
在我的Character模型中,我添加了:字符.rbbefore_savedoself.profile_picture_url=asset_path('icon.png')end但是,对于数据库中已存在的所有角色,它们的profile_picture_url为nil。因此,我想进入控制台并遍历所有这些并进行设置。在我试过的控制台中:Character.find_eachdo|c|c.profile_picture_url=asset_path('icon.png')end但这给出了错误:NoMethodError:undefinedmethod`asset_path'formain:O
Devise是一个Ruby库,它为我提供了这个User类:classUser当写入:confirmable时,注册时会发送一封确认邮件。上周我不得不批量创建300个用户,所以我在恢复之前注释掉了:confirmable几分钟。现在我正在为用户批量创建创建一个UI,因此我需要即时添加/删除:confirmable。(我也可以直接修改Devise的源码,但我宁愿不去调和它)问题:如何即时添加/删除:confirmable? 最佳答案 WayneConrad的解决方案:user=User.newuser.skip_confirmation
当我进入Rails控制台时,我已将pry设置为加载代替irb。我找不到该页面或不记得如何将其恢复为默认行为,因为它似乎干扰了我的Rubymine调试器。有什么建议吗? 最佳答案 我刚发现问题,pry-railsgem。忘记了它的目的是让“railsconsole”打开pry。 关于ruby-on-rails-带有Pry的Rails控制台,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question
我正在尝试将$stdout设置为临时写入一个文件,然后返回到一个文件。test.rb:old_stdout=$stdout$stdout.reopen("mytestfile.out",'w+')puts"thisgoesinmytestfile"$stdout=old_stdoutputs"thisshouldbeontheconsole"$stdout.reopen("mytestfile1.out",'w+')puts"thisgoesinmytestfile1:"$stdout=old_stdoutputs"thisshouldbebackontheconsole"这是输出。r
我在思考流量控制的最佳实践。我应该走哪条路?1)不要检查任何东西并让程序失败(更清晰的代码,自然的错误消息):defself.fetch(feed_id)feed=Feed.find(feed_id)feed.fetchend2)通过返回nil静默失败(但是,“CleanCode”说,你永远不应该返回null):defself.fetch(feed_id)returnunlessfeed_idfeed=Feed.find(feed_id)returnunlessfeedfeed.fetchend3)抛出异常(因为不按id查找feed是异常的):defself.fetch(feed_id