summaryrefslogtreecommitdiff
path: root/Defogger/src/no/mork/android/defogger/ScannerActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'Defogger/src/no/mork/android/defogger/ScannerActivity.java')
-rw-r--r--Defogger/src/no/mork/android/defogger/ScannerActivity.java63
1 files changed, 51 insertions, 12 deletions
diff --git a/Defogger/src/no/mork/android/defogger/ScannerActivity.java b/Defogger/src/no/mork/android/defogger/ScannerActivity.java
index b669e0b..af2871c 100644
--- a/Defogger/src/no/mork/android/defogger/ScannerActivity.java
+++ b/Defogger/src/no/mork/android/defogger/ScannerActivity.java
@@ -18,9 +18,14 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.ParcelUuid;
import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
+import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
@@ -33,13 +38,13 @@ public class ScannerActivity extends Activity implements Runnable {
private BluetoothLeScanner btScanner;
private boolean mScanning;
private ScanCallback leScanCallback;
- private ScanListAdapter scanlistAdapter;
+ private ScanAdapter scanlistAdapter;
private class BtleScanCallback extends ScanCallback {
- private ScanListAdapter mScanResults;
+ private ScanAdapter mScanResults;
- BtleScanCallback(ScanListAdapter scanResults) {
+ BtleScanCallback(ScanAdapter scanResults) {
mScanResults = scanResults;
}
@@ -64,34 +69,68 @@ public class ScannerActivity extends Activity implements Runnable {
private void addScanResult(ScanResult result) {
BluetoothDevice device = result.getDevice();
+
+ /* filter result manually, since the filter API is dysfunctional */
+ if (device.getName() == null || mScanResults.getPosition(device) >=0) // avoid duplicates and ignore nameless devices
+ return;
+
+ /* FIXME: further filtering on camera service */
mScanResults.add(device);
}
};
+ private class ScanAdapter extends ArrayAdapter<BluetoothDevice> {
+ private ScannerActivity ctx;
+ private int resource;
+
+ public ScanAdapter(Context context, int resource) {
+ super(context, resource);
+ ctx = (ScannerActivity)context;
+ this.resource = resource;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ BluetoothDevice device = getItem(position);
+
+ if (convertView == null) {
+ convertView = LayoutInflater.from(ctx).inflate(resource, parent, false);
+ }
+
+ TextView txt = (TextView) convertView.findViewById(R.id.scanitem);
+ txt.setText(device.getAddress() + " - " + device.getName());
+
+ // react when selecting iteam
+ convertView.setOnClickListener(new OnClickListener() {
+ private BluetoothDevice ret = device;
+
+ @Override
+ public void onClick(View v) {
+ Log.d(msg, "ScanListAdapter: onClick() will return " + ret.getName());
+ ctx.returnScanResult(ret);
+ }
+ });
+
+ return convertView;
+ }
+ }
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scanner);
ListView listView = (ListView) findViewById(R.id.scanlist_view);
- scanlistAdapter = new ScanListAdapter(this, R.layout.item_scan, R.id.scanitem);
+ scanlistAdapter = new ScanAdapter(this, R.layout.item_scan);
listView.setAdapter(scanlistAdapter);
leScanCallback = new BtleScanCallback(scanlistAdapter);
-
- CharSequence text = "Hello toast!";
-
- Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();
- Intent intent = new Intent();
- intent.putExtra("scan_ret", "This data is returned when scan activity is finished.");
- setResult(RESULT_OK, intent);
}
@Override
protected void onResume() {
super.onResume();
startScan();
- //finish();
}
@Override