标签: android-bluetooth

蓝牙:将源Android手机的呼叫转移到sink-audio开发套件?

我正在尝试制作一个应用程序,我可以将我的电话从Android手机(SOURCE)转移到音频开发套件(CSR 8670开发套件作为SINK).我能够通过A2dp配置文件传输音频,但转移呼叫我需要启用我仍然面临问题的HFP.是否有通过蓝牙免提配置文件或A2dp配置文件转移呼叫的正确方法?

android bluetooth-lowenergy android-bluetooth iot

8
推荐指数
0
解决办法
382
查看次数

如何启用Lollipop中引入的新蓝牙A2DP接收器功能?

我正在尝试修改Nexus 5的AOSP android映像,以包含对蓝牙A2DP接收器的支持.我发现Google非常适合包含Nexus 5的隐藏构建目标.

https://android.googlesource.com/device/lge/hammerhead/+/android-5.0.1_r1/car_hammerhead.mk

这包括修改后的Bluedroid配置文件,允许设备通过蓝牙通告A2DP Sink服务.它还将设备类别更改为Bluetooth Automative Carkit,并修改Bluetooth.apk的配置以支持A2DP接收器和AVRCP控制服务.

这让我大约有75%的路程.我通过抓取KitKat手机并与Nexus 5上的修改版本配对来测试了这一点.它正确地宣传了A2DP Sink服务并允许我的KitKat手机连接到A2DP Sink服务.从KitKat手机,它似乎甚至允许我将音乐流式传输到Nexus 5.但Nexus 5上从未听过音乐.我甚至在Nexus 5上捕获了HCI流量,发现音乐实际上已经流式传输到电话.

问题是蓝牙设备接收音频流,但音频从不路由到扬声器.有谁知道如何将A2DP流路由到Nexus 5的扬声器?

android bluetooth android-source a2dp android-bluetooth

8
推荐指数
0
解决办法
6551
查看次数

Android lollipop java.lang.SecurityException:用户和当前进程都没有android.permission.BLUETOOTH_PRIVILEGED

我目前正在开发一个Android应用程序,它使用Eclipse(Java)通过蓝牙连接到设备.目前我在Android 4.4(Kit-Kat)及以下版本上工作,但在Android 5(Lollipop)的新更新之后.发生安全异常.

表现:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
<uses-feature android:name="android.hardware.bluetooth_le"
        android:required="false" />
Run Code Online (Sandbox Code Playgroud)

码:

mBleScanner.startScan(filters, scanSettings, mLeScanCallback);

