Browse Source

Password validation for bluetooth connection to the device

master
Krish 1 year ago
parent
commit
7c6dfdb3e1
4 changed files with 350 additions and 69 deletions
  1. +35
    -0
      app/src/main/java/com/example/beacondemo/Activity/DetailActivity.java
  2. +112
    -11
      app/src/main/java/com/example/beacondemo/Activity/MainActivity.java
  3. +98
    -0
      app/src/main/res/layout/activity_detail.xml
  4. +105
    -58
      app/src/main/res/layout/activity_main.xml

+ 35
- 0
app/src/main/java/com/example/beacondemo/Activity/DetailActivity.java View File

@ -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() {


+ 112
- 11
app/src/main/java/com/example/beacondemo/Activity/MainActivity.java View File

@ -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<MinewFrame> 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<MTPeripheral> 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 = "<font color=" + Color.BLACK
+ ">Mac Address : </font><font color="
+ Color.BLACK + ">"+ mac+"</font>";
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<MTPeripheral> 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:


+ 98
- 0
app/src/main/res/layout/activity_detail.xml View File

@ -31,6 +31,104 @@
</RelativeLayout>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="300dp"
app:cardElevation="10dp"
app:cardCornerRadius="20dp"
android:layout_margin="10dp"
app:cardBackgroundColor="#D3D3D3"
app:cardMaxElevation="12dp"
app:cardPreventCornerOverlap="true"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name :"
android:id="@+id/txt_name"
android:layout_marginTop="20dp"
android:textStyle="bold"
>
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Macc :"
android:id="@+id/txt_mac"
android:layout_marginTop="20dp"
android:textStyle="bold"
>
</TextView>
<!--<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Battery :"
android:id="@+id/txt_battery"
android:layout_marginTop="20dp"
android:textStyle="bold"
>
</TextView>
<TextView
android:id="@+id/txt_rssi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textStyle="bold"
android:text="Rssi :"></TextView>-->
<TextView
android:id="@+id/txt_xaxis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textStyle="bold"
android:text="X axis :"></TextView>
<TextView
android:id="@+id/txt_yaxis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textStyle="bold"
android:text="Y axis :"></TextView>
<TextView
android:id="@+id/txt_zaxis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textStyle="bold"
android:text="Z axis :"></TextView>
<TextView
android:id="@+id/txt_device"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textStyle="bold"
android:text="Device range :"></TextView>
</LinearLayout>
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/tv_set"
android:layout_width="wrap_content"


+ 105
- 58
app/src/main/res/layout/activity_main.xml View File

@ -10,72 +10,20 @@
android:orientation="vertical"
android:padding="20dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name :"
android:id="@+id/txt_name"
android:layout_marginTop="20dp"
>
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Macc :"
android:id="@+id/txt_mac"
android:layout_marginTop="20dp"
>
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Battery :"
android:id="@+id/txt_battery"
android:layout_marginTop="20dp"
>
</TextView>
<TextView
android:id="@+id/txt_rssi"
android:id="@+id/txt_Condevice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Rssi :"></TextView>
<TextView
android:id="@+id/txt_xaxis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="X axis :"></TextView>
<TextView
android:id="@+id/txt_yaxis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Y axis :"></TextView>
<TextView
android:id="@+id/txt_zaxis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Z axis :"></TextView>
<TextView
android:id="@+id/txt_device"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Device range :"></TextView>
android:textStyle="bold"
android:textColor="@color/black"
android:textSize="20sp"
android:text="Connected devices"></TextView>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle"
@ -86,6 +34,105 @@
</androidx.recyclerview.widget.RecyclerView>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="450dp"
app:cardElevation="10dp"
app:cardCornerRadius="20dp"
android:layout_margin="10dp"
app:cardBackgroundColor="@color/white"
app:cardMaxElevation="12dp"
app:cardPreventCornerOverlap="true"
app:cardUseCompatPadding="true"
android:visibility="gone">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name :"
android:id="@+id/txt_name"
android:layout_marginTop="20dp"
android:textStyle="bold"
>
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Macc :"
android:id="@+id/txt_mac"
android:layout_marginTop="20dp"
android:textStyle="bold"
>
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Battery :"
android:id="@+id/txt_battery"
android:layout_marginTop="20dp"
android:textStyle="bold"
>
</TextView>
<TextView
android:id="@+id/txt_rssi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textStyle="bold"
android:text="Rssi :"></TextView>
<TextView
android:id="@+id/txt_xaxis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textStyle="bold"
android:text="X axis :"></TextView>
<TextView
android:id="@+id/txt_yaxis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textStyle="bold"
android:text="Y axis :"></TextView>
<TextView
android:id="@+id/txt_zaxis"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textStyle="bold"
android:text="Z axis :"></TextView>
<TextView
android:id="@+id/txt_device"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textStyle="bold"
android:text="Device range :"></TextView>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>

Loading…
Cancel
Save