diff --git a/KdeConnect/src/main/AndroidManifest.xml b/KdeConnect/src/main/AndroidManifest.xml index 79f9355a..ef52d462 100644 --- a/KdeConnect/src/main/AndroidManifest.xml +++ b/KdeConnect/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ @@ -27,14 +27,24 @@ + android:name="org.kde.connect.BackgroundService"> - + + + + + + + + + + + diff --git a/KdeConnect/src/main/java/org/kde/connect/BackgroundService.java b/KdeConnect/src/main/java/org/kde/connect/BackgroundService.java index 37cf27c3..38084146 100644 --- a/KdeConnect/src/main/java/org/kde/connect/BackgroundService.java +++ b/KdeConnect/src/main/java/org/kde/connect/BackgroundService.java @@ -11,7 +11,6 @@ import android.os.IBinder; import android.util.Log; import org.kde.connect.ComputerLinks.BaseComputerLink; -import org.kde.connect.Extensions.SingletonService; import org.kde.connect.Locators.AvahiLocator; import org.kde.connect.Locators.BaseLocator; import org.kde.connect.PackageEmitters.BasePackageEmitter; @@ -23,7 +22,7 @@ import org.kde.connect.Types.NetworkPackage; import java.util.ArrayList; -public class BackgroundService extends SingletonService { +public class BackgroundService extends Service { SharedPreferences settings; @@ -89,9 +88,9 @@ public class BackgroundService extends SingletonService { a.reachComputers(new BaseLocator.ConnectionReceiver() { @Override public void onConnectionAccepted(BaseComputerLink link) { - Log.e("BackgroundService","Connection accepted!"); - //TODO: Check if there are other links available, and keep the best one - addComputerLink(link); + Log.e("BackgroundService","Connection accepted!"); + //TODO: Check if there are other links available, and keep the best one + addComputerLink(link); } }); } @@ -132,7 +131,6 @@ public class BackgroundService extends SingletonService { //Singleton service auxiliars - private class LocalBinder extends Binder { public BackgroundService getInstance() { return BackgroundService.this; @@ -154,10 +152,11 @@ public class BackgroundService extends SingletonService { Start(c,null); } - public static void Start(Context c, ServiceStartCallback callback) { + public static void Start(Context c, final ServiceStartCallback callback) { if (instance != null) { Log.e("SingletonService","Already started"); + callback.onServiceStart(instance); } Intent serviceIntent = new Intent(c, BackgroundService.class); diff --git a/KdeConnect/src/main/java/org/kde/connect/BootReceiver.java b/KdeConnect/src/main/java/org/kde/connect/BootReceiver.java deleted file mode 100644 index 8dca16df..00000000 --- a/KdeConnect/src/main/java/org/kde/connect/BootReceiver.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.kde.connect; - -import android.app.Service; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.os.IBinder; -import android.util.Log; - -public class BootReceiver extends BroadcastReceiver -{ - public void onReceive(Context context, Intent intent) - { - - if (intent.getAction() != Intent.ACTION_BOOT_COMPLETED) { - Log.w("KdeConnect", "Received unexpected intent: " + intent); - } else { - Log.i("KdeConnect", "BootReceiver"); - context.startService(new Intent(context,BackgroundService.class)); - } - - } -} diff --git a/KdeConnect/src/main/java/org/kde/connect/MainActivity.java b/KdeConnect/src/main/java/org/kde/connect/MainActivity.java index d6dd40ae..414390e8 100644 --- a/KdeConnect/src/main/java/org/kde/connect/MainActivity.java +++ b/KdeConnect/src/main/java/org/kde/connect/MainActivity.java @@ -28,7 +28,7 @@ public class MainActivity extends Activity { } }); - findViewById(R.id.button2).setOnClickListener(new OnClickListener() { + findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Log.i("MainActivity","Button2"); @@ -36,7 +36,7 @@ public class MainActivity extends Activity { } }); - findViewById(R.id.button3).setOnClickListener(new OnClickListener() { + findViewById(R.id.button2).setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Log.i("MainActivity","Button3"); diff --git a/KdeConnect/src/main/java/org/kde/connect/ServiceLauncher.java b/KdeConnect/src/main/java/org/kde/connect/ServiceLauncher.java new file mode 100644 index 00000000..f22d08ca --- /dev/null +++ b/KdeConnect/src/main/java/org/kde/connect/ServiceLauncher.java @@ -0,0 +1,39 @@ +package org.kde.connect; + +import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.pm.ApplicationInfo; +import android.net.wifi.WifiManager; +import android.os.IBinder; +import android.util.Log; + +public class ServiceLauncher extends BroadcastReceiver +{ + public void onReceive(Context context, Intent intent) + { + + Log.e("KdeConnect", "Broadcast event: "+intent.getAction()); + + String action = intent.getAction(); + if(action.equals(Intent.ACTION_PACKAGE_REPLACED)) { + Log.e("KdeConnect", "UpdateReceiver"); + if (!intent.getData().getSchemeSpecificPart().equals(context.getPackageName())) { + Log.e("KdeConnect", "Ignoring, it's not me!"); + return; + } + BackgroundService.Start(context); + } else if (action.equals(Intent.ACTION_BOOT_COMPLETED)) { + Log.e("KdeConnect", "ServiceLauncher"); + BackgroundService.Start(context); + } else if (action.equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) { + Log.e("KdeConnect", "Connection state changed, trying to connect"); + BackgroundService service = BackgroundService.GetInstance(); + service.reachComputers(); + } else { + Log.e("KdeConnect", "Ignoring broadcast event: "+intent.getAction()); + } + + } +} diff --git a/KdeConnect/src/main/res/layout/activity_main.xml b/KdeConnect/src/main/res/layout/activity_main.xml index 3d9c7d14..3cdcbb40 100644 --- a/KdeConnect/src/main/res/layout/activity_main.xml +++ b/KdeConnect/src/main/res/layout/activity_main.xml @@ -9,8 +9,7 @@ tools:context=".MainActivity" android:orientation="vertical"> -