add icons for pebble and watchfaces. Store app type in GBDeviceApp. Store device type in GBDevice.
@ -1,4 +1,8 @@
|
||||
The following artwork is licensed under the
|
||||
Creative Commons Attribution-Share Alike 4.0 International license:
|
||||
The following artwork is licensed under the following licenses
|
||||
|
||||
"GET IT ON F-Droid" button by Laura Kalbag. Source: https://ind.ie/about/blog/f-droid-button/
|
||||
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0):
|
||||
ic_device_pebble.png (gadgetbridge.png from https://gitlab.com/xphnx/twelf_cm12_theme/)
|
||||
ic_watchface.png (clock.png from https://gitlab.com/xphnx/twelf_cm12_theme/)
|
||||
|
||||
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0):
|
||||
"GET IT ON F-Droid" button by Laura Kalbag. Source: https://ind.ie/about/blog/f-droid-button/
|
||||
|
@ -38,8 +38,9 @@ public class AppManagerActivity extends Activity {
|
||||
String appCreator = intent.getStringExtra("app_creator" + i.toString());
|
||||
int id = intent.getIntExtra("app_id" + i.toString(), -1);
|
||||
int index = intent.getIntExtra("app_index" + i.toString(), -1);
|
||||
GBDeviceApp.Type appType = GBDeviceApp.Type.values()[intent.getIntExtra("app_type" + i.toString(), 0)];
|
||||
|
||||
appList.add(new GBDeviceApp(id, index, appName, appCreator, ""));
|
||||
appList.add(new GBDeviceApp(id, index, appName, appCreator, "", appType));
|
||||
}
|
||||
mGBDeviceAppAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
@ -166,6 +166,7 @@ public class BluetoothCommunicationService extends Service {
|
||||
appInfoIntent.putExtra("app_creator" + i.toString(), appInfoCmd.apps[i].getCreator());
|
||||
appInfoIntent.putExtra("app_id" + i.toString(), appInfoCmd.apps[i].getId());
|
||||
appInfoIntent.putExtra("app_index" + i.toString(), appInfoCmd.apps[i].getIndex());
|
||||
appInfoIntent.putExtra("app_type" + i.toString(), appInfoCmd.apps[i].getType().ordinal());
|
||||
}
|
||||
LocalBroadcastManager.getInstance(this).sendBroadcast(appInfoIntent);
|
||||
break;
|
||||
@ -251,7 +252,13 @@ public class BluetoothCommunicationService extends Service {
|
||||
}
|
||||
BluetoothDevice btDevice = mBtAdapter.getRemoteDevice(btDeviceAddress);
|
||||
if (btDevice != null) {
|
||||
gbdevice = new GBDevice(btDeviceAddress, btDevice.getName());
|
||||
GBDevice.Type deviceType = GBDevice.Type.UNKNOWN;
|
||||
if (btDevice.getName().indexOf("Pebble") == 0) {
|
||||
deviceType = GBDevice.Type.PEBBLE;
|
||||
} else if (btDevice.getName().equals("MI")) {
|
||||
deviceType = GBDevice.Type.MIBAND;
|
||||
}
|
||||
gbdevice = new GBDevice(btDeviceAddress, btDevice.getName(), deviceType);
|
||||
gbdevice.setState(GBDevice.State.CONNECTING);
|
||||
sendDeviceUpdateIntent();
|
||||
|
||||
|
@ -171,10 +171,16 @@ public class ControlCenter extends Activity {
|
||||
} else {
|
||||
Set<BluetoothDevice> pairedDevices = btAdapter.getBondedDevices();
|
||||
for (BluetoothDevice device : pairedDevices) {
|
||||
GBDevice.Type deviceType = GBDevice.Type.UNKNOWN;
|
||||
if (device.getName().indexOf("Pebble") == 0) {
|
||||
// Matching device found
|
||||
deviceList.add(new GBDevice(device.getAddress(), device.getName()));
|
||||
deviceType = GBDevice.Type.PEBBLE;
|
||||
} else if (device.getName().equals("MI")) {
|
||||
deviceType = GBDevice.Type.MIBAND;
|
||||
}
|
||||
else {
|
||||
continue;
|
||||
}
|
||||
deviceList.add(new GBDevice(device.getAddress(), device.getName(), deviceType));
|
||||
}
|
||||
if (!deviceList.isEmpty()) {
|
||||
hintTextView.setText("tap a device to connect");
|
||||
|
@ -3,26 +3,14 @@ package nodomain.freeyourgadget.gadgetbridge;
|
||||
public class GBDevice {
|
||||
private final String name;
|
||||
private final String address;
|
||||
private final Type type;
|
||||
private String firmwareVersion = null;
|
||||
private State state = State.NOT_CONNECTED;
|
||||
|
||||
public void setState(State state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public enum State {
|
||||
NOT_CONNECTED,
|
||||
CONNECTING,
|
||||
CONNECTED
|
||||
}
|
||||
|
||||
public GBDevice(String address, String name) {
|
||||
public GBDevice(String address, String name, Type type) {
|
||||
this.address = address;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void setFirmwareVersion(String firmwareVersion) {
|
||||
this.firmwareVersion = firmwareVersion;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
@ -37,10 +25,18 @@ public class GBDevice {
|
||||
return firmwareVersion;
|
||||
}
|
||||
|
||||
public void setFirmwareVersion(String firmwareVersion) {
|
||||
this.firmwareVersion = firmwareVersion;
|
||||
}
|
||||
|
||||
public State getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public void setState(State state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
String getStateString() {
|
||||
switch (state) {
|
||||
case NOT_CONNECTED:
|
||||
@ -60,4 +56,21 @@ public class GBDevice {
|
||||
return getStateString();
|
||||
}
|
||||
}
|
||||
|
||||
public Type getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public enum State {
|
||||
NOT_CONNECTED,
|
||||
CONNECTING,
|
||||
CONNECTED
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
UNKNOWN,
|
||||
PEBBLE,
|
||||
MIBAND
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -6,13 +6,15 @@ public class GBDeviceApp {
|
||||
private final String version;
|
||||
private final int id;
|
||||
private final int index;
|
||||
private final Type type;
|
||||
|
||||
public GBDeviceApp(int id, int index, String name, String creator, String version) {
|
||||
public GBDeviceApp(int id, int index, String name, String creator, String version, Type type) {
|
||||
this.id = id;
|
||||
this.index = index;
|
||||
this.name = name;
|
||||
this.creator = creator;
|
||||
this.version = version;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
@ -34,4 +36,15 @@ public class GBDeviceApp {
|
||||
public int getIndex() {
|
||||
return index;
|
||||
}
|
||||
|
||||
public Type getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
UNKNOWN,
|
||||
WATCHFACE,
|
||||
APP_GENERIC,
|
||||
APP_ACTIVITYTRACKER,
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.List;
|
||||
@ -36,9 +37,22 @@ public class GBDeviceAdapter extends ArrayAdapter<GBDevice> {
|
||||
}
|
||||
TextView deviceStatusLabel = (TextView) view.findViewById(R.id.device_status);
|
||||
TextView deviceNameLabel = (TextView) view.findViewById(R.id.device_name);
|
||||
ImageView deviceImageView = (ImageView) view.findViewById(R.id.device_image);
|
||||
|
||||
deviceStatusLabel.setText(device.getInfoString());
|
||||
deviceNameLabel.setText(device.getName());
|
||||
|
||||
switch (device.getType()) {
|
||||
case PEBBLE:
|
||||
deviceImageView.setImageResource(R.drawable.ic_device_pebble);
|
||||
break;
|
||||
case MIBAND:
|
||||
deviceImageView.setImageResource(R.drawable.ic_launcher); //FIXME: add icon
|
||||
break;
|
||||
default:
|
||||
deviceImageView.setImageResource(R.drawable.ic_launcher);
|
||||
}
|
||||
|
||||
return view;
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.List;
|
||||
@ -36,8 +37,17 @@ public class GBDeviceAppAdapter extends ArrayAdapter<GBDeviceApp> {
|
||||
}
|
||||
TextView deviceStatusLabel = (TextView) view.findViewById(R.id.device_status);
|
||||
TextView deviceNameLabel = (TextView) view.findViewById(R.id.device_name);
|
||||
ImageView deviceImageView = (ImageView) view.findViewById(R.id.device_image);
|
||||
|
||||
deviceStatusLabel.setText(deviceApp.getVersion() + " by " + deviceApp.getCreator());
|
||||
deviceNameLabel.setText(deviceApp.getName());
|
||||
switch (deviceApp.getType()) {
|
||||
case WATCHFACE:
|
||||
deviceImageView.setImageResource(R.drawable.ic_watchface);
|
||||
break;
|
||||
default:
|
||||
deviceImageView.setImageResource(R.drawable.ic_device_pebble);
|
||||
}
|
||||
|
||||
return view;
|
||||
}
|
||||
|
@ -325,17 +325,27 @@ public class PebbleProtocol {
|
||||
int banks = buf.getInt();
|
||||
int banksUsed = buf.getInt();
|
||||
byte[] appName = new byte[32];
|
||||
byte[] creatorName = new byte[32];
|
||||
byte[] appCreator = new byte[32];
|
||||
appInfoCmd.apps = new GBDeviceApp[banksUsed];
|
||||
|
||||
for (int i = 0; i < banksUsed; i++) {
|
||||
int id = buf.getInt();
|
||||
int index = buf.getInt();
|
||||
buf.get(appName, 0, 32);
|
||||
buf.get(creatorName, 0, 32);
|
||||
buf.get(appCreator, 0, 32);
|
||||
int flags = buf.getInt();
|
||||
|
||||
GBDeviceApp.Type appType;
|
||||
switch (flags) {
|
||||
case 1:
|
||||
appType = GBDeviceApp.Type.WATCHFACE;
|
||||
break;
|
||||
default:
|
||||
appType = GBDeviceApp.Type.APP_GENERIC;
|
||||
break;
|
||||
}
|
||||
Short appVersion = buf.getShort();
|
||||
appInfoCmd.apps[i] = new GBDeviceApp(id, index, new String(appName).trim(), new String(creatorName).trim(), appVersion.toString());
|
||||
appInfoCmd.apps[i] = new GBDeviceApp(id, index, new String(appName).trim(), new String(appCreator).trim(), appVersion.toString(), appType);
|
||||
}
|
||||
cmd = appInfoCmd;
|
||||
break;
|
||||
|
BIN
app/src/main/res/drawable-hdpi/ic_device_pebble.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
app/src/main/res/drawable-hdpi/ic_watchface.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
app/src/main/res/drawable-mdpi/ic_device_pebble.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
app/src/main/res/drawable-mdpi/ic_watchface.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
app/src/main/res/drawable-xhdpi/ic_device_pebble.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
app/src/main/res/drawable-xhdpi/ic_watchface.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
app/src/main/res/drawable-xxhdpi/ic_device_pebble.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
app/src/main/res/drawable-xxhdpi/ic_watchface.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
@ -9,8 +9,7 @@
|
||||
android:id="@+id/device_image"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:src="@drawable/ic_launcher"/>
|
||||
android:layout_alignParentLeft="true" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
|