From 7c6dfdb3e191150cdef0168108e818c4ec9a56a1 Mon Sep 17 00:00:00 2001 From: Krish Date: Tue, 4 Apr 2023 20:00:03 +0530 Subject: [PATCH] Password validation for bluetooth connection to the device --- .../beacondemo/Activity/DetailActivity.java | 35 ++++ .../beacondemo/Activity/MainActivity.java | 123 +++++++++++-- app/src/main/res/layout/activity_detail.xml | 98 +++++++++++ app/src/main/res/layout/activity_main.xml | 163 +++++++++++------- 4 files changed, 350 insertions(+), 69 deletions(-) diff --git a/app/src/main/java/com/example/beacondemo/Activity/DetailActivity.java b/app/src/main/java/com/example/beacondemo/Activity/DetailActivity.java index ee6fc73..ec53903 100644 --- a/app/src/main/java/com/example/beacondemo/Activity/DetailActivity.java +++ b/app/src/main/java/com/example/beacondemo/Activity/DetailActivity.java @@ -2,6 +2,8 @@ package com.example.beacondemo.Activity; import androidx.appcompat.app.AppCompatActivity; +import android.content.Intent; +import android.graphics.Color; import android.os.Bundle; import android.util.Log; import android.view.View; @@ -31,6 +33,10 @@ public class DetailActivity extends AppCompatActivity implements View.OnClickLis int mCurSlot = 2; + TextView txt_name,txt_mac,txt_battery,txt_rssi,txt_device,txt_xaxis,txt_yaxis,txt_zaxis; + String mac,name; + int battery,rssi; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -44,6 +50,35 @@ public class DetailActivity extends AppCompatActivity implements View.OnClickLis private void initView() { ivBack = findViewById(R.id.iv_back); tvSet = findViewById(R.id.tv_set); + + //txt_battery=findViewById(R.id.txt_battery); + txt_mac=findViewById(R.id.txt_mac); + txt_name=findViewById(R.id.txt_name); + //txt_rssi=findViewById(R.id.txt_rssi); + txt_device=findViewById(R.id.txt_device); + txt_xaxis=findViewById(R.id.txt_xaxis); + txt_yaxis=findViewById(R.id.txt_yaxis); + txt_zaxis=findViewById(R.id.txt_zaxis); + + Intent intent = getIntent(); + String mac = intent.getStringExtra("mac"); + String name = intent.getStringExtra("name"); + int battery = intent.getIntExtra("battery",0); + int rssi = intent.getIntExtra("rssi",0); + String xaxis = intent.getStringExtra("xaxis"); + String yaxis = intent.getStringExtra("yaxis"); + String zaxis = intent.getStringExtra("zaxis"); + + txt_mac.setText("Mac Address : "+mac); + txt_name.setText("Device Name : "+name); + /*txt_rssi.setText(rssi); + txt_battery.setText(battery);*/ + txt_xaxis.setText("X axis: " +xaxis); + txt_yaxis.setText("Y axis: " +yaxis); + txt_zaxis.setText("Z axis: " +zaxis); + txt_device.setText("Device in range. "); + txt_device.setTextColor(Color.BLUE); + } private void initData() { diff --git a/app/src/main/java/com/example/beacondemo/Activity/MainActivity.java b/app/src/main/java/com/example/beacondemo/Activity/MainActivity.java index fe5bb95..4ad7f84 100644 --- a/app/src/main/java/com/example/beacondemo/Activity/MainActivity.java +++ b/app/src/main/java/com/example/beacondemo/Activity/MainActivity.java @@ -15,8 +15,10 @@ import android.bluetooth.BluetoothManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.graphics.Color; import android.os.Build; import android.os.Bundle; +import android.text.Html; import android.util.Log; import android.view.View; import android.widget.TextView; @@ -29,6 +31,7 @@ import com.example.beacondemo.adapter.RecycleViewDivider; import com.minew.beaconplus.sdk.MTCentralManager; import com.minew.beaconplus.sdk.MTFrameHandler; import com.minew.beaconplus.sdk.MTPeripheral; +import com.minew.beaconplus.sdk.Utils.LogUtils; import com.minew.beaconplus.sdk.enums.BluetoothState; import com.minew.beaconplus.sdk.enums.ConnectionStatus; import com.minew.beaconplus.sdk.enums.FrameType; @@ -76,7 +79,7 @@ public class MainActivity extends AppCompatActivity { ArrayList advFrames; TextView txt_name,txt_mac,txt_battery,txt_rssi,txt_device,txt_xaxis,txt_yaxis,txt_zaxis; - String mac,name; + String mac,name,xaxis,yaxis,zaxis; int battery,rssi; @Override @@ -116,6 +119,7 @@ public class MainActivity extends AppCompatActivity { @SuppressLint("MissingPermission") private void showBLEDialog() { + System.out.println("Hitting the dialog box"); final Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableIntent, REQUEST_ENABLE_BT); } @@ -134,11 +138,14 @@ public class MainActivity extends AppCompatActivity { private void initData() { + + mMtCentralManager.startScan(); mMtCentralManager.setMTCentralManagerListener(new MTCentralManagerListener() { @Override public void onScanedPeripheral(final List peripherals) { Log.e("Peripherals : ", String.valueOf(peripherals.size())); + mAdapter.setData(peripherals); for (MTPeripheral mtPeripheral : peripherals) { // get FrameHandler of a device. MTFrameHandler mtFrameHandler = mtPeripheral.mMTFrameHandler; @@ -146,10 +153,16 @@ public class MainActivity extends AppCompatActivity { name = mtFrameHandler.getName(); // name of device battery = mtFrameHandler.getBattery(); //battery rssi = mtFrameHandler.getRssi(); //rssi - txt_device.setText("Device in range. "); + txt_device.setText("Device in range. "); + txt_device.setTextColor(Color.BLUE); + + String html1 = "Mac Address : "+ mac+""; + + txt_mac.setText(Html.fromHtml(html1)); - txt_mac.setText("Mac Address : "+mac); txt_name.setText("Device Name : "+name); txt_battery.setText("Battery Status : "+battery); txt_rssi.setText(" Rssi : "+rssi); @@ -171,9 +184,23 @@ public class MainActivity extends AppCompatActivity { break; case FrameAccSensor: AccFrame accFrame = (AccFrame) minewFrame;//acc - txt_xaxis.setText("X axis: " + accFrame.getXAxis()); - txt_yaxis.setText("Y axis: " + accFrame.getYAxis()); - txt_zaxis.setText("Z axis: " + accFrame.getZAxis()); + xaxis = String.valueOf(accFrame.getXAxis()); + yaxis = String.valueOf(accFrame.getYAxis()); + zaxis = String.valueOf(accFrame.getZAxis()); + + txt_xaxis.setText("X axis: " + xaxis); + txt_yaxis.setText("Y axis: " + yaxis); + txt_zaxis.setText("Z axis: " + zaxis); + + if (accFrame.getXAxis() == Double.MIN_VALUE) { + Log.v("tag","this value is not available."); + } + if (accFrame.getYAxis() == Double.MIN_VALUE) { + Log.v("tag","this value is not available."); + } + if (accFrame.getZAxis() == Double.MIN_VALUE) { + Log.v("tag","this value is not available."); + } Log.v("beaconplus3", String.valueOf(accFrame.getXAxis() + " "+ accFrame.getYAxis() +" "+ accFrame.getZAxis())); break; case FrameHTSensor: @@ -206,7 +233,7 @@ public class MainActivity extends AppCompatActivity { break; case FrameTVOCSensor://tvoc TvocFrame tvocFrame = (TvocFrame) minewFrame; - Log.v("beaconplus11", "battery:" + tvocFrame.getBattery() + " "+ ",TVOC:"+ tvocFrame.getValue() + " "+ "ppb," + "battery:" " "+ +tvocFrame.getBattery() + "mV"); + Log.v("beaconplus11", "battery:" + tvocFrame.getBattery() + " "+ ",TVOC:"+ tvocFrame.getValue() + " "+ "ppb," + "battery:"+ " "+ +tvocFrame.getBattery() + "mV"); break; case FrameLineBeacon://FrameLineBeacon LineBeaconFrame lineBeacon = ((LineBeaconFrame) minewFrame); @@ -272,15 +299,76 @@ public class MainActivity extends AppCompatActivity { } }); + /*mMtCentralManager.connect(mtPeripheral,connectionStatueListener); + ConnectionStatueListener connectionStatueListener = new ConnectionStatueListener(){ + @Override + public void onUpdateConnectionStatus(final ConnectionStatus connectionStatus,final GetPasswordListener getPasswordListener) { + runOnUiThread(new Runnable() { + @Override + public void run() { + switch (connectionStatus){ + case PASSWORDVALIDATING: + String password = "minew123"; + getPasswordListener.getPassword(password); + break; + } + switch (connectionStatus) { + case CONNECTING: + Log.e("minew_tag", ": CONNECTING"); + break; + case CONNECTED: + Log.e("minew_tag", ": CONNECTED"); + break; + case READINGINFO: + //Advanced exercise can be notified when reading firmware information + Log.e("minew_tag", ": Read device firmware information"); + break; + case DEVICEVALIDATING://After successfully verifying the device, write the verification key to the device + LogUtils.e("DEVICEVALIDATING"); + break; + case PASSWORDVALIDATING: + String password = "minew123"; + getPasswordListener.getPassword(password); + break; + case SYNCHRONIZINGTIME://Password verification completed + Log.e("minew_tag", ": SYNCHRONIZINGTIME"); + break; + case READINGCONNECTABLE: + Log.e("minew_tag", ": Read device firmware information"); + LogUtils.e("READINGCONNECTABLE"); + break; + case READINGFEATURE: + LogUtils.e("READINGFEATURE"); + break; + case READINGFRAMES: + LogUtils.e("READINGFRAMES"); + break; + case READINGTRIGGERS: + LogUtils.e("READINGTRIGGERS"); + break; + case READINGSENSORS: + LogUtils.e("READINGSENSORS"); + break; + case COMPLETED: + //At this point the connection is successful and the parameters are written to the device + break; + } + } + }); + } + @Override + public void onError(MTException e) { + } + }; + mMtCentralManager.disconnect(mtPeripheral);*/ } private void initView() { - RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this); txt_battery=findViewById(R.id.txt_battery); txt_mac=findViewById(R.id.txt_mac); txt_name=findViewById(R.id.txt_name); @@ -289,9 +377,11 @@ public class MainActivity extends AppCompatActivity { txt_xaxis=findViewById(R.id.txt_xaxis); txt_yaxis=findViewById(R.id.txt_yaxis); txt_zaxis=findViewById(R.id.txt_zaxis); + RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this); mRecycle.setLayoutManager(layoutManager); mAdapter = new RecycleAdapter(); mRecycle.setAdapter(mAdapter); + System.out.println("Data is set in recyclerview through the adapter"); /*mRecycle.addItemDecoration(new RecycleViewDivider(this, LinearLayoutManager .HORIZONTAL));*/ @@ -358,17 +448,21 @@ public class MainActivity extends AppCompatActivity { } private void initListener() { + + mMtCentralManager.startScan(); mMtCentralManager.setMTCentralManagerListener(new MTCentralManagerListener() { @Override public void onScanedPeripheral(final List peripherals) { Log.e("demo11", " " + peripherals.size()); mAdapter.setData(peripherals); + System.out.println("Data set in the adapter"); } }); mAdapter.setOnItemClickListener(new RecycleAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { mtPeripheral = mAdapter.getData(position); + System.out.println("Inside click listener of the adapter"); mMtCentralManager.connect(mtPeripheral, connectionStatueListener); } @@ -432,9 +526,16 @@ public class MainActivity extends AppCompatActivity { Log.e("tag", "COMPLETED"); Toast.makeText(MainActivity.this, "COMPLETED", Toast.LENGTH_SHORT).show(); mMtCentralManager.disconnect(mtPeripheral); -// Intent intent = new Intent(); -// intent.setClass(MainActivity.this, DetailActivity.class); -// startActivity(intent); + Intent intent = new Intent(); + intent.setClass(MainActivity.this, DetailActivity.class); + intent.putExtra("mac", mac); + intent.putExtra("name", name); + intent.putExtra("battery", battery); + intent.putExtra("rssi", rssi); + intent.putExtra("xaxis", xaxis); + intent.putExtra("yaxis", yaxis); + intent.putExtra("zaxis", zaxis); + startActivity(intent); break; case CONNECTFAILED: case DISCONNECTED: diff --git a/app/src/main/res/layout/activity_detail.xml b/app/src/main/res/layout/activity_detail.xml index c08406d..9cdd446 100644 --- a/app/src/main/res/layout/activity_detail.xml +++ b/app/src/main/res/layout/activity_detail.xml @@ -31,6 +31,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + - - - - - - - - - + android:textStyle="bold" + android:textColor="@color/black" + android:textSize="20sp" + android:text="Connected devices"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file