package io.evercam.connect.discover.upnp; import android.content.Context; import android.os.AsyncTask; import android.util.Log; import io.evercam.connect.DiscoverMainActivity; import io.evercam.connect.db.Camera; import io.evercam.connect.db.CameraOperation; import io.evercam.connect.net.NetInfo; import io.evercam.network.discovery.UpnpDevice; import io.evercam.network.discovery.UpnpDiscovery; import io.evercam.network.discovery.UpnpResult; public class UpnpDiscoveryTask extends AsyncTask<Void, Void, Void> { private CameraOperation cameraOperation; private NetInfo netInfo; private UpnpDiscovery upnpDiscovery; public UpnpDiscoveryTask(Context ctxt) { cameraOperation = new CameraOperation(ctxt); netInfo = new NetInfo(ctxt); } @Override protected Void doInBackground(Void... arg0) { upnpDiscover(); return null; } private void upnpDiscover() { upnpDiscovery = new UpnpDiscovery(new UpnpResult() { @Override public void onUpnpDeviceFound(UpnpDevice upnpDevice) { Camera deviceFromUPNP = getDeviceFromUpnp(upnpDevice); if(deviceFromUPNP != null) { if(cameraOperation.isExisting(deviceFromUPNP.getIP(), netInfo.getSsid())) { cameraOperation.updateUpnpCamera(deviceFromUPNP, netInfo.getSsid()); } else { cameraOperation.insertCamera(deviceFromUPNP, netInfo.getSsid()); } } } }); upnpDiscovery.discoverAll(); } public Camera getDeviceFromUpnp(UpnpDevice upnpDevice) { if(upnpDevice.getIp() != null && !upnpDevice.getIp().isEmpty()) { Camera camera = new Camera(upnpDevice.getIp()); camera.setModel(upnpDevice.getModel()); camera.setHttp(upnpDevice.getPort()); camera.setUpnp(1); camera.setActive(1); camera.setFirstSeen(DiscoverMainActivity.getSystemTime()); camera.setLastSeen(DiscoverMainActivity.getSystemTime()); return camera; } else { return null; } } }