Merge branch 'BLE' into O2SAT

This commit is contained in:
Graham Jones
2021-11-09 08:16:01 +00:00
4 changed files with 111 additions and 18 deletions

View File

@@ -39,6 +39,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
@@ -53,6 +54,7 @@ public class BLEScanActivity extends ListActivity {
private BluetoothAdapter mBluetoothAdapter;
private boolean mScanning;
private Handler mHandler;
private boolean bleAvailable = false;
private boolean mPermissionsRequested = false;
private final String TAG = "BLEScanActivity";
@@ -70,6 +72,7 @@ public class BLEScanActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ble_scan_activity);
//this.getActionBar().setTitle(R.string.title_devices);
this.setTitle(R.string.title_devices);
mHandler = new Handler();
@@ -79,6 +82,8 @@ public class BLEScanActivity extends ListActivity {
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();
finish();
} else {
bleAvailable = true;
}
// Initializes a Bluetooth adapter. For API level 18 and above, get a reference to
@@ -125,15 +130,40 @@ public class BLEScanActivity extends ListActivity {
return true;
}
public void onScanButtonClick(View v) {
scanLeDevice(true);
}
@Override
protected void onResume() {
super.onResume();
SharedPreferences SP = PreferenceManager
.getDefaultSharedPreferences(this);
TextView tv = (TextView) findViewById(R.id.current_ble_device_tv);
try {
String bleAddr = SP.getString("BLE_Device_Addr", "none");
String bleName = SP.getString("BLE_Device_Name", "none");
tv.setText("Current Device=" + bleName + " (" + bleAddr + ")");
} catch(Exception e) {
tv.setText("Current Device=" + "none" + " (" + "none" + ")");
}
tv = (TextView)findViewById(R.id.ble_present_tv);
if (mBluetoothAdapter == null) {
tv.setText("ERROR - Bluetooth Adapter Not Present");
} else {
tv.setText("Bluetooth Adapter Present - OK");
}
// Ensures Bluetooth is enabled on the device. If Bluetooth is not currently enabled,
// fire an intent to display a dialog asking the user to grant permission to enable it.
tv = (TextView)findViewById(R.id.ble_adapter_tv);
if (!mBluetoothAdapter.isEnabled()) {
tv.setText("ERROR - Bluetoot NOT Enabled");
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
} else {
tv.setText("Bluetooth Adapter Enabled OK");
}
// Initializes list view adapter.
@@ -191,6 +221,7 @@ public class BLEScanActivity extends ListActivity {
}
private void scanLeDevice(final boolean enable) {
TextView tv;
requestPermissions(this);
if (enable) {
// Stops scanning after a pre-defined scan period.
@@ -200,14 +231,28 @@ public class BLEScanActivity extends ListActivity {
mScanning = false;
mBluetoothAdapter.stopLeScan(mLeScanCallback);
invalidateOptionsMenu();
TextView tv = (TextView)(findViewById(R.id.ble_scan_status_tv));
tv.setText("Stopped");
Button b = (Button)findViewById(R.id.startScanButton);
b.setEnabled(true);
}
}, SCAN_PERIOD);
mScanning = true;
mBluetoothAdapter.startLeScan(mLeScanCallback);
tv = (TextView)(findViewById(R.id.ble_scan_status_tv));
tv.setText("Scanning");
Button b = (Button)findViewById(R.id.startScanButton);
b.setEnabled(false);
} else {
mScanning = false;
mBluetoothAdapter.stopLeScan(mLeScanCallback);
tv = (TextView)(findViewById(R.id.ble_scan_status_tv));
tv.setText("Stopped");
Button b = (Button)findViewById(R.id.startScanButton);
b.setEnabled(true);
}
invalidateOptionsMenu();
}

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/ble_scan_status_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16pt"
android:text="ble_scan_status_tv" />
<Button
android:id="@+id/startScanButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onScanButtonClick"
android:text="Start Scan"/>
</LinearLayout>
<TextView
android:id="@+id/ble_present_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ble_present_tv" />
<TextView
android:id="@+id/ble_adapter_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ble_adapter_tv" />
<TextView
android:id="@+id/current_ble_device_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="current_ble_device_tv" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#00FF00"
android:drawSelectorOnTop="false" />
<TextView
android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:text="No data" />
</LinearLayout>
</LinearLayout>