From cacbb04969014a7abb8a887c895794715b0d3ec3 Mon Sep 17 00:00:00 2001 From: Graham Jones Date: Sun, 8 May 2016 22:17:07 +0100 Subject: [PATCH] Added pebble watch app to assets folder, and added an 'installWatchApp()' function - still not working - installes from pebble store, not the pbw file... --- app/src/main/assets/pebble_sd.pbw | Bin 0 -> 49757 bytes .../org/openseizuredetector/SdDataSource.java | 5 +++ .../SdDataSourcePebble.java | 40 ++++++++++++++++++ .../openseizuredetector/StartupActivity.java | 5 ++- 4 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 app/src/main/assets/pebble_sd.pbw diff --git a/app/src/main/assets/pebble_sd.pbw b/app/src/main/assets/pebble_sd.pbw new file mode 100644 index 0000000000000000000000000000000000000000..4ab17a062ff9becaf9b6c90e936497402e87952f GIT binary patch literal 49757 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 P<@g(d@6TtuXzl+13Bwrv literal 0 HcmV?d00001 diff --git a/app/src/main/java/uk/org/openseizuredetector/SdDataSource.java b/app/src/main/java/uk/org/openseizuredetector/SdDataSource.java index ce62048..ebeeba2 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdDataSource.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdDataSource.java @@ -73,6 +73,11 @@ public abstract class SdDataSource { Log.v(TAG, "stop()"); } + /** + * Install the watch app on the watch. + */ + public void installWatchApp() { Log.v(TAG,"installWatchApp"); } + /** * Display a Toast message on screen. * @param msg - message to display. diff --git a/app/src/main/java/uk/org/openseizuredetector/SdDataSourcePebble.java b/app/src/main/java/uk/org/openseizuredetector/SdDataSourcePebble.java index e4fce0f..3fd64f2 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdDataSourcePebble.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdDataSourcePebble.java @@ -24,7 +24,9 @@ package uk.org.openseizuredetector; import android.content.Context; +import android.content.Intent; import android.content.SharedPreferences; +import android.net.Uri; import android.os.Handler; import android.os.Looper; import android.preference.PreferenceManager; @@ -36,6 +38,11 @@ import com.getpebble.android.kit.Constants; import com.getpebble.android.kit.PebbleKit; import com.getpebble.android.kit.util.PebbleDictionary; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.IntBuffer; @@ -576,6 +583,39 @@ public class SdDataSourcePebble extends SdDataSource { } } + /** + * Install the wach app that is bundled in the 'assets' folder of this + * phone app. + * from https://github.com/pebble-examples/pebblekit-android-example/blob/master/android/Eclipse/src/com/getpebble/pebblekitexample/MainActivity.java#L148 + */ + @Override + public void installWatchApp() { + Log.v(TAG, "SdDataSourcePebble.installWatchApp()"); + final String WATCHAPP_FILENAME = "pebble_sd.pbw"; + + try { + // Read .pbw from assets/ + Intent intent = new Intent(Intent.ACTION_VIEW); + File file = new File(mContext.getExternalFilesDir(null), WATCHAPP_FILENAME); + InputStream is = mContext.getResources().getAssets().open(WATCHAPP_FILENAME); + OutputStream os = new FileOutputStream(file); + byte[] pbw = new byte[is.available()]; + is.read(pbw); + os.write(pbw); + is.close(); + os.close(); + + // Install via Pebble Android app + intent.setDataAndType(Uri.fromFile(file), "application/pbw"); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mContext.startActivity(intent); + } catch (IOException e) { + Toast.makeText(mContext, "App install failed: " + e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); + } + + } + + diff --git a/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java b/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java index 05f5657..7278f0b 100644 --- a/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java +++ b/app/src/main/java/uk/org/openseizuredetector/StartupActivity.java @@ -81,7 +81,6 @@ public class StartupActivity extends Activity { PreferenceManager.setDefaultValues(this, R.xml.camera_prefs, true); PreferenceManager.setDefaultValues(this, R.xml.general_prefs, true); PreferenceManager.setDefaultValues(this, R.xml.network_datasource_prefs, true); - PreferenceManager.setDefaultValues(this, R.xml.pebble_datasource_prefs, false); Button b = (Button)findViewById(R.id.settingsButton); b.setOnClickListener(new View.OnClickListener() { @@ -105,7 +104,9 @@ public class StartupActivity extends Activity { @Override public void onClick(View view) { Log.v(TAG, "pebble button clicked"); - mUtil.startPebbleApp(); + mUtil.showToast("pebble button clicked"); + //mUtil.startPebbleApp(); + mConnection.mSdServer.mSdDataSource.installWatchApp(); } });