mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-09 05:24:44 +01:00
don't drop known BT devices on every scan
Instead, keep them forever (for now), sorted by how long since they were last seen. A Delete button's probably needed to prevent ex-partners from sticking around too long. :-)
This commit is contained in:
parent
c7f9fc465f
commit
853578eb7d
2 changed files with 57 additions and 11 deletions
|
@ -1,6 +1,6 @@
|
||||||
/* -*- compile-command: "find-and-gradle.sh insXw4Deb"; -*- */
|
/* -*- compile-command: "find-and-gradle.sh insXw4Deb"; -*- */
|
||||||
/*
|
/*
|
||||||
* Copyright 2009 - 2016 by Eric House (xwords@eehouse.org). All rights
|
* Copyright 2009 - 2019 by Eric House (xwords@eehouse.org). All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
|
@ -34,6 +34,8 @@ import org.eehouse.android.xw4.DBUtils.SentInvitesInfo;
|
||||||
import org.eehouse.android.xw4.DlgDelegate.Action;
|
import org.eehouse.android.xw4.DlgDelegate.Action;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -53,11 +55,47 @@ public class BTInviteDelegate extends InviteDelegate {
|
||||||
HashMap<String, Long> stamps = new HashMap<>();
|
HashMap<String, Long> stamps = new HashMap<>();
|
||||||
|
|
||||||
void add( BluetoothDevice dev ) {
|
void add( BluetoothDevice dev ) {
|
||||||
pairs = TwoStringPair.add( pairs, dev.getAddress(), dev.getName() );
|
String devName = dev.getName();
|
||||||
stamps.put( dev.getName(), System.currentTimeMillis() );
|
Log.d( TAG, "add(%s)", devName );
|
||||||
|
// If it's already there, update it. Otherwise create new
|
||||||
|
boolean alreadyHave = false;
|
||||||
|
if ( null != pairs ) {
|
||||||
|
for ( TwoStringPair pair : pairs ) {
|
||||||
|
alreadyHave = pair.str2.equals(devName);
|
||||||
|
if ( alreadyHave ) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( !alreadyHave ) {
|
||||||
|
pairs = TwoStringPair.add( pairs, dev.getAddress(), devName );
|
||||||
|
}
|
||||||
|
stamps.put( devName, System.currentTimeMillis() );
|
||||||
|
sort();
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean empty() { return pairs == null || pairs.length == 0; }
|
boolean empty() { return pairs == null || pairs.length == 0; }
|
||||||
|
|
||||||
|
private void sort()
|
||||||
|
{
|
||||||
|
Arrays.sort( pairs, new Comparator<TwoStringPair>() {
|
||||||
|
@Override
|
||||||
|
public int compare( TwoStringPair rec1, TwoStringPair rec2 ) {
|
||||||
|
long val1 = stamps.get( rec1.str2 );
|
||||||
|
long val2 = stamps.get( rec2.str2 );
|
||||||
|
return (int)(val2 - val1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void hackOneIn()
|
||||||
|
{
|
||||||
|
String name = "Faker";
|
||||||
|
if ( !stamps.containsKey(name) ) {
|
||||||
|
pairs = TwoStringPair.add( pairs, "00:00:00:00:00:00", name );
|
||||||
|
stamps.put( name, System.currentTimeMillis() );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
private Persisted mPersisted;
|
private Persisted mPersisted;
|
||||||
|
|
||||||
|
@ -87,8 +125,10 @@ public class BTInviteDelegate extends InviteDelegate {
|
||||||
protected void init( Bundle savedInstanceState )
|
protected void init( Bundle savedInstanceState )
|
||||||
{
|
{
|
||||||
String msg = getQuantityString( R.plurals.invite_bt_desc_fmt_2, m_nMissing,
|
String msg = getQuantityString( R.plurals.invite_bt_desc_fmt_2, m_nMissing,
|
||||||
m_nMissing );
|
m_nMissing )
|
||||||
|
+ getString( R.string.invite_bt_desc_postscript );
|
||||||
super.init( msg, 0 );
|
super.init( msg, 0 );
|
||||||
|
|
||||||
addButtonBar( R.layout.bt_buttons, BUTTONIDS );
|
addButtonBar( R.layout.bt_buttons, BUTTONIDS );
|
||||||
|
|
||||||
load();
|
load();
|
||||||
|
@ -173,9 +213,6 @@ public class BTInviteDelegate extends InviteDelegate {
|
||||||
{
|
{
|
||||||
int count = BTService.getPairedCount( m_activity );
|
int count = BTService.getPairedCount( m_activity );
|
||||||
if ( 0 < count ) {
|
if ( 0 < count ) {
|
||||||
mPersisted.pairs = null;
|
|
||||||
updateListAdapter( null );
|
|
||||||
|
|
||||||
String msg = getQuantityString( R.plurals.bt_scan_progress_fmt, count, count );
|
String msg = getQuantityString( R.plurals.bt_scan_progress_fmt, count, count );
|
||||||
m_progress = ProgressDialog.show( m_activity, msg, null, true, true );
|
m_progress = ProgressDialog.show( m_activity, msg, null, true, true );
|
||||||
|
|
||||||
|
@ -209,6 +246,12 @@ public class BTInviteDelegate extends InviteDelegate {
|
||||||
if ( null == mPersisted ) {
|
if ( null == mPersisted ) {
|
||||||
mPersisted = new Persisted();
|
mPersisted = new Persisted();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( BuildConfig.DEBUG ) {
|
||||||
|
// For testing, let's make there always be something that never
|
||||||
|
// responds to scans so we can see how it ages.
|
||||||
|
mPersisted.hackOneIn();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void store()
|
private void store()
|
||||||
|
|
|
@ -1859,12 +1859,15 @@
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<plurals name="invite_bt_desc_fmt_2">
|
<plurals name="invite_bt_desc_fmt_2">
|
||||||
<item quantity="one">Please check the device you want to include
|
<item quantity="one">Please check the device you want to include
|
||||||
in this game.\n\n(The list is of devices you\'ve paired and on
|
in this game.</item>
|
||||||
which CrossWords is currently running.)</item>
|
|
||||||
<item quantity="other">Please check up to %1$d device[s] you
|
<item quantity="other">Please check up to %1$d device[s] you
|
||||||
want to include in this game.\n\n(The list is of devices you\'ve
|
want to include in this game.</item>
|
||||||
paired and on which CrossWords is currently running.)</item>
|
|
||||||
</plurals>
|
</plurals>
|
||||||
|
|
||||||
|
<!-- Appended to above -->
|
||||||
|
<string name="invite_bt_desc_postscript">\n\n(The list is of devices you\'ve
|
||||||
|
paired and on which CrossWords has been detected.)</string>
|
||||||
|
|
||||||
<plurals name="bt_scan_progress_fmt">
|
<plurals name="bt_scan_progress_fmt">
|
||||||
<item quantity="one">Scanning for CrossWords</item>
|
<item quantity="one">Scanning for CrossWords</item>
|
||||||
<item quantity="other">Scanning for CrossWords on %1$d paired devices.</item>
|
<item quantity="other">Scanning for CrossWords on %1$d paired devices.</item>
|
||||||
|
|
Loading…
Reference in a new issue