From c4f7fc1531e0a4386b7956f72d76073b03c1a04c Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Mon, 18 May 2015 22:20:01 +0200 Subject: [PATCH] Start App on Pebble when tapping it AppManager --- .../gadgetbridge/AbstractBTDeviceSupport.java | 6 ++++++ .../gadgetbridge/AppManagerActivity.java | 11 +++++++++++ .../gadgetbridge/BluetoothCommunicationService.java | 8 +++++++- .../freeyourgadget/gadgetbridge/EventHandler.java | 3 +++ .../gadgetbridge/miband/MiBandSupport.java | 5 +++++ .../gadgetbridge/protocol/GBDeviceProtocol.java | 4 ++++ 6 files changed, 36 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/AbstractBTDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/AbstractBTDeviceSupport.java index ea04af1f0..02f60c7a2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/AbstractBTDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/AbstractBTDeviceSupport.java @@ -107,6 +107,12 @@ public abstract class AbstractBTDeviceSupport extends AbstractDeviceSupport { sendToDevice(bytes); } + @Override + public void onAppStart(UUID uuid) { + byte[] bytes = gbDeviceProtocol.encodeAppStart(uuid); + sendToDevice(bytes); + } + @Override public void onAppDelete(UUID uuid) { byte[] bytes = gbDeviceProtocol.encodeAppDelete(uuid); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/AppManagerActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/AppManagerActivity.java index b9436179c..f8779391c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/AppManagerActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/AppManagerActivity.java @@ -63,6 +63,17 @@ public class AppManagerActivity extends Activity { ListView appListView = (ListView) findViewById(R.id.appListView); mGBDeviceAppAdapter = new GBDeviceAppAdapter(this, appList); appListView.setAdapter(this.mGBDeviceAppAdapter); + + appListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View v, int position, long id) { + Intent startIntent = new Intent(AppManagerActivity.this, BluetoothCommunicationService.class); + startIntent.setAction(BluetoothCommunicationService.ACTION_STARTAPP); + startIntent.putExtra("app_uuid", appList.get(position).getUUID().toString()); + startService(startIntent); + } + }); + registerForContextMenu(appListView); IntentFilter filter = new IntentFilter(); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/BluetoothCommunicationService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/BluetoothCommunicationService.java index c0a32c27e..7d49d639c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/BluetoothCommunicationService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/BluetoothCommunicationService.java @@ -51,6 +51,8 @@ public class BluetoothCommunicationService extends Service { = "nodomain.freeyourgadget.gadgetbride.bluetoothcommunicationservice.action.request_versioninfo"; public static final String ACTION_REQUEST_APPINFO = "nodomain.freeyourgadget.gadgetbride.bluetoothcommunicationservice.action.request_appinfo"; + public static final String ACTION_STARTAPP + = "nodomain.freeyourgadget.gadgetbride.bluetoothcommunicationservice.action.startapp"; public static final String ACTION_DELETEAPP = "nodomain.freeyourgadget.gadgetbride.bluetoothcommunicationservice.action.deleteapp"; public static final String ACTION_INSTALL_PEBBLEAPP @@ -227,8 +229,12 @@ public class BluetoothCommunicationService extends Service { case ACTION_REQUEST_APPINFO: mDeviceSupport.onAppInfoReq(); break; - case ACTION_DELETEAPP: + case ACTION_STARTAPP: UUID uuid = UUID.fromString(intent.getStringExtra("app_uuid")); + mDeviceSupport.onAppStart(uuid); + break; + case ACTION_DELETEAPP: + uuid = UUID.fromString(intent.getStringExtra("app_uuid")); mDeviceSupport.onAppDelete(uuid); break; case ACTION_INSTALL_PEBBLEAPP: diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/EventHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/EventHandler.java index 9970a3773..ed69d6033 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/EventHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/EventHandler.java @@ -21,9 +21,12 @@ public interface EventHandler { void onAppInfoReq(); + void onAppStart(UUID uuid); + void onAppDelete(UUID uuid); void onPhoneVersion(byte os); void onReboot(); + } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/miband/MiBandSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/miband/MiBandSupport.java index ebd701546..ad317bc3a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/miband/MiBandSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/miband/MiBandSupport.java @@ -321,6 +321,11 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport { // not supported } + @Override + public void onAppStart(UUID uuid) { + // not supported + } + @Override public void onAppDelete(UUID uuid) { // not supported diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/protocol/GBDeviceProtocol.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/protocol/GBDeviceProtocol.java index e9bc632a8..8bc295f56 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/protocol/GBDeviceProtocol.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/protocol/GBDeviceProtocol.java @@ -46,6 +46,10 @@ public abstract class GBDeviceProtocol { return null; } + public byte[] encodeAppStart(UUID uuid) { + return null; + } + public byte[] encodePhoneVersion(byte os) { return null; }