From 8534dee0b736379963250da9d35ed5fcbe0a3405 Mon Sep 17 00:00:00 2001 From: Bjørn Mork Date: Mon, 20 May 2019 18:01:20 +0200 Subject: android wip: RecyclerView does not exist in Debian (androidx is missing) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bjørn Mork --- Defogger/AndroidManifest.xml | 20 ++++---- Defogger/Makefile | 9 ++-- .../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'> - - + + + - - + + + + - + @@ -23,8 +25,8 @@ + a:name=".ScannerActivity" + a:parentActivityName=".MainActivity" /> 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); } } - } -- cgit v1.2.3