mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-11-24 19:06:53 +01:00
Merge pull request #391 from JohnnySun/master
Rollback gradle.properties
This commit is contained in:
commit
2ee253965b
@ -3,7 +3,6 @@ package nodomain.freeyourgadget.gadgetbridge.database;
|
|||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
import android.database.sqlite.SQLiteOpenHelper;
|
import android.database.sqlite.SQLiteOpenHelper;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.DaoMaster;
|
import nodomain.freeyourgadget.gadgetbridge.entities.DaoMaster;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
||||||
|
|
||||||
|
@ -50,7 +50,6 @@ import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
|
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser;
|
import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.ValidByDate;
|
import nodomain.freeyourgadget.gadgetbridge.model.ValidByDate;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleProtocol;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
|
import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
|
import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
||||||
|
@ -1,12 +1,9 @@
|
|||||||
package nodomain.freeyourgadget.gadgetbridge.devices;
|
package nodomain.freeyourgadget.gadgetbridge.devices;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.bluetooth.BluetoothDevice;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.AbstractActivitySample;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
|
||||||
|
@ -12,6 +12,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.DeviceCommunicationService;
|
|||||||
public interface DeviceService extends EventHandler {
|
public interface DeviceService extends EventHandler {
|
||||||
String PREFIX = "nodomain.freeyourgadget.gadgetbridge.devices";
|
String PREFIX = "nodomain.freeyourgadget.gadgetbridge.devices";
|
||||||
|
|
||||||
|
String ACTION_MIBAND2_AUTH = PREFIX + ".action.miban2_auth";
|
||||||
String ACTION_START = PREFIX + ".action.start";
|
String ACTION_START = PREFIX + ".action.start";
|
||||||
String ACTION_CONNECT = PREFIX + ".action.connect";
|
String ACTION_CONNECT = PREFIX + ".action.connect";
|
||||||
String ACTION_NOTIFICATION = PREFIX + ".action.notification";
|
String ACTION_NOTIFICATION = PREFIX + ".action.notification";
|
||||||
@ -83,6 +84,7 @@ public interface DeviceService extends EventHandler {
|
|||||||
String EXTRA_CALENDAREVENT_DURATION = "calendarevent_duration";
|
String EXTRA_CALENDAREVENT_DURATION = "calendarevent_duration";
|
||||||
String EXTRA_CALENDAREVENT_TITLE = "calendarevent_title";
|
String EXTRA_CALENDAREVENT_TITLE = "calendarevent_title";
|
||||||
String EXTRA_CALENDAREVENT_DESCRIPTION = "calendarevent_description";
|
String EXTRA_CALENDAREVENT_DESCRIPTION = "calendarevent_description";
|
||||||
|
String EXTRA_MIBAND2_AUTH_BYTE = "miband2_auth_byte";
|
||||||
|
|
||||||
void start();
|
void start();
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.AbstractCollection;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package nodomain.freeyourgadget.gadgetbridge.service.btle;
|
package nodomain.freeyourgadget.gadgetbridge.service.btle;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class BleNamesResolver {
|
public class BleNamesResolver {
|
||||||
private static HashMap<String, String> mServices = new HashMap<String, String>();
|
private static HashMap<String, String> mServices = new HashMap<String, String>();
|
||||||
private static HashMap<String, String> mCharacteristics = new HashMap<String, String>();
|
private static HashMap<String, String> mCharacteristics = new HashMap<String, String>();
|
||||||
|
@ -8,14 +8,12 @@ import android.content.Intent;
|
|||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.support.v4.content.LocalBroadcastManager;
|
import android.support.v4.content.LocalBroadcastManager;
|
||||||
import android.util.Log;
|
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.security.SecureRandom;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
@ -25,7 +23,6 @@ import java.util.List;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import javax.crypto.Cipher;
|
import javax.crypto.Cipher;
|
||||||
import javax.crypto.spec.IvParameterSpec;
|
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||||
@ -62,7 +59,6 @@ import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceStateA
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.WriteAction;
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.WriteAction;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.battery.BatteryInfoProfile;
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.battery.BatteryInfoProfile;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.deviceinfo.DeviceInfoProfile;
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.deviceinfo.DeviceInfoProfile;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.ArrayUtils;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
|
import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||||
@ -104,12 +100,19 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
|||||||
|
|
||||||
} else if (s.equals(BatteryInfoProfile.ACTION_BATTERY_INFO)) {
|
} else if (s.equals(BatteryInfoProfile.ACTION_BATTERY_INFO)) {
|
||||||
handleBatteryInfo((nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.battery.BatteryInfo) intent.getParcelableExtra(BatteryInfoProfile.EXTRA_BATTERY_INFO));
|
handleBatteryInfo((nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.battery.BatteryInfo) intent.getParcelableExtra(BatteryInfoProfile.EXTRA_BATTERY_INFO));
|
||||||
|
} else if (s.equals(DeviceService.ACTION_MIBAND2_AUTH)) {
|
||||||
|
byte[] response = intent.getExtras().getByteArray(DeviceService.EXTRA_MIBAND2_AUTH_BYTE);
|
||||||
|
BluetoothGattCharacteristic temp = getCharacteristic(MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC9);
|
||||||
|
temp.setValue(response);
|
||||||
|
mBluetoothGatt.writeCharacteristic(temp);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private volatile boolean telephoneRinging;
|
private volatile boolean telephoneRinging;
|
||||||
private volatile boolean isLocatingDevice;
|
private volatile boolean isLocatingDevice;
|
||||||
|
private BluetoothGatt mBluetoothGatt;
|
||||||
|
|
||||||
private DeviceInfo mDeviceInfo;
|
private DeviceInfo mDeviceInfo;
|
||||||
|
|
||||||
@ -136,6 +139,7 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
|||||||
IntentFilter intentFilter = new IntentFilter();
|
IntentFilter intentFilter = new IntentFilter();
|
||||||
intentFilter.addAction(DeviceInfoProfile.ACTION_DEVICE_INFO);
|
intentFilter.addAction(DeviceInfoProfile.ACTION_DEVICE_INFO);
|
||||||
intentFilter.addAction(BatteryInfoProfile.ACTION_BATTERY_INFO);
|
intentFilter.addAction(BatteryInfoProfile.ACTION_BATTERY_INFO);
|
||||||
|
intentFilter.addAction(DeviceService.ACTION_MIBAND2_AUTH);
|
||||||
broadcastManager.registerReceiver(mReceiver, intentFilter);
|
broadcastManager.registerReceiver(mReceiver, intentFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -156,8 +160,9 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
|||||||
// so we simply not use the UUID_PAIR characteristic.
|
// so we simply not use the UUID_PAIR characteristic.
|
||||||
// .pair(builder)
|
// .pair(builder)
|
||||||
.testInit(builder)
|
.testInit(builder)
|
||||||
.requestDeviceInfo(builder)
|
.setInitialized(builder);
|
||||||
.requestBatteryInfo(builder);
|
//.requestDeviceInfo(builder)
|
||||||
|
//.requestBatteryInfo(builder);
|
||||||
// .sendUserInfo(builder)
|
// .sendUserInfo(builder)
|
||||||
// .checkAuthenticationNeeded(builder, getDevice())
|
// .checkAuthenticationNeeded(builder, getDevice())
|
||||||
// .setWearLocation(builder)
|
// .setWearLocation(builder)
|
||||||
@ -176,12 +181,11 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
|||||||
//builder.read(getCharacteristic(MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC7)); // example read value: 0019000000
|
//builder.read(getCharacteristic(MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC7)); // example read value: 0019000000
|
||||||
setCurrentTimeWithService(builder);
|
setCurrentTimeWithService(builder);
|
||||||
// write key to miband2
|
// write key to miband2
|
||||||
builder.write(getCharacteristic(MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC9), new byte[] { 0x01, 0x01, (byte) 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45 });
|
//builder.write(getCharacteristic(MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC9), new byte[] { 0x01, 0x08, (byte) 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45 });
|
||||||
// get random auth number
|
// get random auth number
|
||||||
builder.write(getCharacteristic(MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC9), new byte[] { 0x02 });
|
builder.write(getCharacteristic(MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC9), new byte[] { 0x02 , 0x08});
|
||||||
builder.read(getCharacteristic(MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC6)); // probably superfluous
|
//builder.read(getCharacteristic(MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC6)); // probably superfluous
|
||||||
builder.write(getCharacteristic(MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC8), new byte[] { 0x20, 0x00, 0x00, 0x02 });
|
//builder.write(getCharacteristic(MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC8), new byte[] { 0x20, 0x00, 0x00, 0x02 });
|
||||||
Log.d("TESTINIT", "testinit");
|
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -410,8 +414,8 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
|||||||
// write key to miband2
|
// write key to miband2
|
||||||
BluetoothGattCharacteristic characteristic = getCharacteristic(MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC9);
|
BluetoothGattCharacteristic characteristic = getCharacteristic(MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC9);
|
||||||
if (characteristic != null) {
|
if (characteristic != null) {
|
||||||
transaction.write(characteristic, new byte[] { 0x01, 0x01, (byte) 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45 });
|
transaction.write(characteristic, new byte[] { 0x01, 0x08, (byte) 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45 });
|
||||||
transaction.write(characteristic, new byte[] { 0x02 });
|
//transaction.write(characteristic, new byte[] { 0x02, 0x08 });
|
||||||
LOG.info("Pair write");
|
LOG.info("Pair write");
|
||||||
} else {
|
} else {
|
||||||
LOG.info("Unable to pair MI device -- characteristic not available");
|
LOG.info("Unable to pair MI device -- characteristic not available");
|
||||||
@ -878,6 +882,7 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
|||||||
public boolean onCharacteristicChanged(BluetoothGatt gatt,
|
public boolean onCharacteristicChanged(BluetoothGatt gatt,
|
||||||
BluetoothGattCharacteristic characteristic) {
|
BluetoothGattCharacteristic characteristic) {
|
||||||
super.onCharacteristicChanged(gatt, characteristic);
|
super.onCharacteristicChanged(gatt, characteristic);
|
||||||
|
mBluetoothGatt = gatt;
|
||||||
|
|
||||||
UUID characteristicUUID = characteristic.getUuid();
|
UUID characteristicUUID = characteristic.getUuid();
|
||||||
if (MiBandService.UUID_CHARACTERISTIC_BATTERY.equals(characteristicUUID)) {
|
if (MiBandService.UUID_CHARACTERISTIC_BATTERY.equals(characteristicUUID)) {
|
||||||
@ -899,11 +904,15 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
|||||||
// handleUnknownCharacteristic(characteristic.getValue());
|
// handleUnknownCharacteristic(characteristic.getValue());
|
||||||
// return true;
|
// return true;
|
||||||
} else if (MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC9.equals(characteristicUUID)) {
|
} else if (MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC9.equals(characteristicUUID)) {
|
||||||
if (characteristic.getValue()[0] == 0x10) {
|
logMessageContent(characteristic.getValue());
|
||||||
|
if (characteristic.getValue()[0] == 0x10 &&
|
||||||
|
characteristic.getValue()[1] == 0x02 &&
|
||||||
|
characteristic.getValue()[2] == 0x01) {
|
||||||
byte[] eValue = handleAESAuth(characteristic.getValue());
|
byte[] eValue = handleAESAuth(characteristic.getValue());
|
||||||
byte[] responseValue = org.apache.commons.lang3.ArrayUtils.addAll(new byte[] {0x03, 0x00}, eValue);
|
byte[] responseValue = org.apache.commons.lang3.ArrayUtils.addAll(new byte[] {0x03, 0x08}, eValue);
|
||||||
characteristic.setValue(responseValue);
|
Intent intent = new Intent(DeviceService.ACTION_MIBAND2_AUTH)
|
||||||
gatt.writeCharacteristic(characteristic);
|
.putExtra(DeviceService.EXTRA_MIBAND2_AUTH_BYTE, responseValue);
|
||||||
|
LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
} else {
|
} else {
|
||||||
@ -958,6 +967,10 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
|||||||
} else if (MiBandService.UUID_CHARACTERISTIC_CONTROL_POINT.equals(characteristicUUID)) {
|
} else if (MiBandService.UUID_CHARACTERISTIC_CONTROL_POINT.equals(characteristicUUID)) {
|
||||||
handleControlPointResult(characteristic.getValue(), status);
|
handleControlPointResult(characteristic.getValue(), status);
|
||||||
return true;
|
return true;
|
||||||
|
} else if (MiBand2Service.UUID_UNKNOWN_CHARACTERISTIC9.equals(characteristicUUID)) {
|
||||||
|
LOG.info("KEY AES SEND");
|
||||||
|
logMessageContent(characteristic.getValue());
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1022,11 +1035,11 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private byte[] handleAESAuth(byte[] value) {
|
private byte[] handleAESAuth(byte[] value) {
|
||||||
byte[] mValue = Arrays.copyOfRange(value, 3, 188);
|
byte[] mValue = Arrays.copyOfRange(value, 3, 19);
|
||||||
try {
|
try {
|
||||||
Cipher ecipher = null;
|
Cipher ecipher = null;
|
||||||
byte[] sRandom = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45};
|
byte[] sRandom = {0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45};
|
||||||
ecipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
ecipher = Cipher.getInstance("AES/ECB/NoPadding");
|
||||||
SecretKeySpec newKey = new SecretKeySpec(sRandom, "AES");
|
SecretKeySpec newKey = new SecretKeySpec(sRandom, "AES");
|
||||||
ecipher.init(Cipher.ENCRYPT_MODE, newKey);
|
ecipher.init(Cipher.ENCRYPT_MODE, newKey);
|
||||||
byte[] enc = ecipher.doFinal(mValue);
|
byte[] enc = ecipher.doFinal(mValue);
|
||||||
|
@ -37,7 +37,6 @@ import nodomain.freeyourgadget.gadgetbridge.model.CalendarEvents;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.model.CallSpec;
|
import nodomain.freeyourgadget.gadgetbridge.model.CallSpec;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.CannedMessagesSpec;
|
import nodomain.freeyourgadget.gadgetbridge.model.CannedMessagesSpec;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
|
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.GenericItem;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec;
|
import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.MusicStateSpec;
|
import nodomain.freeyourgadget.gadgetbridge.model.MusicStateSpec;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec;
|
import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec;
|
||||||
|
@ -5,7 +5,6 @@ import android.content.Context;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
|
@ -3,9 +3,6 @@ package nodomain.freeyourgadget.gadgetbridge.util;
|
|||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3,17 +3,11 @@ package nodomain.freeyourgadget.gadgetbridge.test;
|
|||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.BeforeClass;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.robolectric.RobolectricTestRunner;
|
|
||||||
import org.robolectric.annotation.Config;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import ch.qos.logback.classic.util.ContextInitializer;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.BuildConfig;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.Logging;
|
import nodomain.freeyourgadget.gadgetbridge.Logging;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ import android.database.sqlite.SQLiteDatabase;
|
|||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
Loading…
Reference in New Issue
Block a user