2015-08-03 23:09:49 +02:00
|
|
|
package nodomain.freeyourgadget.gadgetbridge.devices;
|
2015-05-05 00:48:02 +02:00
|
|
|
|
|
|
|
import android.app.Activity;
|
2015-08-06 02:17:38 +02:00
|
|
|
import android.content.Context;
|
|
|
|
import android.net.Uri;
|
2015-05-05 00:48:02 +02:00
|
|
|
|
2015-08-03 23:09:49 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
2015-08-06 02:17:38 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
|
|
|
|
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
2015-05-05 00:48:02 +02:00
|
|
|
|
2015-10-26 23:32:03 +01:00
|
|
|
/**
|
|
|
|
* This interface is implemented at least once for every supported gadget device.
|
|
|
|
* It allows Gadgetbridge to generically deal with different kinds of devices
|
|
|
|
* without actually knowing the details of any device.
|
2016-02-29 20:54:39 +01:00
|
|
|
* <p/>
|
2015-10-26 23:32:03 +01:00
|
|
|
* Instances will be created as needed and asked whether they support a given
|
|
|
|
* device. If a coordinator answers true, it will be used to assist in handling
|
|
|
|
* the given device.
|
|
|
|
*/
|
2015-05-05 00:48:02 +02:00
|
|
|
public interface DeviceCoordinator {
|
2015-08-03 23:09:49 +02:00
|
|
|
String EXTRA_DEVICE_MAC_ADDRESS = "nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate.EXTRA_MAC_ADDRESS";
|
2015-05-05 00:48:02 +02:00
|
|
|
|
2015-10-26 23:32:03 +01:00
|
|
|
/**
|
|
|
|
* Checks whether this candidate handles the given candidate.
|
2016-02-29 20:54:39 +01:00
|
|
|
*
|
2015-10-26 23:32:03 +01:00
|
|
|
* @param candidate
|
|
|
|
* @return true if this coordinator handles the given candidate.
|
|
|
|
*/
|
2015-08-03 23:09:49 +02:00
|
|
|
boolean supports(GBDeviceCandidate candidate);
|
2015-05-18 20:56:19 +02:00
|
|
|
|
2015-10-26 23:32:03 +01:00
|
|
|
/**
|
|
|
|
* Checks whether this candidate handles the given device.
|
2016-02-29 20:54:39 +01:00
|
|
|
*
|
2015-10-26 23:32:03 +01:00
|
|
|
* @param device
|
|
|
|
* @return true if this coordinator handles the given device.
|
|
|
|
*/
|
2015-05-12 20:09:35 +02:00
|
|
|
boolean supports(GBDevice device);
|
2015-05-18 20:56:19 +02:00
|
|
|
|
2015-10-26 23:32:03 +01:00
|
|
|
/**
|
|
|
|
* Returns the kind of device type this coordinator supports.
|
2016-02-29 20:54:39 +01:00
|
|
|
*
|
2015-10-26 23:32:03 +01:00
|
|
|
* @return
|
|
|
|
*/
|
2015-05-12 20:09:35 +02:00
|
|
|
DeviceType getDeviceType();
|
2015-05-05 00:48:02 +02:00
|
|
|
|
2015-10-26 23:32:03 +01:00
|
|
|
/**
|
|
|
|
* Returns the Activity class to be started in order to perform a pairing of a
|
|
|
|
* given device.
|
2016-02-29 20:54:39 +01:00
|
|
|
*
|
2015-10-26 23:32:03 +01:00
|
|
|
* @return
|
|
|
|
*/
|
2015-05-05 00:48:02 +02:00
|
|
|
Class<? extends Activity> getPairingActivity();
|
2015-07-20 23:20:24 +02:00
|
|
|
|
2015-10-26 23:32:03 +01:00
|
|
|
/**
|
|
|
|
* Returns the Activity class that will be used as the primary activity
|
|
|
|
* for the given device.
|
2016-02-29 20:54:39 +01:00
|
|
|
*
|
2015-10-26 23:32:03 +01:00
|
|
|
* @return
|
|
|
|
*/
|
2015-07-20 23:20:24 +02:00
|
|
|
Class<? extends Activity> getPrimaryActivity();
|
2015-07-27 23:49:53 +02:00
|
|
|
|
2015-10-26 23:32:03 +01:00
|
|
|
/**
|
|
|
|
* Returns true if activity data fetching is supported by the device
|
|
|
|
* (with this coordinator).
|
2016-02-29 20:54:39 +01:00
|
|
|
*
|
2015-10-26 23:32:03 +01:00
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
boolean supportsActivityDataFetching();
|
2015-10-24 23:28:02 +02:00
|
|
|
|
2015-10-26 23:32:03 +01:00
|
|
|
/**
|
|
|
|
* Returns true if activity data fetching is supported AND possible at this
|
|
|
|
* very moment. This will consider the device state (being connected/disconnected/busy...)
|
|
|
|
* etc.
|
2016-02-29 20:54:39 +01:00
|
|
|
*
|
2015-10-26 23:32:03 +01:00
|
|
|
* @param device
|
|
|
|
* @return
|
|
|
|
*/
|
2015-10-24 23:28:02 +02:00
|
|
|
boolean allowFetchActivityData(GBDevice device);
|
|
|
|
|
2015-10-26 23:32:03 +01:00
|
|
|
/**
|
|
|
|
* Returns the sample provider for the device being supported.
|
2016-02-29 20:54:39 +01:00
|
|
|
*
|
2015-10-26 23:32:03 +01:00
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
SampleProvider getSampleProvider();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Finds an install handler for the given uri that can install the given
|
|
|
|
* uri on the device being managed.
|
2016-02-29 20:54:39 +01:00
|
|
|
*
|
2015-10-26 23:32:03 +01:00
|
|
|
* @param uri
|
|
|
|
* @param context
|
|
|
|
* @return the install handler or null if that uri cannot be installed on the device
|
|
|
|
*/
|
|
|
|
InstallHandler findInstallHandler(Uri uri, Context context);
|
2015-10-24 23:28:02 +02:00
|
|
|
|
2015-10-26 23:32:03 +01:00
|
|
|
/**
|
|
|
|
* Returns true if this device/coordinator supports taking screenshots.
|
2016-02-29 20:54:39 +01:00
|
|
|
*
|
2015-10-26 23:32:03 +01:00
|
|
|
* @return
|
|
|
|
*/
|
2015-10-24 23:28:02 +02:00
|
|
|
boolean supportsScreenshots();
|
2015-05-05 00:48:02 +02:00
|
|
|
}
|