diff options
author | Bjørn Mork <bjorn@mork.no> | 2019-05-20 18:01:20 +0200 |
---|---|---|
committer | Bjørn Mork <bjorn@mork.no> | 2019-05-31 14:51:51 +0200 |
commit | 56b59d02f08497cca958f502f558e7220f5e112b (patch) | |
tree | 933e55f0a88edfe91189f71c80785e3248f6bc8d | |
parent | 1adea1fbea40d313c3c2d9688b5ec088009452f1 (diff) |
android wip: RecyclerView does not exist in Debian (androidx is missing)
Signed-off-by: Bjørn Mork <bjorn@mork.no>
-rw-r--r-- | Defogger/AndroidManifest.xml | 20 | ||||
-rw-r--r-- | Defogger/Makefile | 9 | ||||
-rw-r--r-- | Defogger/src/no/mork/android/defogger/ScannerActivity.java | 54 |
3 files changed, 45 insertions, 38 deletions
diff --git a/Defogger/AndroidManifest.xml b/Defogger/AndroidManifest.xml index e09de9d..cd75919 100644 --- a/Defogger/AndroidManifest.xml +++ b/Defogger/AndroidManifest.xml @@ -4,18 +4,20 @@ a:versionCode='0' a:versionName='0'> - <!-- minimum required for EC signing key support --> - <uses-sdk a:minSdkVersion="18" /> + <!-- API level 18 required for EC signing key support + API level 21 required for BluetoothLeScanner --> + <uses-sdk a:minSdkVersion="21" /> <uses-permission a:name="android.permission.BLUETOOTH"/> + <!-- BT admin required for scanning --> <uses-permission a:name="android.permission.BLUETOOTH_ADMIN"/> - <!-- not yet... - <uses-permission a:name="android.permission.ACCESS_FINE_LOCATION"/> - --> - <uses-feature a:name="android.hardware.bluetooth_le" a:required="true"/> + <!-- An app must hold ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission in order to get BT scan results. --> + <uses-permission a:name="android.permission.ACCESS_COARSE_LOCATION"/> + + <uses-feature a:name="android.hardware.bluetooth_le" a:required="true"/> <application a:label="Defogger"> - <activity a:name="no.mork.android.defogger.MainActivity"> + <activity a:name=".MainActivity"> <intent-filter> <category a:name="android.intent.category.LAUNCHER"/> <action a:name="android.intent.action.MAIN"/> @@ -23,8 +25,8 @@ </activity> <activity - a:name="no.mork.android.defogger.ScannerActivity" - a:parentActivityName="no.mork.android.defogger.MainActivity" /> + a:name=".ScannerActivity" + a:parentActivityName=".MainActivity" /> </application> diff --git a/Defogger/Makefile b/Defogger/Makefile index 9c4df65..af414ad 100644 --- a/Defogger/Makefile +++ b/Defogger/Makefile @@ -7,18 +7,19 @@ KEYPASS=123456 ## dx is renamed in Debian due to naming conflicts: DX=dalvik-exchange -APIVER=23 +APIVER ?= 23 # This must match whatever dalvik-exchange supports -JAVAVER=8 +JAVAVER ?= 8 -SDKCLASSPATH=/usr/lib/android-sdk/platforms/android-$(APIVER)/android.jar +ANDROID_HOME ?= /usr/lib/android-sdk +SDKCLASSPATH ?= $(ANDROID_HOME)/platforms/android-$(APIVER)/android.jar RESOURCES=layout/activity_main.xml values/strings.xml RES=$(addprefix res/,$(RESOURCES)) ## Temp disabled while we have some non-building classess.... #CLASSES=obj/no/mork/android/defogger/R.class $(patsubst src/%.java,obj/%.class,$(wildcard src/no/mork/android/defogger/util/*.java) $(wildcard src/no/mork/android/defogger/*.java)) -CLASSES=obj/no/mork/android/defogger/R.class $(patsubst src/%.java,obj/%.class,src/no/mork/android/defogger/MainActivity.java src/no/mork/android/defogger/ScannerActivity.java) +CLASSES=obj/no/mork/android/defogger/R.class $(patsubst src/%.java,obj/%.class,src/no/mork/android/defogger/MainActivity.java src/no/mork/android/defogger/ScannerActivity.java src/no/mork/android/defogger/ScanListAdapter.java) all: defogger.apk diff --git a/Defogger/src/no/mork/android/defogger/ScannerActivity.java b/Defogger/src/no/mork/android/defogger/ScannerActivity.java index 5ec114f..552a746 100644 --- a/Defogger/src/no/mork/android/defogger/ScannerActivity.java +++ b/Defogger/src/no/mork/android/defogger/ScannerActivity.java @@ -3,16 +3,17 @@ package no.mork.android.defogger; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; +import android.bluetooth.le.BluetoothLeScanner; +import android.bluetooth.le.ScanCallback; import android.content.Context; import android.content.Intent; +import android.support.v7.widget.RecyclerView; import android.os.Bundle; import android.os.Handler; -//import android.widget.ArrayAdapter; import android.widget.Toast; -//class LeDeviceListAdapter extends ArrayAdapter { -// protected void addDevice(final BluetoothDevice device); -//} + +// lots of nice examples: https://www.programcreek.com/java-api-examples/index.php?api=android.bluetooth.le.ScanCallback public class ScannerActivity extends Activity { @@ -21,28 +22,33 @@ public class ScannerActivity extends Activity { private BluetoothAdapter bluetoothAdapter; private boolean mScanning; private Handler handler; - // private LeDeviceListAdapter leDeviceListAdapter; - private BluetoothAdapter.LeScanCallback leScanCallback; + private ScanCallback leScanCallback; + private BluetoothLeScanner btScanner; + private RecyclerView recyclerView; + private RecyclerView.Adapter mAdapter; + private RecyclerView.LayoutManager layoutManager; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - //setContentView(R.layout.scanning); + setContentView(R.layout.activity_scanner); + recyclerView = (RecyclerView) findViewById(R.id.my_recycler_view); + recyclerView.setHasFixedSize(true); + layoutManager = new LinearLayoutManager(this); + recyclerView.setLayoutManager(layoutManager); + mAdapter = new ScanListAdapter(myDataset); + recyclerView.setAdapter(mAdapter); + bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); + btScanner = bluetoothAdapter.getBluetoothLeScanner(); - leScanCallback = new BluetoothAdapter.LeScanCallback() { - + leScanCallback = new ScanCallback() { @Override - public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) { - runOnUiThread(new Runnable() { - - @Override - public void run() { - // leDeviceListAdapter.addDevice(device); - // leDeviceListAdapter.notifyDataSetChanged(); - } - }); + public void onScanResult(int callbackType, ScanResult result) { + super.onScanResult(callbackType, result); + mAdapter.addDevice(result.getDevice().getAddress()); } }; @@ -56,22 +62,20 @@ public class ScannerActivity extends Activity { } protected void scanForCamera(final boolean enable) { - if (enable) { + mScanning = enable; + if (enable) { // Stops scanning after a pre-defined scan period. handler.postDelayed(new Runnable() { @Override public void run() { mScanning = false; - bluetoothAdapter.stopLeScan(leScanCallback); + btScanner.stopScan(leScanCallback); } }, SCAN_PERIOD); - mScanning = true; - bluetoothAdapter.startLeScan(leScanCallback); + btScanner.startScan(leScanCallback); } else { - mScanning = false; - bluetoothAdapter.stopLeScan(leScanCallback); + btScanner.stopScan(leScanCallback); } } - } |