2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-08-23 02:17:20 +00:00

126 lines
3.4 KiB
Java
Raw Normal View History

2013-06-06 05:57:06 +02:00
package org.kde.connect;
import android.app.Service;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Binder;
2013-06-06 05:57:06 +02:00
import android.os.IBinder;
import android.util.Log;
2013-06-18 03:05:32 +02:00
import org.kde.connect.Announcers.BaseAnnouncer;
import org.kde.connect.Announcers.AvahiAnnouncer;
import org.kde.connect.ComputerLinks.BaseComputerLink;
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;
2013-06-18 03:05:32 +02:00
ArrayList<BaseAnnouncer> mBaseAnnouncers = new ArrayList<BaseAnnouncer>();
ArrayList<BaseComputerLink> mBaseComputerLinks = new ArrayList<BaseComputerLink>();
ArrayList<BasePackageEmitter> emitters = new ArrayList<BasePackageEmitter>();
ArrayList<BasePackageReceiver> receivers = new ArrayList<BasePackageReceiver>();
PingPackageEmitter pingEmitter;
2013-06-06 05:57:06 +02:00
2013-06-18 03:05:32 +02:00
private void addComputerLink(BaseComputerLink cl) {
Log.i("BackgroundService","addComputerLink");
2013-06-06 05:57:06 +02:00
2013-06-18 03:05:32 +02:00
mBaseComputerLinks.add(cl);
2013-06-06 05:57:06 +02:00
2013-06-18 03:05:32 +02:00
Log.i("BackgroundService","sending ping after connection");
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);
}
private void registerEmitters() {
if (settings.getBoolean("emit_call", true)) {
emitters.add(new CallPackageEmitter(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-18 03:05:32 +02:00
public void registerAnnouncers() {
if (settings.getBoolean("announce_avahi", true)) {
mBaseAnnouncers.add(new AvahiAnnouncer(this));
}
}
2013-06-17 12:23:08 +02:00
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("BackgroundService","Starting");
2013-06-18 03:05:32 +02:00
for (BaseAnnouncer a : mBaseAnnouncers) {
a.startAnnouncing(new BaseAnnouncer.ConnexionReceiver() {
2013-06-17 12:23:08 +02:00
@Override
2013-06-18 03:05:32 +02:00
public void onPair(BaseComputerLink cl) {
2013-06-17 12:23:08 +02:00
addComputerLink(cl);
}
});
}
2013-06-06 05:57:06 +02:00
return Service.START_STICKY;
}
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
settings = getSharedPreferences("KdeConnect", 0);
2013-06-18 03:05:32 +02:00
pingEmitter = new PingPackageEmitter(getApplicationContext());
registerEmitters();
registerReceivers();
registerAnnouncers();
2013-06-17 12:23:08 +02:00
2013-06-06 05:57:06 +02:00
super.onCreate();
}
@Override
public void onDestroy() {
Log.e("BackgroundService","Destroying");
super.onDestroy();
}
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) {
return mBinder;
2013-06-06 05:57:06 +02:00
}
2013-06-06 05:57:06 +02:00
}