Tag: 蓝牙

read()和readObject()的问题

我尝试开发一款通过蓝牙播放1vs1的纸牌游戏。 我已连接设备,现在我有一个问题:我想发送Objects抛出蓝牙。 如果我只制作对象,它就有效,如果只有字符串,它可以工作。 但如果我试图同时制作两者,我就会遇到问题。 /** * This thread runs during a connection with a remote device. * It handles all incoming and outgoing transmissions. */ private class ConnectedThread extends Thread { private final BluetoothSocket mmSocket; private final InputStream mmInStream; private final OutputStream mmOutStream; // for Objects private final ObjectInputStream mObjectInStream; private final ObjectOutputStream mObjectOutStream; public […]

fetchUuidWithSdp总是给出缓存的UUID

我正在编写一个应用程序,我必须在选定的设备上进行服务发现,但每当我在做一个fetchUuid时,它总是在远程设备上给我缓存的UUID。 这是我正在尝试的 public boolean UUIDsearch(BluetoothDevice device){ t=device.fetchUuidsWithSdp(); Log.d(TAG,”Device class = :”+device.getClass()); mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent intent) { String action = intent.getAction(); //BluetoothDevice deviceExtra = intent.getParcelableExtra(“android.bluetooth.device.extra.DEVICE”); if (BluetoothDevice.ACTION_UUID.equals(action)){ uuidExtra =intent.getParcelableArrayExtra(“android.bluetooth.device.extra.UUID”); } Log.d(TAG,”SDP has no errors: = “+t); // if(found==false){ for(int i=0;i<uuidExtra.length;i++){ Log.d(TAG,"UUID: "+ uuidExtra[i]); if((uuidExtra[i].toString()).equals(MY_UUID.toString())){ found=true; Log.d(TAG,"Match found in […]

显示Android蓝牙设备名称

如何在android中使用Java显示蓝牙设备名称? 我可以参考的任何代码?

Android蓝牙套装 – 计时

我写了一个用于连接外部附件的蓝牙API。 设计API的方式是有一堆阻塞调用,如getTime , setTime , getVolume , setVolume等。这些工作方式是他们创建一个有效负载来发送和调用一个名为sendAndReceive()的方法,一些准备工作,最终做到以下几点: byte[] retVal = null; BluetoothSocket socket = getSocket(); // write socket.getOutputStream().write(payload); // read response if(responseExpected){ byte[] buffer = new byte[1024]; // buffer store for the stream int readbytes = socket.getInputStream().read(buffer); retVal = new byte[readbytes]; System.arraycopy(buffer, 0, retVal, 0, readbytes); } return retVal; 问题是,有时这个设备会变慢或没有响应,所以我想对这个调用设置超时。 我已经尝试了几种将此代码放在线程\ future任务中并使用超时运行它的方法,例如: FutureTask theTask […]

Android蓝牙串口RFCOMM低波特率/慢速传输

我正在开发Android蓝牙项目,以便从定制硬件发送和接收数据。 我在SDK中使用蓝牙聊天示例作为基础。 我意识到无法改变客户端(Android手机)的波特率,波特率取决于硬件。 我尝试在硬件上设置不同的波特率 ,但都没有达到我们的预期; 我能获得的最快速度是91Kbps(当波特率设置为2.7Mbps~910Kbps时)。 使用最小波特率(115Kbps)我得到43Kbps。 我尝试使用不同的手机,它是一样的。 我需要每秒将170KB数据传输到硬件。 产品规格 协议 :使用最大520字节大小的包将同步或生成的数据发送到硬件。 收到并批准每个包后,硬件发送validation命令,然后电话发送下一个数据包。 客户端 :Android 2.3.3,三星galaxy w i8150,蓝牙v3.0,RFCOMM 硬件 :自定义,蓝牙v2.1 BlueGiga WT11i 我完全糊涂了..这可能是手机上的Android或蓝牙设备引起的问题吗? 我想知道最大波特率是多少? 有没有办法加快传输速度(如增加最大包大小,或发送所有包而不等待硬件validation命令)。 编辑 将包大小更改为4160字节后,吞吐量已增加到254Kbps。 我试图找出最佳封装尺寸达到1.5Mbps。 我很感激任何建议

Android蓝牙 – 无法连接

我正在开发一个使用蓝牙连接到设备并发送/接收数据的应用程序。 我正在使用Nexus One手机进行所有测试。 我从来没有能够建立从手机到任何设备的SPP(串行端口)连接。 但是,我已经能够使用相当于PuTTY的Mac从设备(我的笔记本电脑)连接到我的手机(唯一的例外是来自Marketplace的“蓝牙文件传输”应用程序似乎可行,但我不认为使用RFCOM / SPP ……)。 我在LogCat日志中看到这条消息: ERROR/BluetoothService.cpp(78): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session) 以及这些: java.io.IOException: Operation Canceled java.io.IOException: Software caused connection abort 我尝试使用UUID“00001101-0000-1000-8000-00805F9B34FB”,我也试过使用: Method m = device.getClass().getMethod(“createRfcommSocket”, new Class[] { int.class }); sock = (BluetoothSocket) m.invoke(device, Integer.valueOf(1)); 方法而不是device.createRfcommSocketToServiceRecord(UUID); 同样 – 没有运气。 我正在使用BluetoothChat示例和该代码的变体来完成我的所有测试… 解决方案或建议会很棒…或者甚至是我可以在手机上运行的一些测试代码的更好/更简单的例子,或者我可以在计算机上运行以帮助调试的python脚本或其他东西? 谢谢! 我希望这不是Android操作系统的错误,但如果是,我希望找到一个解决方法。 编辑:我还应该注意,大多数设备在蓝牙设置中显示为“已配对但未连接”。 编辑2:解决方案似乎只是禁用任何蓝牙监听。 有关更多信息,请参阅我的回答帖

应用程序崩溃后Android蓝牙连接不会关闭

我正在使用SPP配置文件连接到我的设备: Set devices = ba.getBondedDevices(); for(BluetoothDevice bd : devices) { String name = bd.getName(); if(name.equals(“CELLMETER”)) { try { BluetoothSocket bs = bd.createRfcommSocketToServiceRecord(UUID.fromString(“00001101-0000-1000-8000-00805F9B34FB”)); bs.connect(); } catch (IOException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } } } 一切似乎没关系,我创建了函数,我关闭输入输出缓冲区和关闭套接字。 但是当应用程序崩溃或我正在停止应用程序时断点到达时套接字不会关闭,即使我手动终止进程并且它不适用于新应用程序实例的新连接。 我做错了什么? 对于每次崩溃/调试操作,我必须重新启动手机:( 它仅表现在Android 2.3.5(三星5830i)和Android 4.0.4(神行者P10)上。 在我的Android 4.2.1(Galaxy Nexus)上一切正常,应用程序崩溃连接后自动关闭。 […]

如何通过蓝牙连接两个设备通过参数发送配对代码? JAVA,Android的

我正在尝试通过蓝牙连接两个设备。 我已经能够做到了,但是当连接启动时,操作系统要求我提供配对代码。 我想要做的是以编程方式提供该代码。 有没有办法连接这些设备并发送配对代码而不要求用户插入它? 注意:我确实有配对代码,我只是不希望用户插入它,而应用程序将从保存的位置获取它并使用它。 注意2:必须使用配对码。 因此,使用createInsecureRfcommSocketToServiceRecord()或不使用配对代码的类似连接不是一种选择。

Android蓝牙连接另一个蓝牙设备

我正在做基于蓝牙的应用程序,我想连接其他设备,如诺基亚设备和打印机。 我参考了android蓝牙文档http://developer.android.com/guide/topics/connectivity/bluetooth.html 。 它演示了所有基本的蓝牙APIfunction,而且我做了所有这些 Scanning for other Bluetooth devices Querying the local Bluetooth adapter for paired Bluetooth devices Establishing RFCOMM channels/sockets Connecting to a remote device Transfering data over Bluetooth 我从BluetoothChat,android的样本中获得参考。 BluetoothChat This application send data to another android device but for that this application must be installed in both the devices. 像这样如何通过代码将文件从Android设备发送到其他设备 我想要的是 我想从我的应用程序将文件从一个设备发送到另一个设备,这也适用于另一个没有运行我们的应用程序的设备。 […]

如何在Android中以编程方式检查蓝牙网络共享状态

有没有办法找到Android 2.3+(2.3+之后的任何版本)以编程方式启用或禁用蓝牙网络共享? 我不是要求启用/禁用它,而只是要知道它当前是否已启用。