2013-06-06 05:57:06 +02:00
|
|
|
package org.kde.connect;
|
|
|
|
|
|
|
|
import android.app.Service;
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.content.SharedPreferences;
|
2013-06-18 02:14:22 +02:00
|
|
|
import android.os.Binder;
|
2013-06-06 05:57:06 +02:00
|
|
|
import android.os.IBinder;
|
|
|
|
import android.util.Log;
|
|
|
|
|
2013-06-18 02:14:22 +02:00
|
|
|
import org.kde.connect.PackageEmitters.BasePackageEmitter;
|
|
|
|
import org.kde.connect.PackageEmitters.CallPackageEmitter;
|
|
|
|
import org.kde.connect.PackageEmitters.PingPackageEmitter;
|
|
|
|
import org.kde.connect.PackageReceivers.BasePackageReceiver;
|
|
|
|
import org.kde.connect.PackageReceivers.PingPackageReceiver;
|
2013-06-06 05:57:06 +02:00
|
|
|
import org.kde.connect.Types.NetworkPackage;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
|
|
public class BackgroundService extends Service {
|
|
|
|
|
2013-06-17 12:23:08 +02:00
|
|
|
SharedPreferences settings;
|
|
|
|
ArrayList<Announcer> announcers = new ArrayList<Announcer>();
|
|
|
|
ArrayList<ComputerLink> computerLinks = new ArrayList<ComputerLink>();
|
2013-06-18 02:14:22 +02:00
|
|
|
|
|
|
|
ArrayList<BasePackageEmitter> emitters = new ArrayList<BasePackageEmitter>();
|
|
|
|
ArrayList<BasePackageReceiver> receivers = new ArrayList<BasePackageReceiver>();
|
|
|
|
|
|
|
|
PingPackageEmitter pingEmitter;
|
2013-06-06 05:57:06 +02:00
|
|
|
|
2013-06-17 12:23:08 +02:00
|
|
|
private void addComputerLink(ComputerLink cl) {
|
2013-06-06 05:57:06 +02:00
|
|
|
|
2013-06-17 12:23:08 +02:00
|
|
|
computerLinks.add(cl);
|
2013-06-06 05:57:06 +02:00
|
|
|
|
|
|
|
|
|
|
|
NetworkPackage p = new NetworkPackage(System.currentTimeMillis());
|
|
|
|
p.setType(NetworkPackage.Type.PING);
|
2013-06-17 12:23:08 +02:00
|
|
|
cl.sendPackage(p);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2013-06-18 02:14:22 +02:00
|
|
|
private void registerEmitters() {
|
|
|
|
if (settings.getBoolean("emit_call", true)) {
|
|
|
|
emitters.add(new CallPackageEmitter(getApplicationContext()));
|
|
|
|
}
|
|
|
|
|
|
|
|
pingEmitter = new PingPackageEmitter(getApplicationContext());
|
|
|
|
if (settings.getBoolean("emit_ping", true)) {
|
|
|
|
emitters.add(pingEmitter);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private void registerReceivers() {
|
|
|
|
if (settings.getBoolean("receive_ping", true)) {
|
|
|
|
receivers.add(new PingPackageReceiver(getApplicationContext()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-06-17 12:23:08 +02:00
|
|
|
@Override
|
|
|
|
public int onStartCommand(Intent intent, int flags, int startId) {
|
|
|
|
Log.e("BackgroundService","Starting");
|
|
|
|
|
|
|
|
for (Announcer a : announcers) {
|
|
|
|
a.startAnnouncing(new Announcer.ConnexionReceiver() {
|
|
|
|
@Override
|
|
|
|
public void onPair(ComputerLink cl) {
|
|
|
|
addComputerLink(cl);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2013-06-06 05:57:06 +02:00
|
|
|
|
|
|
|
return Service.START_STICKY;
|
|
|
|
}
|
|
|
|
|
2013-06-18 02:14:22 +02:00
|
|
|
public void sendPing() {
|
|
|
|
pingEmitter.sendPing();
|
|
|
|
}
|
|
|
|
|
2013-06-06 05:57:06 +02:00
|
|
|
@Override
|
|
|
|
public void onCreate() {
|
|
|
|
Log.e("BackgroundService","Creating");
|
2013-06-17 12:23:08 +02:00
|
|
|
|
2013-06-18 02:14:22 +02:00
|
|
|
registerEmitters();
|
|
|
|
registerReceivers();
|
|
|
|
|
2013-06-17 12:23:08 +02:00
|
|
|
settings = getSharedPreferences("KdeConnect", 0);
|
|
|
|
|
|
|
|
announcers.add(new AvahiAnnouncer(this));
|
|
|
|
|
2013-06-06 05:57:06 +02:00
|
|
|
super.onCreate();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onDestroy() {
|
|
|
|
Log.e("BackgroundService","Destroying");
|
|
|
|
super.onDestroy();
|
|
|
|
}
|
|
|
|
|
2013-06-18 02:14:22 +02:00
|
|
|
|
|
|
|
public class LocalBinder extends Binder {
|
|
|
|
public BackgroundService getInstance() {
|
|
|
|
return BackgroundService.this;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
IBinder mBinder = new LocalBinder();
|
|
|
|
|
2013-06-06 05:57:06 +02:00
|
|
|
@Override
|
|
|
|
public IBinder onBind(Intent intent) {
|
2013-06-18 02:14:22 +02:00
|
|
|
return mBinder;
|
2013-06-06 05:57:06 +02:00
|
|
|
}
|
|
|
|
|
2013-06-18 02:14:22 +02:00
|
|
|
|
2013-06-06 05:57:06 +02:00
|
|
|
}
|