From a741c028f1cda99c986c4b5ad2669e5e58f4c504 Mon Sep 17 00:00:00 2001 From: Bjørn Mork Date: Thu, 30 May 2019 20:36:51 +0200 Subject: gatt connecting and service discovery is working MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 05-30 20:35:57.539 22814 22814 D Defogger Scanning: : adding 77:6D:BD:24:87:41 05-30 20:35:59.933 22814 22814 D Defogger Adapter: : ScanListAdapter: onClick() will return DCS-8000LH-CC73 05-30 20:35:59.933 22814 22814 D Defogger Scanning: : returnScanResult() 05-30 20:35:59.939 22814 22814 D Defogger Scanning: : stopped scanning 05-30 20:35:59.956 22814 22814 D Defogger MainActivity: : connectDevice() B0:C5:54:4C:CC:73 05-30 20:36:01.870 22814 22831 D Defogger MainActivity: : onConnectionStateChange() 0 2 05-30 20:36:02.826 22814 22831 D Defogger MainActivity: : 00001800-0000-1000-8000-00805f9b34fb 05-30 20:36:02.826 22814 22831 D Defogger MainActivity: : 00001801-0000-1000-8000-00805f9b34fb 05-30 20:36:02.826 22814 22831 D Defogger MainActivity: : 0000d001-0000-1000-8000-00805f9b34fb 05-30 20:36:07.025 22814 22814 D Defogger Scanning: : stopped scanning Signed-off-by: Bjørn Mork --- .../src/no/mork/android/defogger/MainActivity.java | 89 +++++++++++++++++++++- .../no/mork/android/defogger/ScannerActivity.java | 2 + 2 files changed, 89 insertions(+), 2 deletions(-) diff --git a/Defogger/src/no/mork/android/defogger/MainActivity.java b/Defogger/src/no/mork/android/defogger/MainActivity.java index e3c1de3..46451be 100644 --- a/Defogger/src/no/mork/android/defogger/MainActivity.java +++ b/Defogger/src/no/mork/android/defogger/MainActivity.java @@ -2,21 +2,29 @@ package no.mork.android.defogger; import android.app.Activity; import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothGatt; +import android.bluetooth.BluetoothGattCallback; +import android.bluetooth.BluetoothGattService; import android.bluetooth.BluetoothManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; +import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; +import java.util.List; import no.mork.android.defogger.ScannerActivity; -public class MainActivity extends Activity { +public class MainActivity extends Activity implements GattClientActionListener { + private static String msg = "Defogger MainActivity: "; private static final int REQUEST_ENABLE_BT = 0x1042; private BluetoothAdapter bluetoothAdapter; + private BluetoothGatt mGatt; @Override protected void onCreate(Bundle savedInstanceState) { @@ -46,6 +54,8 @@ public class MainActivity extends Activity { @Override protected void onActivityResult(int requestCode, int resultCode, Intent dataIntent) { + BluetoothDevice dev; + super.onActivityResult(requestCode, resultCode, dataIntent); switch (requestCode) { case REQUEST_ENABLE_BT: @@ -56,9 +66,14 @@ public class MainActivity extends Activity { break; default: + dev = dataIntent.getExtras().getParcelable("btdevice"); + TextView hello_text = (TextView) findViewById(requestCode); - String messageReturn = resultCode == RESULT_OK ? dataIntent.getStringExtra("scan_ret") : "not OK"; + // String messageReturn = resultCode == RESULT_OK ? dataIntent.getStringExtra("scan_ret") : "not OK"; + + String messageReturn = "got: " + dev.getAddress() + " - " + dev.getName(); hello_text.setText(messageReturn); + connectDevice(dev); } } @@ -87,4 +102,74 @@ public class MainActivity extends Activity { startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); } } + + + + // Gatt connection + + private class GattClientCallback extends BluetoothGattCallback { + private GattClientActionListener mClientActionListener; + + public GattClientCallback(GattClientActionListener clientActionListener) { + mClientActionListener = clientActionListener; + } + + public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) { + Log.d(msg, "onConnectionStateChange() " + status + " " + newState); + gatt.discoverServices(); + } + + public void onServicesDiscovered(BluetoothGatt gatt, int status) { + List serviceList = gatt.getServices(); + + for (BluetoothGattService service : serviceList) { + Log.d(msg, service.getUuid().toString()); + } + + } + } + + private void connectDevice(BluetoothDevice device) { + Log.d(msg, "connectDevice() " + device.getAddress()); + GattClientCallback gattClientCallback = new GattClientCallback(this); + mGatt = device.connectGatt(this, true, gattClientCallback); + } + + + // abstract GattClientActionListener methods + + @Override + public void log(String m) { + Log.d(msg, m); + } + + @Override + public void logError(String m) { + Log.d(msg, "Error: " + m); + } + + @Override + public void setConnected(boolean connected) { + Log.d(msg, "setConnected()"); + } + + @Override + public void initializeTime() { + Log.d(msg, "initializeTime()"); + } + + @Override + public void initializeEcho() { + Log.d(msg, "initializeEcho()"); + } + + @Override + public void disconnectGattServer() { + Log.d(msg, "disconnectGattServer()"); + if (mGatt != null) { + mGatt.disconnect(); + mGatt.close(); + } + } + } diff --git a/Defogger/src/no/mork/android/defogger/ScannerActivity.java b/Defogger/src/no/mork/android/defogger/ScannerActivity.java index bd4e2a9..890a4fd 100644 --- a/Defogger/src/no/mork/android/defogger/ScannerActivity.java +++ b/Defogger/src/no/mork/android/defogger/ScannerActivity.java @@ -101,8 +101,10 @@ public class ScannerActivity extends Activity implements Runnable { public void returnScanResult(BluetoothDevice device) { Log.d(msg, "returnScanResult()"); + stopScan(); Intent intent = new Intent(); intent.putExtra("scan_ret", device.toString()); + intent.putExtra("btdevice", device); setResult(RESULT_OK, intent); finish(); } -- cgit v1.2.3