Articles of android bluetooth

以编程方式连接到蓝牙

我正在尝试以编程方式将我的设备连接到例如我的耳机上…我有KitKat版本并且所有工作都很完美( Bluetooth总是自动连接而没有问题)但是因为我已经更新到Lolipop它没有。 我想知道在打开时是否有任何方法可以将我的Android phone任何配对设备连接到Bluetooth 。 从现在开始我有这个代码(获取设备名称和设备地址),因为我想它可以连接像device.connect(MAC-Address); 但它不起作用…… BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); Set pairedDevices = bluetoothAdapter.getBondedDevices(); if (pairedDevices.size() > 0) { for (BluetoothDevice device: pairedDevices) { mDeviceName.add(device.getName()); mDeviceMAC.add(device.getAddress()); } } bluetoothClass.setDeviceName(mDeviceName); bluetoothClass.setDeviceMac(mDeviceMAC); 题 在我的MotoG(KitKat)上,如果我打开Bluetooth它会自动连接到设备(如果它接近并配对…)但是在我的LG G3上我必须转到配置/蓝牙/配对设备/然后点击设备连接……我想避免这种情况……应该可以吗? 我想知道是否有可能连接到特定的蓝牙只是添加Device name或Device MAC …当我点击我的设备连接时,或多或少像Android一样自动连接……我只是想得到那个CLICK事件。 我知道Android应该自动连接到配对的设备,但是有任何exception都没有…唯一的方法是配对它正在点击…这就是为什么我想知道它是否有办法做到这一点..我已经阅读并测试了kcoppock的答案,但它仍然无法正常工作.. 有什么建议吗? 编辑 我想要做的主要是自动连接我的Bluetooth但是因为我读过嘿你回答…我想出来了,我知道这是一个Android bug,所以我想做的事情就是选择paired devices ,然后单击我要连接的设备(不做任何Intent )并连接它,而不是去Configuration/Bluetooth/… 顺便说一下,我在StackOverflow上读过任何答案,我发现Sockets用于连接Bluetooth ?可能是一个解决方案吗?

未生成蓝牙HCI监听日志

我正在运行Android 4.4.2并启用了“Bluetooth HCI snoop log”,如此处所述嗅探/记录您自己的Android蓝牙流量 打开和关闭蓝牙后,我重新启动了手机。 我在预期的位置找不到日志文件: $ adb pull /sdcard/btsnoop_hci.log remote object ‘/sdcard/btsnoop_hci.log’ does not exist 我怎样才能到达btsnoop_hci.log?

如何使用蓝牙热敏打印机打印发票收据

我必须使用热敏打印机打印发票收据。 我用Zjiang Thermal打印机打印收据。 他们还提供手动和演示项目。 在演示项目中,他们使用libray“btsdk.jar”来实现连接和打印。 我已成功建立打印机和Android设备之间的连接。 但是没有文本对齐(中心,左,右)和单元格宽度,高度的指导。 我试过了 。 它只通过更改格式2variables来更改文本高度。 我如何通过蓝牙打印机打印发票。 还请解释这一节 – byte[] cmd = new byte[3]; cmd[0] = 0x1b; cmd[1] = 0x21; cmd[2] |= 0x10; cmd 2 – 用于更改字体高度cmd [0]&cmd 1的用法 代码将打印消息发送到蓝牙打印机在演示项目中 String msg = “”; byte[] cmd = new byte[3]; cmd[0] = 0x1b; cmd[1] = 0x21; cmd[2] |= 0x10; mService.write(cmd); mService.sendMessage(“Congratulations!\n”, “GBK”); […]

Android – 获取此设备的蓝牙UUID

我正在浏览Stack和互联网上的一个简单的解决方案来获取我正在使用的设备的UUID 。 我偶然发现了这样的post,但他们似乎都没有帮助我。 doc讲述了这个 getUuids()函数,但是在浏览Android蓝牙的文档时,我最终得到了一个BluetoothAdapter,但是我需要一个BluetoothDevice来执行这个function。 所以我需要知道以下内容: 1)函数是否真的返回设备UUID ? 因为名字说复数(getUuid s ) 2)如何获得此BluetoothDevice的实例? 谢谢!

适用于Android,iOS和Win8的蓝牙低功耗连接参数

我一直在寻找所有这三个操作平台所需的蓝牙连接参数。 我正在使用此项目的HOGP(Bluetooth over HID GATT)配置文件。 我的项目是一个由我自己编写的嵌入式系统,带有一个BLE模块,我可以控制以下连接参数。 连接间隔最小值 连接间隔最大值 奴隶潜伏期 监督超时 广告时间间隔 广告间隔最大 我要连接的目标设备将满足Android> = 4.3,iOS7和> = Win 8.1的连接。 Apple非常友好地在下面的链接中提供了第22页上带有相应参数的文档。 我无法find有关Android和Win 8的任何信息。 https://developer.apple.com/hardwaredrivers/bluetoothdesignguidelines.pdf 我目前的iOS7工作设置完全测试与免费软件lightBlue的双向通信如下。 我的iOS7嵌入式代码和主机软件可以运行。 连接间隔最小30ms 连接间隔最大56.25ms 奴隶潜伏期3 监督超时5000ms 我从另一个堆栈溢出页面发现,据称android可以通过以下链接在7.5ms连接间隔上工作。 Android BLE连接时间间隔 http://processors.wiki.ti.com/index.php/Bluetooth_SensorTag?DCMP=lprf-stdroid&HQS=lprf-stdroid-pr-wiki1#Supported_Android_devices 不幸的是苹果iOS规范的第二个要求是“IntervalMin≥20ms”。 我不理解这些范围或如何解释它们? 如果我将Interval min设置为7.5ms for Android,那会不会影响苹果的要求? 如果可能,我如何满足两个系统和Win8? 我的理解是从设备在最小值和最大值之间提供建议设置,并且主设备(智能手机)警告用户该范围内的实际选定值。 我对这个问题的任何帮助表示感谢,并希望这篇文章能够让其他人考虑到BLE相当新的和不完整的知识基础。 提前致谢!

