diff --git a/F-Droid/res/layout/swap_wifi_qr.xml b/F-Droid/res/layout/swap_wifi_qr.xml
index 38dba512b..006be63ac 100644
--- a/F-Droid/res/layout/swap_wifi_qr.xml
+++ b/F-Droid/res/layout/swap_wifi_qr.xml
@@ -45,13 +45,6 @@
android:layout_gravity="center"
android:id="@+id/btn_qr_scanner"/>
-
-
-
\ No newline at end of file
diff --git a/F-Droid/res/values-cs/strings.xml b/F-Droid/res/values-cs/strings.xml
index f9001f7e3..c8c4180d6 100644
--- a/F-Droid/res/values-cs/strings.xml
+++ b/F-Droid/res/values-cs/strings.xml
@@ -24,8 +24,6 @@
Vyžádat si oprávnění roota k instalaci, aktualizaci či odstraňování balíčkůInstalovat s použitím systémových oprávněníPoužít systémová oprávnění k instalování, aktualizaci a odebírání balíčků
- Oznamovat místní repozitář
- Oznamovat místní repozitář pomocí Bonjour (mDNS)Název místního repozitářeOznamovaný název místního repozitáře: %sPoužít soukromé připojení
diff --git a/F-Droid/res/values-de/strings.xml b/F-Droid/res/values-de/strings.xml
index 9f71678e4..e0b2a4f68 100644
--- a/F-Droid/res/values-de/strings.xml
+++ b/F-Droid/res/values-de/strings.xml
@@ -28,8 +28,6 @@
Root-Rechte anfordern, um Pakete zu installieren, zu aktualisieren und zu entfernenMit Verwendung von Systemberechtigungen installierenSystemberechtigungen verwenden, um Pakete zu installieren, zu aktualisieren und zu entfernen
- Lokale Paketquelle übertragen
- Die lokale Paketquelle durch Verwendung von Bonjour (mDNS) bewerbenName Ihrer lokalen PaketquelleDer werbende Titel Ihrer lokalen Paketquelle: %sGesicherte Verbindung verwenden
diff --git a/F-Droid/res/values-es/strings.xml b/F-Droid/res/values-es/strings.xml
index 168ea8d16..1270b229c 100644
--- a/F-Droid/res/values-es/strings.xml
+++ b/F-Droid/res/values-es/strings.xml
@@ -28,8 +28,6 @@
Pedir acceso root para instalar, actualizar y borrar paquetesInstalar usando permisos de sistemaUtilice permisos de sistema para instalar , actualizar y eliminar paquetes
- Transmitir repositorio local
- Publicar repositorio local usando Bonjour(mDNS)Nombre de tu repo localEl título que se publicita para el repo local: %sUsar Conexión Privada
diff --git a/F-Droid/res/values-fi/strings.xml b/F-Droid/res/values-fi/strings.xml
index 14e92c2b0..759fa44ed 100644
--- a/F-Droid/res/values-fi/strings.xml
+++ b/F-Droid/res/values-fi/strings.xml
@@ -28,8 +28,6 @@
Pyydä root-oikeuksia asennuksiin, päivityksiin ja pakettien poistoonAsenna käytäen järjestelmän oikeuksiaKäytä järjestelmän oikeuksia asennuksiin, päivityksiin ja pakettien poistoihin.
- Kuuluta paikallista säilöä
- Mainosta paikallista säilöäsi Bonjour-palvelua käyttäen (mDNS)Paikallisen säilösi nimiPaikallisen säilösi mainostettava otsikko: %sKäytä yksityistä yhteyttä
diff --git a/F-Droid/res/values-fr/strings.xml b/F-Droid/res/values-fr/strings.xml
index 85912f299..839389776 100644
--- a/F-Droid/res/values-fr/strings.xml
+++ b/F-Droid/res/values-fr/strings.xml
@@ -28,8 +28,6 @@
Demander les droits root pour installer, mettre à jour et supprimer des paquetsInstaller en utilisant les permissions systèmesUtiliser les permissions du système pour installer, mettre à jour et supprimer des paquets
- Diffuser votre dépôt local
- Annoncer votre dépôt local avec \"Bonjour\" (mDNS)Nom de votre dépôt localLe nom public de votre dépôt local: %sUtilisez une connexion privée
diff --git a/F-Droid/res/values-it/strings.xml b/F-Droid/res/values-it/strings.xml
index 791c459b1..bb4fa370b 100644
--- a/F-Droid/res/values-it/strings.xml
+++ b/F-Droid/res/values-it/strings.xml
@@ -28,8 +28,6 @@
Richiedi il root per installare,aggiornare e rimuovere i pacchettiInstalla usando i permessi di sistemaUsa i permessi di sistema per installare,aggiornare e rimuovere i pacchetti
- Condividi la Repo locale
- Lancia la tua repo usando Bonjour (mDNS)Nome della tua Repo LocaleIl testo pubblico della tua repo: %sUsa una Connessione Privata
diff --git a/F-Droid/res/values-ja/strings.xml b/F-Droid/res/values-ja/strings.xml
index d9a3eb500..cb253a715 100644
--- a/F-Droid/res/values-ja/strings.xml
+++ b/F-Droid/res/values-ja/strings.xml
@@ -28,8 +28,6 @@
パッケージのインストール、更新、および削除に管理者権限を要求するシステムアクセス許可を使用してインストールパッケージのインストール、更新、および削除にシステムアクセス許可を使用する
- ローカルリポジトリをブロードキャスト
- Bonjour (mDNS) を使用してローカルリポジトリを公開するローカルリポジトリの名前公開するローカルリポジトリの題名: %sプライベート接続を使用する
diff --git a/F-Droid/res/values-nb/strings.xml b/F-Droid/res/values-nb/strings.xml
index 85305e7ab..360c80c71 100644
--- a/F-Droid/res/values-nb/strings.xml
+++ b/F-Droid/res/values-nb/strings.xml
@@ -28,8 +28,6 @@
Spør etter root tilgang for å installere, oppdatere, og fjerne applikasjoner.Installer ved bruk av system-tilgangBruk system rettigheter til å installere, oppdatere, og fjerne applikasjoner.
- Kringkast lokal pakkebrønn
- Reklamer for din lokale pakkebrønn ved bruk av Bonjour (mDNS)Navn på lokal pakkebrønnOffentliggjort tittel for din lokale pakkebrønn: %sBruk privat tilkobling
diff --git a/F-Droid/res/values-pl/strings.xml b/F-Droid/res/values-pl/strings.xml
index adf0f2b55..fd1271695 100644
--- a/F-Droid/res/values-pl/strings.xml
+++ b/F-Droid/res/values-pl/strings.xml
@@ -17,8 +17,6 @@
Żądaj dostępu roota do instalacji, aktualizacji i usuwania pakietówInstaluj na uprawnieniach systemowychUżywaj uprawnień systemowych do instalacji, aktualizacji i usuwania pakietów
- Widoczność repozytorium
- Udostępniaj repozytorium lokalne przez Bonjour (mDNS)Nazwa lokalnego repozytoriumWyświetlana nazwa repozytorium lokalnego: %sUżyj zabezpieczonego połączenia
diff --git a/F-Droid/res/values-pt-rBR/strings.xml b/F-Droid/res/values-pt-rBR/strings.xml
index 73a02fbb3..fc882f770 100644
--- a/F-Droid/res/values-pt-rBR/strings.xml
+++ b/F-Droid/res/values-pt-rBR/strings.xml
@@ -19,8 +19,6 @@
Solicitar acesso root para instalar, atualizar e remover pacotesInstalar usando permissões do sistemaUsar permissões do sistema para instalar, atualizar e remover pacotes
- Transmitir repositório local
- Anunciar seu repositório local usando Bonjour (mDNS)Nome do seu repositório localTítulo anunciado do seu repositório local: %sUsar conexão privada
diff --git a/F-Droid/res/values-ru/strings.xml b/F-Droid/res/values-ru/strings.xml
index c4e5f75e0..85fc3ec40 100644
--- a/F-Droid/res/values-ru/strings.xml
+++ b/F-Droid/res/values-ru/strings.xml
@@ -30,8 +30,6 @@
Запрашивать права root пользователя для установки, обновления и удаления приложенийУстанавливать используя системные привилегииИспользовать системные привилегии для установки, обновления и удаления приложений
- Транслировать локальный репозиторий
- Рекламировать ваш репозиторий используя Bonjour (mDNS)Название вашего локального репозиторияВаш локальный репозиторий рекламируется под именем: %sИспользовать частное соединение
diff --git a/F-Droid/res/values-sc/strings.xml b/F-Droid/res/values-sc/strings.xml
index 32a8637c9..abb78109e 100644
--- a/F-Droid/res/values-sc/strings.xml
+++ b/F-Droid/res/values-sc/strings.xml
@@ -17,8 +17,6 @@
Pedi s\'atzessu root pro installare, agiornare, e remòvrere pachetosInstalla impreande sos permissos de sistemaImprea sos permissos de sistema pro installare, agiornare, e remòvere pachetos
- Cumpartzi su depòsitu locale
- Pùblica su depòsitu tuo impreande Bonjour (mDNS)Nùmene de su Depòsitu Locale tuoSu nùmene pùblicu de su depòsitu locale tuo: %sImprea una cunnessione privada
diff --git a/F-Droid/res/values-sk/strings.xml b/F-Droid/res/values-sk/strings.xml
index 55b0534d6..56cfce583 100644
--- a/F-Droid/res/values-sk/strings.xml
+++ b/F-Droid/res/values-sk/strings.xml
@@ -4,8 +4,6 @@
Žiadať root prístup na inštaláciu, aktualizácie a odstránenie balíkovInštalovať s povoleniami systémuPoužívať systémové povolenia na inštaláciu, aktualizácie a odstránenie balíkov
- Vysielať miestne repo
- Propagovať miesto repo pomocou Bonjour (mDNS)Meno miestneho repaZverejnený názov miestneho repa: %sPoužiť bezpečné pripojenie
diff --git a/F-Droid/res/values-sv/strings.xml b/F-Droid/res/values-sv/strings.xml
index 443a2b38b..5b241259d 100644
--- a/F-Droid/res/values-sv/strings.xml
+++ b/F-Droid/res/values-sv/strings.xml
@@ -28,8 +28,6 @@
Efterfråga root-åtkomst för att installera, uppdatera och ta bort paketInstallera med systembehörigheterAnvänd systembehörigheter för att installera, uppdatera och ta bort paket
- Annonsera lokalt förråd
- Annonsera ditt lokala förråd med Bonjour (mDNS)Namn på ditt lokala förrådAnnonserad titel på ditt lokala förråd: %sAnvänd privat anslutning
diff --git a/F-Droid/res/values-tr/strings.xml b/F-Droid/res/values-tr/strings.xml
index a6a079a5a..a737197eb 100644
--- a/F-Droid/res/values-tr/strings.xml
+++ b/F-Droid/res/values-tr/strings.xml
@@ -26,7 +26,6 @@
Uygulamaların yeni sayılacağı gün sayısı: %sRoot erişimi kullanarak yükleSistem-izinlerini kullanarak yükle
- Bonjour (mDNS) kullanarak yerel reponu duyurYerel Deponun AdıYerel deponun duyrulan adı: %sYerel depo için güvenli HTTPS:// bağlantı kullan
diff --git a/F-Droid/res/values/strings.xml b/F-Droid/res/values/strings.xml
index 4cb61289e..b07a7a97b 100644
--- a/F-Droid/res/values/strings.xml
+++ b/F-Droid/res/values/strings.xml
@@ -29,8 +29,6 @@
Request root access to install, update, and remove packagesInstall using system-permissionsUse system permissions to install, update, and remove packages
- Broadcast Local Repo
- Advertise your local repo using Bonjour (mDNS)Name of your Local RepoThe advertised title of your local repo: %sUse Private Connection
diff --git a/F-Droid/res/xml/preferences.xml b/F-Droid/res/xml/preferences.xml
index 9d94bcbc0..5b9dad0c2 100644
--- a/F-Droid/res/xml/preferences.xml
+++ b/F-Droid/res/xml/preferences.xml
@@ -48,10 +48,6 @@
android:key="ignoreTouchscreen" />
-
diff --git a/F-Droid/src/org/fdroid/fdroid/Preferences.java b/F-Droid/src/org/fdroid/fdroid/Preferences.java
index 2502d8eac..100ab149e 100644
--- a/F-Droid/src/org/fdroid/fdroid/Preferences.java
+++ b/F-Droid/src/org/fdroid/fdroid/Preferences.java
@@ -52,7 +52,6 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
public static final String PREF_UPD_LAST = "lastUpdateCheck";
public static final String PREF_ROOT_INSTALLER = "rootInstaller";
public static final String PREF_SYSTEM_INSTALLER = "systemInstaller";
- public static final String PREF_LOCAL_REPO_BONJOUR = "localRepoBonjour";
public static final String PREF_LOCAL_REPO_NAME = "localRepoName";
public static final String PREF_LOCAL_REPO_HTTPS = "localRepoHttps";
public static final String PREF_LANGUAGE = "language";
@@ -86,7 +85,6 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
private final List compactLayoutListeners = new ArrayList<>();
private final List filterAppsRequiringRootListeners = new ArrayList<>();
private final List updateHistoryListeners = new ArrayList<>();
- private final List localRepoBonjourListeners = new ArrayList<>();
private final List localRepoNameListeners = new ArrayList<>();
private final List localRepoHttpsListeners = new ArrayList<>();
@@ -110,10 +108,6 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
return preferences.getBoolean(PREF_SYSTEM_INSTALLER, DEFAULT_SYSTEM_INSTALLER);
}
- public boolean isLocalRepoBonjourEnabled() {
- return preferences.getBoolean(PREF_LOCAL_REPO_BONJOUR, DEFAULT_LOCAL_REPO_BONJOUR);
- }
-
public boolean shouldCacheApks() {
return preferences.getBoolean(PREF_CACHE_APK, DEFAULT_CACHE_APK);
}
@@ -249,11 +243,6 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
listener.onPreferenceChange();
}
break;
- case PREF_LOCAL_REPO_BONJOUR:
- for (ChangeListener listener : localRepoBonjourListeners) {
- listener.onPreferenceChange();
- }
- break;
case PREF_LOCAL_REPO_NAME:
for (ChangeListener listener : localRepoNameListeners) {
listener.onPreferenceChange();
@@ -275,14 +264,6 @@ public class Preferences implements SharedPreferences.OnSharedPreferenceChangeLi
updateHistoryListeners.remove(listener);
}
- public void registerLocalRepoBonjourListeners(ChangeListener listener) {
- localRepoBonjourListeners.add(listener);
- }
-
- public void unregisterLocalRepoBonjourListeners(ChangeListener listener) {
- localRepoBonjourListeners.remove(listener);
- }
-
public void registerLocalRepoNameListeners(ChangeListener listener) {
localRepoNameListeners.add(listener);
}
diff --git a/F-Droid/src/org/fdroid/fdroid/localrepo/SwapService.java b/F-Droid/src/org/fdroid/fdroid/localrepo/SwapService.java
index 49b78ddca..291ce1a60 100644
--- a/F-Droid/src/org/fdroid/fdroid/localrepo/SwapService.java
+++ b/F-Droid/src/org/fdroid/fdroid/localrepo/SwapService.java
@@ -38,10 +38,9 @@ import org.fdroid.fdroid.data.RepoProvider;
import org.fdroid.fdroid.localrepo.peers.BluetoothFinder;
import org.fdroid.fdroid.localrepo.peers.BonjourFinder;
import org.fdroid.fdroid.localrepo.peers.Peer;
-import org.fdroid.fdroid.localrepo.type.BluetoothType;
-import org.fdroid.fdroid.localrepo.type.BonjourType;
+import org.fdroid.fdroid.localrepo.type.BluetoothSwap;
import org.fdroid.fdroid.localrepo.type.SwapType;
-import org.fdroid.fdroid.localrepo.type.WebServerType;
+import org.fdroid.fdroid.localrepo.type.WifiSwap;
import org.fdroid.fdroid.net.WifiStateChangeService;
import org.fdroid.fdroid.views.swap.SwapWorkflowActivity;
@@ -361,25 +360,13 @@ public class SwapService extends Service {
* Ensures that the webserver is running, as are the other services which make swap work.
* Will only do all this if it is not already running, and will run on a background thread.'
* TODO: What about an "enabling" status? Not sure if it will be useful or not.
+ *
+ *
+ * TODO: Call this at the relevant time, when wifi or bluetooth is enabled.
*/
- public void enableSwapping() {
- if (!enabled) {
- new AsyncTask() {
- @Override
- protected Void doInBackground(Void... params) {
- Log.d(TAG, "Started background task to enable swapping.");
- enableSwappingAsynchronous();
- return null;
- }
-
- @Override
- protected void onPostExecute(Void aVoid) {
- Log.d(TAG, "Moving SwapService to foreground so that it hangs around even when F-Droid is closed.");
- startForeground(NOTIFICATION, createNotification());
- enabled = true;
- }
- }.execute();
- }
+ private void attachService() {
+ Log.d(TAG, "Moving SwapService to foreground so that it hangs around even when F-Droid is closed.");
+ startForeground(NOTIFICATION, createNotification());
// Regardless of whether it was previously enabled, start the timer again. This ensures that
// if, e.g. a person views the swap activity again, it will attempt to enable swapping if
@@ -387,46 +374,26 @@ public class SwapService extends Service {
initTimer();
}
- public void disableSwapping() {
- if (enabled) {
- new AsyncTask() {
- @Override
- protected Void doInBackground(Void... params) {
- Log.d(TAG, "Started background task to disable swapping.");
- disableSwappingSynchronous();
- return null;
- }
-
- @Override
- protected void onPostExecute(Void aVoid) {
- Log.d(TAG, "Finished background task to disable swapping.");
-
- // TODO: Does this need to be run before the background task, so that the timer
- // can't kick in while we are shutting down everything?
- if (timer != null) {
- timer.cancel();
- }
-
- enabled = false;
-
- Log.d(TAG, "Moving SwapService to background so that it can be GC'ed if required.");
- stopForeground(true);
- }
- }.execute();
+ private void detachService() {
+ if (timer != null) {
+ timer.cancel();
}
+
+ Log.d(TAG, "Moving SwapService to background so that it can be GC'ed if required.");
+ stopForeground(true);
}
/**
* Handles checking if the {@link SwapService} is running, and only restarts it if it was running.
*/
- public void restartIfEnabled() {
- if (enabled) {
+ public void restartWifiIfEnabled() {
+ if (wifiSwap.isConnected()) {
new AsyncTask() {
@Override
protected Void doInBackground(Void... params) {
- Log.d(TAG, "Restarting swap services.");
- disableSwappingSynchronous();
- enableSwappingAsynchronous();
+ Log.d(TAG, "Restarting WiFi swap service");
+ wifiSwap.stop();
+ wifiSwap.start();
return null;
}
}.execute();
@@ -434,7 +401,7 @@ public class SwapService extends Service {
}
public boolean isEnabled() {
- return enabled;
+ return bluetoothSwap.isConnected() || wifiSwap.isConnected();
}
// ==========================================
@@ -442,15 +409,7 @@ public class SwapService extends Service {
// ==========================================
public boolean isBluetoothDiscoverable() {
- return bluetoothType.isConnected();
- }
-
- public void ensureBluetoothDiscoverable() {
- bluetoothType.start();
- }
-
- public void makeBluetoothNonDiscoverable() {
- bluetoothType.stop();
+ return bluetoothSwap.isConnected();
}
private boolean isWifiConnected() {
@@ -461,16 +420,6 @@ public class SwapService extends Service {
return isWifiConnected() && isEnabled();
}
- public void ensureBonjourDiscoverable() {
- if (!isBonjourDiscoverable()) {
- // TODO: Enable bonjour (currently it is enabled by default when the service starts)
- }
- }
-
- public void makeBonjourNotDiscoverable() {
- // TODO: Disable bonjour (currently it is enabled by default when the service starts)
- }
-
public boolean isScanningForPeers() {
return bonjourFinder.isScanning() || bluetoothFinder.isScanning();
}
@@ -492,9 +441,8 @@ public class SwapService extends Service {
private static final int NOTIFICATION = 1;
private final Binder binder = new Binder();
- private SwapType bonjourType;
- private SwapType bluetoothType;
- private SwapType webServerType;
+ private SwapType bluetoothSwap;
+ private WifiSwap wifiSwap;
private BonjourFinder bonjourFinder;
private BluetoothFinder bluetoothFinder;
@@ -507,12 +455,12 @@ public class SwapService extends Service {
@Nullable
private Timer timer;
- public SwapType getBluetooth() {
- return bluetoothType;
+ public SwapType getBluetoothSwap() {
+ return bluetoothSwap;
}
- public SwapType getBonjour() {
- return bluetoothType;
+ public SwapType getWifiSwap() {
+ return wifiSwap;
}
public class Binder extends android.os.Binder {
@@ -529,13 +477,11 @@ public class SwapService extends Service {
SharedPreferences preferences = getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE);
appsToSwap.addAll(deserializePackages(preferences.getString(KEY_APPS_TO_SWAP, "")));
- bonjourType = new BonjourType(this);
- bluetoothType = BluetoothType.create(this);
- webServerType = new WebServerType(this);
+ bluetoothSwap = BluetoothSwap.create(this);
+ wifiSwap = new WifiSwap(this);
bonjourFinder = new BonjourFinder(this);
bluetoothFinder = new BluetoothFinder(this);
- Preferences.get().registerLocalRepoBonjourListeners(bonjourEnabledListener);
Preferences.get().registerLocalRepoHttpsListeners(httpsEnabledListener);
LocalBroadcastManager.getInstance(this).registerReceiver(onWifiChange, new IntentFilter(WifiStateChangeService.BROADCAST));
@@ -552,12 +498,23 @@ public class SwapService extends Service {
return binder;
}
+ public void disableAllSwapping() {
+ new AsyncTask() {
+ @Override
+ protected Void doInBackground(Void... params) {
+ getBluetoothSwap().stop();
+ getWifiSwap().stop();
+ detachService();
+ return null;
+ }
+ }.execute();
+ }
+
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "Destroying service, will disable swapping if required, and unregister listeners.");
- disableSwapping();
- Preferences.get().unregisterLocalRepoBonjourListeners(bonjourEnabledListener);
+ disableAllSwapping();
Preferences.get().unregisterLocalRepoHttpsListeners(httpsEnabledListener);
LocalBroadcastManager.getInstance(this).unregisterReceiver(onWifiChange);
}
@@ -574,29 +531,6 @@ public class SwapService extends Service {
.build();
}
- private boolean enabled = false;
-
- /**
- * The guts of this class - responsible for enabling the relevant services for swapping.
- * Doesn't know anything about enabled/disabled state, you should check that before invoking
- * this method so it doesn't start something that is already started.
- * Runs asynchronously on several background threads.
- */
- private void enableSwappingAsynchronous() {
- webServerType.startInBackground();
- bonjourType.startInBackground();
- bluetoothType.startInBackground();
- }
-
- /**
- * @see SwapService#enableSwappingAsynchronous()
- */
- private void disableSwappingSynchronous() {
- Log.d(TAG, "Disabling SwapService (bonjour, webserver, etc)");
- bonjourType.stop();
- webServerType.stop();
- }
-
private void initTimer() {
if (timer != null) {
Log.d(TAG, "Cancelling existing timer");
@@ -610,31 +544,17 @@ public class SwapService extends Service {
@Override
public void run() {
Log.d(TAG, "Disabling swap because " + TIMEOUT + "ms passed.");
- disableSwapping();
+ disableAllSwapping();
}
}, TIMEOUT);
}
- @SuppressWarnings("FieldCanBeLocal") // The constructor will get bloated if these are all local...
- // TODO: Remove this preference...
- private final Preferences.ChangeListener bonjourEnabledListener = new Preferences.ChangeListener() {
- @Override
- public void onPreferenceChange() {
- Log.i(TAG, "Use Bonjour while swapping preference changed.");
- if (enabled)
- if (Preferences.get().isLocalRepoBonjourEnabled())
- bonjourType.start();
- else
- bonjourType.stop();
- }
- };
-
@SuppressWarnings("FieldCanBeLocal") // The constructor will get bloated if these are all local...
private final Preferences.ChangeListener httpsEnabledListener = new Preferences.ChangeListener() {
@Override
public void onPreferenceChange() {
Log.i(TAG, "Swap over HTTPS preference changed.");
- restartIfEnabled();
+ restartWifiIfEnabled();
}
};
@@ -642,7 +562,7 @@ public class SwapService extends Service {
private final BroadcastReceiver onWifiChange = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent i) {
- restartIfEnabled();
+ restartWifiIfEnabled();
}
};
diff --git a/F-Droid/src/org/fdroid/fdroid/localrepo/type/BluetoothType.java b/F-Droid/src/org/fdroid/fdroid/localrepo/type/BluetoothSwap.java
similarity index 94%
rename from F-Droid/src/org/fdroid/fdroid/localrepo/type/BluetoothType.java
rename to F-Droid/src/org/fdroid/fdroid/localrepo/type/BluetoothSwap.java
index f4024fada..3898b1c17 100644
--- a/F-Droid/src/org/fdroid/fdroid/localrepo/type/BluetoothType.java
+++ b/F-Droid/src/org/fdroid/fdroid/localrepo/type/BluetoothSwap.java
@@ -11,7 +11,7 @@ import android.util.Log;
import org.fdroid.fdroid.localrepo.SwapService;
import org.fdroid.fdroid.net.bluetooth.BluetoothServer;
-public class BluetoothType extends SwapType {
+public class BluetoothSwap extends SwapType {
private static final String TAG = "BluetoothBroadcastType";
@@ -25,11 +25,11 @@ public class BluetoothType extends SwapType {
if (adapter == null) {
return new NoBluetoothType(context);
} else {
- return new BluetoothType(context, adapter);
+ return new BluetoothSwap(context, adapter);
}
};
- private BluetoothType(@NonNull Context context, @NonNull BluetoothAdapter adapter) {
+ private BluetoothSwap(@NonNull Context context, @NonNull BluetoothAdapter adapter) {
super(context);
this.adapter = adapter;
this.server = new BluetoothServer(context, context.getFilesDir());
diff --git a/F-Droid/src/org/fdroid/fdroid/localrepo/type/BonjourType.java b/F-Droid/src/org/fdroid/fdroid/localrepo/type/BonjourBroadcast.java
similarity index 88%
rename from F-Droid/src/org/fdroid/fdroid/localrepo/type/BonjourType.java
rename to F-Droid/src/org/fdroid/fdroid/localrepo/type/BonjourBroadcast.java
index f6b6ac099..ab50642a0 100644
--- a/F-Droid/src/org/fdroid/fdroid/localrepo/type/BonjourType.java
+++ b/F-Droid/src/org/fdroid/fdroid/localrepo/type/BonjourBroadcast.java
@@ -18,14 +18,14 @@ import javax.jmdns.ServiceInfo;
/**
* Sends a {@link SwapService#BONJOUR_STATE_CHANGE} broadcasts when starting, started or stopped.
*/
-public class BonjourType extends SwapType {
+public class BonjourBroadcast extends SwapType {
private static final String TAG = "BonjourSwapService";
private JmDNS jmdns;
private ServiceInfo pairService;
- public BonjourType(Context context) {
+ public BonjourBroadcast(Context context) {
super(context);
}
@@ -33,12 +33,6 @@ public class BonjourType extends SwapType {
public void start() {
Log.d(TAG, "Preparing to start Bonjour service.");
- if (!Preferences.get().isLocalRepoBonjourEnabled()) {
- // TODO: Remove this preference completely, it is now dealt with in the start swap screen.
- Log.i(TAG, "Not going to start Bonjour swap service because disabled via preferences.");
- return;
- }
-
sendBroadcast(SwapService.EXTRA_STARTING);
/*
diff --git a/F-Droid/src/org/fdroid/fdroid/localrepo/type/SwapType.java b/F-Droid/src/org/fdroid/fdroid/localrepo/type/SwapType.java
index cabcbc660..47b37b3be 100644
--- a/F-Droid/src/org/fdroid/fdroid/localrepo/type/SwapType.java
+++ b/F-Droid/src/org/fdroid/fdroid/localrepo/type/SwapType.java
@@ -70,4 +70,20 @@ public abstract class SwapType {
}
}.execute();
}
+
+ public void ensureRunning() {
+ if (!isConnected()) {
+ start();
+ }
+ }
+
+ public void ensureRunningInBackground() {
+ new AsyncTask() {
+ @Override
+ protected Void doInBackground(Void... params) {
+ ensureRunning();
+ return null;
+ }
+ }.execute();
+ }
}
diff --git a/F-Droid/src/org/fdroid/fdroid/localrepo/type/WebServerType.java b/F-Droid/src/org/fdroid/fdroid/localrepo/type/WifiSwap.java
similarity index 92%
rename from F-Droid/src/org/fdroid/fdroid/localrepo/type/WebServerType.java
rename to F-Droid/src/org/fdroid/fdroid/localrepo/type/WifiSwap.java
index 997d5f647..91008ef83 100644
--- a/F-Droid/src/org/fdroid/fdroid/localrepo/type/WebServerType.java
+++ b/F-Droid/src/org/fdroid/fdroid/localrepo/type/WifiSwap.java
@@ -17,15 +17,17 @@ import java.io.IOException;
import java.net.BindException;
import java.util.Random;
-public class WebServerType extends SwapType {
+public class WifiSwap extends SwapType {
private static final String TAG = "WebServerType";
private Handler webServerThreadHandler = null;
private LocalHTTPD localHttpd;
+ private final SwapType bonjourBroadcast;
- public WebServerType(Context context) {
+ public WifiSwap(Context context) {
super(context);
+ bonjourBroadcast = new BonjourBroadcast(context);
}
@Override
@@ -69,6 +71,7 @@ public class WebServerType extends SwapType {
}
};
new Thread(webServer).start();
+ bonjourBroadcast.start();
}
@Override
@@ -81,6 +84,7 @@ public class WebServerType extends SwapType {
Message msg = webServerThreadHandler.obtainMessage();
msg.obj = webServerThreadHandler.getLooper().getThread().getName() + " says stop";
webServerThreadHandler.sendMessage(msg);
+ bonjourBroadcast.stop();
}
}
diff --git a/F-Droid/src/org/fdroid/fdroid/net/WifiStateChangeService.java b/F-Droid/src/org/fdroid/fdroid/net/WifiStateChangeService.java
index dc763ae1a..ae6aeb5e8 100644
--- a/F-Droid/src/org/fdroid/fdroid/net/WifiStateChangeService.java
+++ b/F-Droid/src/org/fdroid/fdroid/net/WifiStateChangeService.java
@@ -166,7 +166,7 @@ public class WifiStateChangeService extends Service {
bindService(swapService, new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
- ((SwapService.Binder)service).getService().restartIfEnabled();
+ ((SwapService.Binder)service).getService().restartWifiIfEnabled();
unbindService(this);
}
diff --git a/F-Droid/src/org/fdroid/fdroid/views/fragments/PreferencesFragment.java b/F-Droid/src/org/fdroid/fdroid/views/fragments/PreferencesFragment.java
index 294733b0d..4f1756ba3 100644
--- a/F-Droid/src/org/fdroid/fdroid/views/fragments/PreferencesFragment.java
+++ b/F-Droid/src/org/fdroid/fdroid/views/fragments/PreferencesFragment.java
@@ -34,7 +34,6 @@ public class PreferencesFragment extends PreferenceFragment
Preferences.PREF_PERMISSIONS,
Preferences.PREF_COMPACT_LAYOUT,
Preferences.PREF_IGN_TOUCH,
- Preferences.PREF_LOCAL_REPO_BONJOUR,
Preferences.PREF_LOCAL_REPO_NAME,
Preferences.PREF_LOCAL_REPO_HTTPS,
Preferences.PREF_LANGUAGE,
@@ -127,10 +126,6 @@ public class PreferencesFragment extends PreferenceFragment
checkSummary(key, R.string.ignoreTouch_on);
break;
- case Preferences.PREF_LOCAL_REPO_BONJOUR:
- checkSummary(key, R.string.local_repo_bonjour_on);
- break;
-
case Preferences.PREF_LOCAL_REPO_NAME:
textSummary(key, R.string.local_repo_name_summary);
break;
diff --git a/F-Droid/src/org/fdroid/fdroid/views/swap/StartSwapView.java b/F-Droid/src/org/fdroid/fdroid/views/swap/StartSwapView.java
index 496ca2aa5..fc819f927 100644
--- a/F-Droid/src/org/fdroid/fdroid/views/swap/StartSwapView.java
+++ b/F-Droid/src/org/fdroid/fdroid/views/swap/StartSwapView.java
@@ -216,13 +216,13 @@ public class StartSwapView extends ScrollView implements SwapWorkflowActivity.In
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
- getActivity().connectWithBluetooth();
+ getActivity().startBluetoothSwap();
textBluetoothVisible.setText(R.string.swap_visible_bluetooth);
viewBluetoothId.setVisibility(View.VISIBLE);
uiUpdatePeersInfo();
// TODO: When they deny the request for enabling bluetooth, we need to disable this switch...
} else {
- getManager().makeBluetoothNonDiscoverable();
+ getManager().getBluetoothSwap().stop();
textBluetoothVisible.setText(R.string.swap_not_visible_bluetooth);
viewBluetoothId.setVisibility(View.GONE);
uiUpdatePeersInfo();
@@ -266,9 +266,9 @@ public class StartSwapView extends ScrollView implements SwapWorkflowActivity.In
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
- getManager().ensureBonjourDiscoverable();
+ getManager().getWifiSwap().ensureRunningInBackground();
} else {
- getManager().makeBonjourNotDiscoverable();
+ getManager().getWifiSwap().stop();
}
uiUpdatePeersInfo();
uiUpdateWifi();
@@ -279,16 +279,16 @@ public class StartSwapView extends ScrollView implements SwapWorkflowActivity.In
@Override
public void onReceive(Context context, Intent intent) {
if (intent.hasExtra(SwapService.EXTRA_STARTING)) {
- Log.d(TAG, "Bonjour service is starting...");
+ Log.d(TAG, "Bonjour/WiFi service is starting...");
wifiSwitch.setEnabled(false);
wifiSwitch.setChecked(true);
} else {
wifiSwitch.setEnabled(true);
if (intent.hasExtra(SwapService.EXTRA_STARTED)) {
- Log.d(TAG, "Bonjour service has started.");
+ Log.d(TAG, "Bonjour/WiFi service has started.");
wifiSwitch.setChecked(true);
} else {
- Log.d(TAG, "Bonjour service has stopped.");
+ Log.d(TAG, "Bonjour/WiFi service has stopped.");
wifiSwitch.setChecked(false);
}
}
diff --git a/F-Droid/src/org/fdroid/fdroid/views/swap/SwapWorkflowActivity.java b/F-Droid/src/org/fdroid/fdroid/views/swap/SwapWorkflowActivity.java
index 8cde31216..f9546b394 100644
--- a/F-Droid/src/org/fdroid/fdroid/views/swap/SwapWorkflowActivity.java
+++ b/F-Droid/src/org/fdroid/fdroid/views/swap/SwapWorkflowActivity.java
@@ -272,7 +272,7 @@ public class SwapWorkflowActivity extends AppCompatActivity {
}
private void onToolbarCancel() {
- getService().disableSwapping();
+ getService().disableAllSwapping();
finish();
}
@@ -377,11 +377,6 @@ public class SwapWorkflowActivity extends AppCompatActivity {
return false;
}
- public void stopSwapping() {
- getState().disableSwapping();
- finish();
- }
-
public void swapWith(Peer peer) {
getService().swapWith(peer);
showSelectApps();
@@ -431,7 +426,7 @@ public class SwapWorkflowActivity extends AppCompatActivity {
if (resultCode != RESULT_CANCELED) {
Log.d(TAG, "User made Bluetooth discoverable, will proceed to start bluetooth server.");
- startBluetoothServer();
+ getState().getBluetoothSwap().startInBackground();
} else {
Log.d(TAG, "User chose not to make Bluetooth discoverable, so doing nothing (i.e. sticking with wifi).");
}
@@ -450,14 +445,14 @@ public class SwapWorkflowActivity extends AppCompatActivity {
* Note that this is a little different than the usual process for bluetooth _clients_, which
* involves pairing and connecting with other devices.
*/
- public void connectWithBluetooth() {
+ public void startBluetoothSwap() {
- Log.d(TAG, "Initiating Bluetooth swap instead of wifi.");
+ Log.d(TAG, "Initiating Bluetooth swap, will ensure the Bluetooth devices is enabled and discoverable before starting server.");
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if (adapter != null)
if (adapter.isEnabled()) {
- Log.d(TAG, "Bluetooth enabled, will pair with device.");
+ Log.d(TAG, "Bluetooth enabled, will check if device is discoverable with device.");
ensureBluetoothDiscoverableThenStart();
} else {
Log.d(TAG, "Bluetooth disabled, asking user to enable it.");
@@ -483,34 +478,13 @@ public class SwapWorkflowActivity extends AppCompatActivity {
throw new IllegalStateException("Can't start Bluetooth swap because service is null for some strange reason.");
}
- service.getBluetooth().startInBackground();
+ service.getBluetoothSwap().startInBackground();
}
- private void startBluetoothServer() {
- Log.d(TAG, "Starting bluetooth server.");
- if (service == null) {
- throw new IllegalStateException("We are attempting to do bluetooth stuff, but the service is not ready.");
- }
-
- if (!service.isEnabled()) {
- service.enableSwapping();
- }
-
- new BluetoothServer(this,getFilesDir()).start();
- showBluetoothDeviceList();
- }
-
-
class PrepareInitialSwapRepo extends PrepareSwapRepo {
public PrepareInitialSwapRepo() {
super(new HashSet<>(Arrays.asList(new String[] { "org.fdroid.fdroid" })));
}
-
- @Override
- protected void onPreExecute() {
- getService().enableSwapping();
- super.onPreExecute();
- }
}
class PrepareFullSwapRepo extends PrepareSwapRepo {
diff --git a/F-Droid/src/org/fdroid/fdroid/views/swap/WifiQrView.java b/F-Droid/src/org/fdroid/fdroid/views/swap/WifiQrView.java
index c2e8354d0..2d8741807 100644
--- a/F-Droid/src/org/fdroid/fdroid/views/swap/WifiQrView.java
+++ b/F-Droid/src/org/fdroid/fdroid/views/swap/WifiQrView.java
@@ -85,14 +85,6 @@ public class WifiQrView extends ScrollView implements SwapWorkflowActivity.Inner
}
});
- Button cancel = (Button)findViewById(R.id.btn_cancel_swap);
- cancel.setOnClickListener(new Button.OnClickListener() {
- @Override
- public void onClick(View v) {
- getActivity().stopSwapping();
- }
- });
-
// TODO: As with the JoinWifiView, this should be refactored to be part of the SwapState.
// Otherwise, we are left with SwapState, LocalRepoService, WifiStateChangeService, and
// some static variables in FDroidApp all which manage the state for swap.