private ScanCallback mLeScanCallback = new ScanCallback()
{
    @Override
    public void onScanResult(int callbackType, ScanResult result)
    {
        BluetoothDevice device = result.getDevice();
        if(device.getName() != null)
        {
            if(device.getName().toUpperCase().contains("MyDevice"))
            {

                mBleScanner.stopScan(mLeScanCallback);

                if (device.getBondState() == BluetoothDevice.BOND_BONDED)
                {
                    Connect(device.getAddress().toString()); 
                }
                else
                {
                    // pair device
                    device.setPairingConfirmation(true);
                    device.createBond();
                }
            }
        }
    }
};
...
..
.
private void BondDevice(BluetoothGattCharacteristic bgc, boolean pnEnable)
{
    boolean bool = gatt.setCharacteristicNotification(bgc, …
Run Code Online (Sandbox Code Playgroud)

java android bluetooth-lowenergy android-bluetooth

8
推荐指数
1
解决办法
1807
查看次数

哪种方式更适合重新连接到BLE设备?使用`autoConnect = true`或执行重复扫描?

我有一个BLE设备跟随下一个forkflow:睡眠直到按下按钮(在设备上) - >唤醒并宣告60秒 - >等到手机要求数据 - >发送数据 - >关闭连接并睡到下一个按钮单击.

这意味着设备不能保持恒定的BLE连接.我需要在它醒来时重新连接到设备.我正在考虑两种不同的策略:

  1. 仅首次启动扫描.保存设备的mac地址.调用connectGattautoConnect参数相同true.如果设备断开,请等待自动连接.
  2. 调用connectGattautoConnect参数相同false.close BluetoothGatt在设备断开连接后立即启动新扫描.

我想,第一种方法在功耗方面更好.但是我看到了多个不使用的建议autoConnect true.

我对第二种方法感觉不好,因为文档说" 从不扫描循环,并设置扫描时间限制 "/可能我应扫描3秒,而不是等待30秒.但它看起来像一个循环.

请告诉我哪种策略更好.考虑第二种方法,是否可以一直扫描(暂停)?也许有一些最佳实践来实现类似的工作流程?

android bluetooth-lowenergy android-bluetooth

8
推荐指数
0
解决办法
1107
查看次数

Android:自动重新连接BLE设备

我的目标是让Android设备重新连接到之前连接的BLE设备而无需用户干预,就像它对经典BT配对设备一样(甚至可以通过电源循环工作).

BTLE设备的一个想法是节省服务,绑定和启用状态,使得重新连接非常快并且在外围设备上消耗非常少的功率.

我所做的似乎有效,但效果不佳.

第一步是连接或配对并连接到新设备,将'autoconnect'参数设置为'true'.当设备断开连接时,请不要调用 gatt.close().无论我到哪里,我都会看到应该调用gatt.close().但如果我打电话给gatt.close(),Android中心应用程序永远不会重新连接.我已经多次测试过了.

如果我没有调用gatt.close()并且没有重启Android,则通常会发生自动连接.有时它可能需要很长时间,特别是在5.0版之后.然而,它是不可靠的并且由于非常低的扫描周期而且在扫描周期实际检测到广告之前设备退出广告可能是不可靠的.我不确定,因为没有办法像广告那样检测扫描操作!扫描也可能在一定时间后停止,但没有相关文档.

因此,我认为我需要做的就是以某种方式设置使用的是Android,以更高的占空比后台扫描速度(仅在5.0可能高达)时自动连接已定,但我不知道如何做到这一点.我不想开始自己的扫描,但不知何故设置了Android用于重新连接的后台扫描速率.有谁知道如何做到这一点?有谁真的知道autoconnect和gatt.close()是如何工作的?

也许自动连接并不意味着重新连接,如上所述?

android bluetooth-lowenergy android-bluetooth

8
推荐指数
1
解决办法
7019
查看次数

如何以编程方式区分android中连接的蓝牙设备?

无论是蓝牙耳机还是手机?

如何在Android代码中区分蓝牙耳机和支持蓝牙的Android设备.

我正在开发一个小应用程序,因为我有通过蓝牙阻止数据传输的功能,但它需要允许通过蓝牙耳机进行通信.

请帮我解决这个问题,将连接的蓝牙设备区分为耳机/安卓设备(手机)等.,

先感谢您.

android bluetooth android-broadcast android-bluetooth

8
推荐指数
1
解决办法
2806
查看次数

连接Mi Band 2

无法使用pangliang/miband-sdk-android lib连接到mi band 2.我取消了乐队的配对并删除了mifit app.

这是代码示例.

final MiBand miband = new MiBand(TestActivity.this.getApplicationContext());

    final ScanCallback scanCallback = new ScanCallback() {
        @Override
        public void onScanResult(int callbackType, ScanResult result) {
            BluetoothDevice device = result.getDevice();
            miband.connect(device, new ActionCallback() {

                @Override
                public void onSuccess(Object data) {
                }

                @Override
                public void onFail(int errorCode, String msg) {
                }
            });
        }
    };

    MiBand.startScan(scanCallback);

    MiBand.stopScan(scanCallback);
Run Code Online (Sandbox Code Playgroud)

日志:

D/BluetoothLeScanner: Start Scan
D/BluetoothAdapter: STATE_ON
D/BluetoothAdapter: STATE_ON
D/BluetoothAdapter: STATE_ON
D/BluetoothAdapter: STATE_ON
D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=6
Run Code Online (Sandbox Code Playgroud)

Android版本6.0.1.

此外,我尝试连接没有任何额外的库和paulgavrikov/xiaomi-miband-android库,并且在两种情况下都没有效果.

什么似乎是问题?连接到mi乐队有什么技巧吗?

java android android-bluetooth

8
推荐指数
1
解决办法
4409
查看次数

如何使蓝牙SPP连接过程更可靠?

我们即将发布我们软件的新版本,对于之后的版本,我们的目标是使我们的蓝牙SPP连接的连接过程更加可靠.我们在产品中使用RN42模块,目前有时可能需要多次尝试才能连接到我们的主板.

这是我目前的代码:

class ConnectThread extends Thread {
    BluetoothDevice mDevice;

    public ConnectThread(BluetoothDevice device) throws SecurityException, NoSuchMethodException {
        mDevice = device;
        UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
        try {
            btSocket = mDevice.createInsecureRfcommSocketToServiceRecord(uuid);
        } catch (IOException e) {
            Log.e("Error", "Could not create socket!");
        }
    }

    public void cancel() {
        interrupt();
        try {
            Log.i("Treadmill", "in connect thread cancellation");
            btSocket.close();
        } catch (IOException localIOException) {
            Log.e("Treadmill", "exception + " + localIOException.getMessage());
        }
    }

    public void run() {
        btAdapter.cancelDiscovery();
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            Log.e("whatever", …
Run Code Online (Sandbox Code Playgroud)

android bluetooth rfcomm spp android-bluetooth

8
推荐指数
1
解决办法
1170
查看次数

适用于经典AND BTLE设备的Android蓝牙扫描

android 文档说明:

Note: You can only scan for Bluetooth LE devices or scan for Classic Bluetooth devices, as described in Bluetooth. You cannot scan for both Bluetooth LE and classic devices at the same time.
Run Code Online (Sandbox Code Playgroud)

但是我注意到调用mBtAdapter.startDiscovery(); 正在返回经典设备和btle设备.有人知道这里有什么问题吗?

android discovery bluetooth-lowenergy android-bluetooth

7
推荐指数
1
解决办法
3796
查看次数

Android中的蓝牙3.0 HS支持

我没有找到任何关于Bluetooth 3.0 HS支持的信息Android.那有什么API用吗?它是否受到支持?

我有一个Android-based (4.1.2 with BlueZ stack)硬件支持的设备Bluetooth 3.0 HS.我正在尝试调查需要多少努力才能添加Bluetooth 3.0 HSAndroid+的支持BlueZ.可能是更好的切换到更新AndroidBluetooth stack (bluedroid)

android android-bluetooth

7
推荐指数
1
解决办法
609
查看次数