使用Android 6.0的BluetoothLeScanner.startScan无法发现设备

我正在尝试使用BluatoothLeScanner.startScan函数而不是弃用的BluetoothAdapter.startLeScan 。 昨天我将我的Nexus 5更新为Android 6.0,从那时起我的应用程序就不再起作用了。 我首先添加了此处所需的ACCESS_COARSE_LOCATION首选项, https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id 。 然后我添加了如下所述的权限: https : //developer.android.com/training/permissions/requesting.html 。 但最后它似乎无法正常工作,它不会发送回设备。 这是我的代码: 表现 ` DeviceScanActivity @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); … if (ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){ if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_COARSE_LOCATION)) { } else { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, MY_PERMISSIONS_REQUEST_ACCESS_COARSE); } } // Device scan callback. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (ContextCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION) == […]

检查Android互联网连接的完美function,包括蓝牙平台

我的应用程序在wifi和移动网络中运行良好,但无法检测何时通过蓝牙网络共享连接。 public boolean isNetworkAvailable() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = cm.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isConnected()) { return true; } return false; } 我试过运行一些其他应用程序。 他们也没有显示网络连接,但谷歌应用程序工作完美,所以像其他一些应用程序,如whatsap。 想知道他们是如何做到的,以及为什么大多数应用程序都忽略了这一点。 谁能告诉我一种方法来检查Android中的互联网连接,通过一切可用的方式,包括蓝牙泛和代理等。 任何帮助将不胜感激。 提前致谢..

在Android上同时与多个BLE设备进行稳健通信

虽然使用Android BLE apis的无证,传统智慧是某些操作,如读/写特征和描述符应该一次一个(尽管有些设备比其他设备更宽松)。 但是,我不清楚此策略是仅应用于单个连接还是应用于所有活动连接。 我听说最好一次启动一个设备连接。 这可能是应该在所有设备之间串行执行的操作(connect / connectGatt)的示例。 但对于其他操作,如读写特性,如果每个连接串行执行操作,或者我是否需要在所有设备之间共享一些全局操作队列,以便在所有设备之间只执行一个操作,它是否足够好?

如何从Android蓝牙耳机捕获关键事件

我的应用程序可以通过普通耳机控制。 它只是覆盖“onKeyDown”。 但是没有捕获蓝牙耳机的关键事件 – 为什么? 或者如何捕获蓝牙键事件? 如果我按下耳机上的按钮,“log cat”会显示以下内容: Bluetooth AT recv(3043): AT+VGS=15 AudioPolicyManagerBase(13654): FM radio recording off AudioService(2261): sendVolumeUpdate, isKeyguardLocked…Not to update Volume Panel. VolumePanel(2261): change volume by MSG_VOLUME_CHANGED VolumePanel(2261): onVolumeChanged(streamType: 6, flags: 0) VolumePanel(2261): Call setChangeSeekbarColor(false) 我也尝试处理媒体按钮操作,但这不起作用。 我的想法是一个免费的可配置键映射:用户选择“设置键”我的应用程序听到所有键(硬件,媒体按钮,蓝牙耳机),然后用户按下一个键,事件/密钥代码存储在配置中。 总结不工作的答案:音量按钮必须由“VOLUME_CHANGED_ACTION”捕获。 问题是这个意图被广播到其他应用程序并且abortBroadcast()不起作用(它仅适用于“有序”广播)。 另一个问题是有线耳机和手机上的按键触发onReceive()两次(为什么?)蓝牙耳机会触发一次。 下一个问题是蓝牙耳机上的第3个键。 它触发语音命令(s-s在s3上启动),我试图捕获许多关于此的不同意图,但我无法“接收”此按钮按下而不知道为什么。 最后,我希望捕获各种按钮,并且不希望它们由其他应用程序处理(例如使用onKeyDown并返回true)。

如何通过蓝牙低功耗(BLE)链路发送数据?

我能够发现,连接到蓝牙。 源代码 – – 通过蓝牙连接到远程设备: //Get the device by its serial number bdDevice = mBluetoothAdapter.getRemoteDevice(blackBox); //for ble connection bdDevice.connectGatt(getApplicationContext(), true, mGattCallback); Gatt CallBack for Status: private BluetoothGattCallback mGattCallback = new BluetoothGattCallback() { @Override public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { //Connection established if (status == BluetoothGatt.GATT_SUCCESS && newState == BluetoothProfile.STATE_CONNECTED) { //Discover services […]