Quantcast
Channel: Ionic Forum - Latest topics
Viewing all articles
Browse latest Browse all 70435

Ionic Bluetooth - Connection always fails

$
0
0

@SpotOnCreative wrote:

Hi. I’m using the following ionic wrapper for the Cordova BLE plugin
https://www.npmjs.com/package/ionic-plugin-bluetoothle

This is the third plugin i’ve tried and I can never connect to any device, it always gives back the error message “Connection Failed”.

Now, I’m targetting 6.0.1 (APK level 24), which means I need to use the “new” permission settings when wanting to pair / connect to Bluetooth devices. I know this, and thus I have told the app to ask for location permission. The app always asks for CORSE_LOCATION, BLUETOOTH and BLUETHOOTH_ADMIN.

When the app starts it asks the user if I can access location (so we have CORSE_LOCATION), and as the other Bluetooth permissions aren’t classed as dangerous, they’re granted.

This is where I have no idea what to do. When I use Bluetooth in the settings within Android its self, when pairing to a new phone / device it prompts with a Pin Request which I have to click ok too. This never happens with any of the plugins I’ve tried (BLE Central and BLE Serial).

I’m absolutely stumped here. Here’s my code

if(!this.isScanning)
    {
       // State we have initiated a scan - don't want to call a scan ontop of calling a scan!
      this.isScanning = true;
      this.canRefresh = false;

      this.bluetoothle.startScan({services:[]}).subscribe(
        device => {
          if(device.status == "scanResult")
          {
            this.addDeviceToAvailableList(device)
          }
        },
        error =>  {
          console.log("Uh oh: " + JSON.stringify(error))
        });

        this.startTimer(); // after the alloted time, stop the Bluetooth Scan
    }
    else{
      console.log("Already scanning");
    }

This somewhat works (I can only ever gain access to the MAC Address, never the actual friendly device name, which is bloody annoying.

When I click a device to connect to, this code gets run

let loading = this.loadingCtrl.create({content: "Connecting..."});
    loading.present();

    this.bluetoothle.connect({address: deviceID}).subscribe(
    device => {
      loading.dismiss();
      if(device.status == "connected")
      {
        console.log("Connecting: " + JSON.stringify(device));

        this.addDeviceToPairedList(this.findDeviceByID(deviceID));
      }
      else if (device.status == "disconnected")
      {
        console.log("disconnected");
      }
    },
    error => {
      console.log("Connecting Error: " + JSON.stringify(error));

      loading.dismiss();
    }

This code block always reports “Disconnected”. Why on Earth is this? I think it is to do with a pair request prompt (Surely it has to be this?). But like I said, that prompt never appears.

I’ve been banging my head for two weeks now.

Posts: 1

Participants: 1

Read full topic


Viewing all articles
Browse latest Browse all 70435

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>