package org.deviceconnect.android.deviceplugin.sw.service;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import com.sonyericsson.extras.liveware.aef.control.Control;
import com.sonyericsson.extras.liveware.aef.registration.Registration;
import com.sonyericsson.extras.liveware.extension.util.registration.HostApplicationInfo;
import com.sonyericsson.extras.liveware.extension.util.registration.RegistrationAdapter;
import org.deviceconnect.android.deviceplugin.sw.profile.SWCanvasProfile;
import org.deviceconnect.android.deviceplugin.sw.profile.SWDeviceOrientationProfile;
import org.deviceconnect.android.deviceplugin.sw.profile.SWNotificationProfile;
import org.deviceconnect.android.deviceplugin.sw.profile.SWTouchProfile;
import org.deviceconnect.android.deviceplugin.sw.profile.SWVibrationProfile;
import org.deviceconnect.android.service.DConnectService;
import java.util.Locale;
public abstract class SWService extends DConnectService {
private final WatchType mType;
protected SWService(final BluetoothDevice device, final WatchType type) {
super(createServiceId(device));
mType = type;
setName(device.getName());
setNetworkType(NetworkType.BLUETOOTH);
addProfile(new SWDeviceOrientationProfile());
addProfile(new SWNotificationProfile());
addProfile(new SWVibrationProfile(type));
addProfile(new SWCanvasProfile());
addProfile(new SWTouchProfile());
}
private String createConnectionStateQuery() {
HostApplicationInfo hostAppInfo =
RegistrationAdapter.getHostApplication(getContext(), getHostPackageName());
return Registration.DeviceColumns.HOST_APPLICATION_ID
+ " = "
+ hostAppInfo.getId()
+ " AND "
+ Registration.DeviceColumns.ACCESSORY_CONNECTED
+ " = 1";
}
public static String createServiceId(final BluetoothDevice device) {
String address = device.getAddress();
return address.replace(":", "").toLowerCase(Locale.ENGLISH);
}
public abstract String getHostPackageName();
public void sendRequest(final Intent request) {
request.putExtra(Control.Intents.EXTRA_AEA_PACKAGE_NAME, getContext().getPackageName());
request.setPackage(getHostPackageName());
getContext().sendBroadcast(request, Registration.HOSTAPP_PERMISSION);
}
public WatchType getWatchType() {
return mType;
}
public enum WatchType {
MN2,
SW2
}
}