我在使用蓝牙和安卓时遇到了一些概念上的问题。正如我一直在研究的那样,蓝牙允许最多 7 个从设备相互连接到构建微微网网络的同一主设备。 BT 还允许主设备充当另一个微微网的从设备,构建一个分散网络,其中所有设备都可以使用上层协议(protocol)相互连接。
我的问题是关于蓝牙行为和 Android。
1) 在 Android 中,您如何知道您的设备是充当主设备还是从设备,或者主设备充当另一个微微网的从设备,或者从设备连接到两个主设备形成散射网?
2) 蓝牙只允许每个主设备有 7 个 Activity 的从设备,之前在查询扫描期间选择的,以及最多 255 个处于“停放”模式的从设备(同步监听主设备但不活动)。你如何连接到这个“公园”设备?只有当其中一个活跃的人因为链接断开而断开连接时,例如一个“公园”才能连接?
3) 您能否在 Android(或通过 Android 的 BlueZ)上将设备配置为在不同模式下工作,例如出于功耗目的的“嗅探”或“保持”?
4) Android API 是否提供了向同一微微网的所有从站广播的可能性?如果是这样,我希望它能提供发送自定义数据信息的可能性。
非常感谢您花时间帮助我。
最佳答案
要补充的是 - scatternet 还有一种可能性 - 一个设备在多个微微网中充当从属设备。
1) How can you know in Android that your device is acting as a master or a slave, or is a master acting as an slave for another piconet, or is slave connected to two masters forming a scatternet?
你不能 - 我不认为有公共(public) API - 并且想法是对于应用程序它应该无关紧要。
2) Bluetooth only lets 7 active slaves per master, previously selected during the Inquiry scan, and up to 255 slave devices on "park" mode (synchronized listening the master but not active). How can you connect to this "park" devices? Only if one of the active ones disconnect because a broken link for instance so one "park" can connect?
基本上 - 蓝牙最多可以连接 7 个设备并处于 Activity 连接状态,然后可以将一个 Activity 设备置于停放模式,并且它可以让大量设备(也超过 255 个)处于停放模式,因此设备移动从连接 - Activity 状态停放,反之亦然。但是在任何时候你都只能有 7 个 Activity 设备 因此,主设备可以通过保持(最多 7 个) Activity 和休息停放来管理大量设备,并在 Activity 和停放模式之间不断切换它们。
说了这么多 - 不要再使用停放模式 - 它在蓝牙规范中已被弃用,而且容易出现许多互操作性问题。
3) Can you configure on Android (or BlueZ through Android) the device to work on different modes as "sniff" or "hold" for power consumptions purposes?
应用程序 API 中不存在任何用于此的内容 - 但通常设备会切换为嗅探不活动(由底层蓝牙堆栈的策略管理算法控制)。 Again Hold 很少使用 - Sinff 是蓝牙中通常用于省电的最佳模式。
4) Does Android API gives the possibility of broadcasting to all slaves of the same piconet? If it does, i hope it gives the possibility of sending custom data information.
再次没有用于广播的 API - 但是是的,使用蓝牙可以向所有 Activity 甚至停放的设备广播。是的,它还可以发送自定义数据。
但不幸的是,开发人员没有 API 可以利用和使用蓝牙技术提供的许多这些功能。
关于android - 蓝牙+安卓+散网拓扑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6829909/
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我
我有一个数组数组,想将元素附加到子数组。+=做我想做的,但我想了解为什么push不做。我期望的行为(并与+=一起工作):b=Array.new(3,[])b[0]+=["apple"]b[1]+=["orange"]b[2]+=["frog"]b=>[["苹果"],["橙子"],["Frog"]]通过推送,我将推送的元素附加到每个子数组(为什么?):a=Array.new(3,[])a[0].push("apple")a[1].push("orange")a[2].push("frog")a=>[[“苹果”、“橙子”、“Frog”]、[“苹果”、“橙子”、“Frog”]、[“苹果”、“
有没有办法让Ruby能够做这样的事情?classPlane@moved=0@x=0defx+=(v)#thisiserror@x+=v@moved+=1enddefto_s"moved#{@moved}times,currentxis#{@x}"endendplane=Plane.newplane.x+=5plane.x+=10putsplane.to_s#moved2times,currentxis15 最佳答案 您不能在Ruby中覆盖复合赋值运算符。任务在内部处理。您应该覆盖+,而不是+=。plane.a+=b与plane.a=
出于某种原因,heroku尝试要求dm-sqlite-adapter,即使它应该在这里使用Postgres。请注意,这发生在我打开任何URL时-而不是在gitpush本身期间。我构建了一个默认的Facebook应用程序。gem文件:source:gemcuttergem"foreman"gem"sinatra"gem"mogli"gem"json"gem"httparty"gem"thin"gem"data_mapper"gem"heroku"group:productiondogem"pg"gem"dm-postgres-adapter"endgroup:development,:t
我是Ruby和这个网站的新手。下面两个函数是不同的,一个在函数外修改变量,一个不修改。defm1(x)x我想确保我理解正确-当调用m1时,对str的引用被复制并传递给将其视为x的函数。运算符当调用m2时,对str的引用被复制并传递给将其视为x的函数。运算符+创建一个新字符串,赋值x=x+"4"只是将x重定向到新字符串,而原始str变量保持不变。对吧?谢谢 最佳答案 String#+::str+other_str→new_strConcatenation—ReturnsanewStringcontainingother_strconc
我正在使用PostgreSQL9.1.3(x86_64-pc-linux-gnu上的PostgreSQL9.1.3,由gcc-4.6.real(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1,64位编译)和在ubuntu11.10上运行3.2.2或3.2.1。现在,我可以使用以下命令连接PostgreSQLsupostgres输入密码我可以看到postgres=#我将以下详细信息放在我的config/database.yml中并执行“railsdb”,它工作正常。开发:adapter:postgresqlencoding:utf8reconnect:falsedat
这是我在ChefRecipe中的一blockRuby:#ifdatadirdoesn'texist,moveoverthedefaultoneif!File.exist?("/vol/postgres/data")execute"mv/var/lib/postgresql/9.1/main/vol/postgres/data"end结果是:Executingmv/var/lib/postgresql/9.1/main/vol/postgres/datamv:inter-devicemovefailed:`/var/lib/postgresql/9.1/main'to`/vol/post