From c1791a22bea50ed0180a84687e10de112d3e1807 Mon Sep 17 00:00:00 2001 From: Trevor Slocum Date: Thu, 27 Feb 2020 07:23:39 -0800 Subject: [PATCH] Remove usage of Google Play Services Closes #19 and #39. --- CHANGELOG | 1 + MeditationAssistant/build.gradle | 34 +-- .../src/free/AndroidManifest.xml | 28 --- .../src/full/AndroidManifest.xml | 24 --- .../meditationassistant/AboutActivity.java | 21 +- .../meditationassistant/CompleteActivity.java | 29 --- .../meditationassistant/MainActivity.java | 29 --- .../meditationassistant/MediNETActivity.java | 14 -- .../MeditationAssistant.java | 10 - .../meditationassistant/ProgressActivity.java | 14 -- .../meditationassistant/SettingsActivity.java | 18 -- .../src/main/res/xml/pref_miscellaneous.xml | 6 - .../src/opensource/AndroidManifest.xml | 2 - .../meditationassistant/UtilityMA.java | 62 ------ .../meditationassistant/UtilityMA.java | 195 ------------------ .../WearListenerService.java | 55 ----- MeditationAssistantWear/.gitignore | 1 - MeditationAssistantWear/build.gradle | 35 ---- MeditationAssistantWear/lint.xml | 4 - MeditationAssistantWear/proguard-rules.pro | 17 -- .../src/main/AndroidManifest.xml | 33 --- .../WearEditDurationActivity.java | 40 ---- .../meditationassistant/WearMainActivity.java | 82 -------- .../WearMeditationAssistant.java | 7 - .../src/main/res/layout/wear_editduration.xml | 12 -- .../res/layout/wear_editduration_rect.xml | 25 --- .../res/layout/wear_editduration_round.xml | 26 --- .../src/main/res/layout/wear_main.xml | 12 -- .../src/main/res/layout/wear_main_rect.xml | 16 -- .../src/main/res/layout/wear_main_round.xml | 16 -- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3898 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2885 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 6135 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 8385 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 13351 -> 0 bytes .../src/main/res/values/strings.xml | 5 - .../src/main/res/values/styles.xml | 15 -- settings.gradle | 2 - 38 files changed, 12 insertions(+), 878 deletions(-) delete mode 100644 MeditationAssistant/src/opensource/java/sh/ftp/rocketninelabs/meditationassistant/UtilityMA.java delete mode 100644 MeditationAssistant/src/shared/java/sh/ftp/rocketninelabs/meditationassistant/UtilityMA.java delete mode 100644 MeditationAssistant/src/shared/java/sh/ftp/rocketninelabs/meditationassistant/WearListenerService.java delete mode 100644 MeditationAssistantWear/.gitignore delete mode 100644 MeditationAssistantWear/build.gradle delete mode 100644 MeditationAssistantWear/lint.xml delete mode 100644 MeditationAssistantWear/proguard-rules.pro delete mode 100644 MeditationAssistantWear/src/main/AndroidManifest.xml delete mode 100644 MeditationAssistantWear/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WearEditDurationActivity.java delete mode 100644 MeditationAssistantWear/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WearMainActivity.java delete mode 100644 MeditationAssistantWear/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WearMeditationAssistant.java delete mode 100644 MeditationAssistantWear/src/main/res/layout/wear_editduration.xml delete mode 100644 MeditationAssistantWear/src/main/res/layout/wear_editduration_rect.xml delete mode 100644 MeditationAssistantWear/src/main/res/layout/wear_editduration_round.xml delete mode 100644 MeditationAssistantWear/src/main/res/layout/wear_main.xml delete mode 100644 MeditationAssistantWear/src/main/res/layout/wear_main_rect.xml delete mode 100644 MeditationAssistantWear/src/main/res/layout/wear_main_round.xml delete mode 100644 MeditationAssistantWear/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 MeditationAssistantWear/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 MeditationAssistantWear/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 MeditationAssistantWear/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 MeditationAssistantWear/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 MeditationAssistantWear/src/main/res/values/strings.xml delete mode 100644 MeditationAssistantWear/src/main/res/values/styles.xml diff --git a/CHANGELOG b/CHANGELOG index 867da4d..8433e25 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ 1.5.9: - Resolve possible crash when waking device +- Remove usage of Google Play Services (was previously used in releases on Google Play and Amazon) 1.5.8: - Resolve minor sound delay by preloading sounds diff --git a/MeditationAssistant/build.gradle b/MeditationAssistant/build.gradle index ca0e692..e12e49b 100644 --- a/MeditationAssistant/build.gradle +++ b/MeditationAssistant/build.gradle @@ -2,14 +2,14 @@ apply plugin: 'com.android.application' android { compileSdkVersion 29 - buildToolsVersion '29.0.2' + buildToolsVersion '29.0.3' defaultConfig { minSdkVersion 16 targetSdkVersion 29 - versionCode 158 - versionName "1.5.8" + versionCode 159 + versionName "1.5.9" applicationId "sh.ftp.rocketninelabs.meditationassistant" manifestPlaceholders = [ @@ -75,32 +75,18 @@ android { } dependencies { - implementation 'androidx.core:core:1.1.0' + implementation 'androidx.core:core:1.2.0' implementation 'androidx.legacy:legacy-support-core-utils:1.0.0' implementation 'androidx.legacy:legacy-support-core-ui:1.0.0' implementation 'androidx.media:media:1.1.0' - implementation 'androidx.fragment:fragment:1.1.0' + implementation 'androidx.fragment:fragment:1.2.2' implementation 'androidx.recyclerview:recyclerview:1.1.0' - implementation 'com.google.android.material:material:1.0.0' + implementation 'com.google.android.material:material:1.1.0' + implementation 'ch.acra:acra-http:5.3.0' implementation "net.openid:appauth:0.7.1" - implementation "com.squareup.okio:okio:2.2.2" implementation 'com.opencsv:opencsv:4.6' - implementation "net.margaritov.preference.colorpicker.ColorPickerPreference:ColorPickerPreference:1.0.0" - - freeImplementation 'com.google.android.gms:play-services-base:16.1.0' - fullImplementation 'com.google.android.gms:play-services-base:16.1.0' - freeImplementation 'com.google.android.gms:play-services-analytics:16.0.8' - fullImplementation 'com.google.android.gms:play-services-analytics:16.0.8' - //freeImplementation 'com.google.android.gms:play-services-wearable:15.0.1' - //fullImplementation 'com.google.android.gms:play-services-wearable:15.0.1' - freeImplementation 'com.google.android.gms:play-services-appinvite:16.1.1' - fullImplementation 'com.google.android.gms:play-services-appinvite:16.1.1' - freeImplementation 'com.google.android.gms:play-services-fitness:16.0.1' - fullImplementation 'com.google.android.gms:play-services-fitness:16.0.1' - //noinspection GradleDynamicVersion - implementation 'ch.acra:acra-http:5.3.0' - implementation 'com.github.amlcurran.showcaseview:library:5.4.3' + implementation "com.squareup.okio:okio:2.2.2" implementation 'com.nononsenseapps:filepicker:4.2.1' - //wearApp project(':MeditationAssistantWear') - // TODO: Uncomment when Wear app is ready + implementation 'com.github.amlcurran.showcaseview:library:5.4.3' + implementation "net.margaritov.preference.colorpicker.ColorPickerPreference:ColorPickerPreference:1.0.0" } diff --git a/MeditationAssistant/src/free/AndroidManifest.xml b/MeditationAssistant/src/free/AndroidManifest.xml index 428b89d..af1c6d9 100644 --- a/MeditationAssistant/src/free/AndroidManifest.xml +++ b/MeditationAssistant/src/free/AndroidManifest.xml @@ -1,46 +1,18 @@ - - - - - - - - - - - - - - - diff --git a/MeditationAssistant/src/full/AndroidManifest.xml b/MeditationAssistant/src/full/AndroidManifest.xml index 4cd7eb7..cff6b59 100644 --- a/MeditationAssistant/src/full/AndroidManifest.xml +++ b/MeditationAssistant/src/full/AndroidManifest.xml @@ -1,42 +1,18 @@ - - - - - - - - - - - - - diff --git a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/AboutActivity.java b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/AboutActivity.java index 8d56181..bee0dda 100644 --- a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/AboutActivity.java +++ b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/AboutActivity.java @@ -63,8 +63,6 @@ public class AboutActivity extends Activity { return true; } }); - - getMeditationAssistant().utility.initializeTracker(this); } @Override @@ -91,12 +89,7 @@ public class AboutActivity extends Activity { NavUtils.navigateUpFromSameTask(this); return true; } else if (i == R.id.action_share_app) { - try { - Intent intent = getMeditationAssistant().utility.getAppShareIntent(); - startActivityForResult(intent, 1337); - } catch (Exception e) { - e.printStackTrace(); - } + // TODO Reimplement as standard share } else if (i == R.id.action_rate) { getMeditationAssistant().rateApp(); return true; @@ -105,18 +98,6 @@ public class AboutActivity extends Activity { return super.onOptionsItemSelected(item); } - @Override - public void onStart() { - super.onStart(); - getMeditationAssistant().utility.trackingStart(this); - } - - @Override - protected void onStop() { - super.onStop(); - getMeditationAssistant().utility.trackingStop(this); - } - public void learnMore(View view) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(MeditationAssistant.URL_SOURCE)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); } diff --git a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/CompleteActivity.java b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/CompleteActivity.java index eb43633..f14acc6 100644 --- a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/CompleteActivity.java +++ b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/CompleteActivity.java @@ -155,8 +155,6 @@ public class CompleteActivity extends Activity { getMeditationAssistant().restoreVolume(); } - getMeditationAssistant().utility.initializeTracker(this); - if (!manual) { getMeditationAssistant().vibrateDevice(); @@ -238,33 +236,6 @@ public class CompleteActivity extends Activity { } } - @Override - public void onDestroy() { - super.onDestroy(); - } - - @Override - public void onPause() { - super.onPause(); - } - - @Override - public void onResume() { - super.onResume(); - } - - @Override - public void onStart() { - super.onStart(); - getMeditationAssistant().utility.trackingStart(this); - } - - @Override - protected void onStop() { - super.onStop(); - getMeditationAssistant().utility.trackingStop(this); - } - public void postMediNET(View view) { if (getMeditationAssistant().getMediNETKey().equals("")) { getMeditationAssistant().startAuth(CompleteActivity.this, true); diff --git a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MainActivity.java b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MainActivity.java index 32df018..dab0d2e 100644 --- a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MainActivity.java +++ b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MainActivity.java @@ -170,8 +170,6 @@ public class MainActivity extends Activity implements OnShowcaseEventListener { setTheme(getMeditationAssistant().getMATheme()); setContentView(R.layout.activity_main); - getMeditationAssistant().utility.initializeTracker(this); - handler = new Handler(); am = getMeditationAssistant().getAlarmManager(); @@ -1651,23 +1649,6 @@ public class MainActivity extends Activity implements OnShowcaseEventListener { super.onResume(); } - @Override - public void onStart() { - getMeditationAssistant().utility.trackingStart(this); - getMeditationAssistant().utility.connectGoogleClient(); - - super.onStart(); - } - - @Override - protected void onStop() { - getMeditationAssistant().utility.trackingStop(this); - - getMeditationAssistant().utility.disconnectGoogleClient(); - - super.onStop(); - } - @Override public void onDestroy() { if (!getMeditationAssistant().getPrefs().getBoolean("pref_autosignin", false) && !getMeditationAssistant().getPrefs().getString("key", "").equals("")) { @@ -2102,16 +2083,6 @@ public class MainActivity extends Activity implements OnShowcaseEventListener { } } - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == MeditationAssistant.REQUEST_FIT) { - getMeditationAssistant().utility.googleAPIAuthInProgress = false; - if (resultCode == RESULT_OK) { - getMeditationAssistant().utility.onGoogleClientResult(); - } - } - } - public void pressCommunity(View view) { if (sv != null && sv.isShown()) { try { diff --git a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MediNETActivity.java b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MediNETActivity.java index 68e633c..9db968e 100644 --- a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MediNETActivity.java +++ b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MediNETActivity.java @@ -281,8 +281,6 @@ public class MediNETActivity extends Activity { setContentView(R.layout.activity_medinet); getActionBar().setDisplayHomeAsUpEnabled(true); - getMeditationAssistant().utility.initializeTracker(this); - initUI(true); } @@ -394,18 +392,6 @@ public class MediNETActivity extends Activity { webView.saveState(outState); } - @Override - public void onStart() { - super.onStart(); - getMeditationAssistant().utility.trackingStart(this); - } - - @Override - protected void onStop() { - super.onStop(); - getMeditationAssistant().utility.trackingStop(this); - } - public void setWindowBackground() { if (getMeditationAssistant().getMATheme() != R.style.MeditationDarkTheme && getMeditationAssistant().getMATheme() != R.style.Buddhism) { getWindow().setBackgroundDrawable( diff --git a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MeditationAssistant.java b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MeditationAssistant.java index c662994..94ee0cb 100644 --- a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MeditationAssistant.java +++ b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/MeditationAssistant.java @@ -110,7 +110,6 @@ public class MeditationAssistant extends Application { public PendingIntent reminderPendingIntent = null; public String theme = null; public String marketName = null; - public UtilityMA utility = new UtilityMA(); public Integer previous_volume = null; private String appVersion = null; private long timeToStopMeditate = 0; @@ -1125,8 +1124,6 @@ public class MeditationAssistant extends Application { super.onCreate(); ACRA.init(this); - utility.ma = this; - CookieManager cookieManager = new CookieManager(); CookieHandler.setDefault(cookieManager); @@ -1204,13 +1201,6 @@ public class MeditationAssistant extends Application { return result.toString(); } - public boolean sendUsageReports() { - if (sendusage == null) { - sendusage = getPrefs().getBoolean("pref_sendusage", true); - } - return sendusage; - } - public void setMediNETKey(String key, String provider) { Log.d("MeditationAssistant", "Setting medinet key: " + key + " - " + provider); medinetkey = key; diff --git a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/ProgressActivity.java b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/ProgressActivity.java index 6ddd133..e719a83 100644 --- a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/ProgressActivity.java +++ b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/ProgressActivity.java @@ -85,8 +85,6 @@ public class ProgressActivity extends FragmentActivity { } else { mViewPager.setCurrentItem(CALENDAR_FRAGMENT, false); } - - getMeditationAssistant().utility.initializeTracker(this); } public void goToSessionAtDate(int[] date) { @@ -242,18 +240,6 @@ public class ProgressActivity extends FragmentActivity { return super.onOptionsItemSelected(item); } - @Override - public void onStart() { - super.onStart(); - getMeditationAssistant().utility.trackingStart(this); - } - - @Override - protected void onStop() { - super.onStop(); - getMeditationAssistant().utility.trackingStop(this); - } - @Override public void onPause() { super.onPause(); diff --git a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/SettingsActivity.java b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/SettingsActivity.java index 813129d..f2a668d 100644 --- a/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/SettingsActivity.java +++ b/MeditationAssistant/src/main/java/sh/ftp/rocketninelabs/meditationassistant/SettingsActivity.java @@ -449,22 +449,9 @@ public class SettingsActivity extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { setTheme(getMeditationAssistant().getMATheme()); - getMeditationAssistant().utility.initializeTracker(this); super.onCreate(savedInstanceState); } - @Override - public void onStart() { - super.onStart(); - getMeditationAssistant().utility.trackingStart(this); - } - - @Override - protected void onStop() { - super.onStop(); - getMeditationAssistant().utility.trackingStop(this); - } - @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (resultCode != Activity.RESULT_OK) { @@ -716,11 +703,6 @@ public class SettingsActivity extends PreferenceActivity { bindPreferenceSummaryToValue(preferenceFragment == null ? findPreference("pref_theme") : preferenceFragment.findPreference("pref_theme")); bindPreferenceSummaryToValue(preferenceFragment == null ? findPreference("pref_widgetcolor") : preferenceFragment.findPreference("pref_widgetcolor")); bindPreferenceSummaryToValue(preferenceFragment == null ? findPreference("pref_mainbuttons") : preferenceFragment.findPreference("pref_mainbuttons")); - - if (BuildConfig.FLAVOR.equals("opensource")) { // Hide usage statistics preference, as tracking is completely disabled - CheckBoxPreference pref_sendusage = (CheckBoxPreference) (preferenceFragment == null ? findPreference("pref_sendusage") : preferenceFragment.findPreference("pref_sendusage")); - (preferenceFragment == null ? getPreferenceScreen() : preferenceFragment.getPreferenceScreen()).removePreference(pref_sendusage); - } } } diff --git a/MeditationAssistant/src/main/res/xml/pref_miscellaneous.xml b/MeditationAssistant/src/main/res/xml/pref_miscellaneous.xml index 4d220a6..fcf3e07 100644 --- a/MeditationAssistant/src/main/res/xml/pref_miscellaneous.xml +++ b/MeditationAssistant/src/main/res/xml/pref_miscellaneous.xml @@ -22,10 +22,4 @@ android:key="pref_widgetcolor" android:title="@string/pref_widgetcolor" /> - - diff --git a/MeditationAssistant/src/opensource/AndroidManifest.xml b/MeditationAssistant/src/opensource/AndroidManifest.xml index 57deff4..4340c75 100644 --- a/MeditationAssistant/src/opensource/AndroidManifest.xml +++ b/MeditationAssistant/src/opensource/AndroidManifest.xml @@ -3,11 +3,9 @@ package="sh.ftp.rocketninelabs.meditationassistant"> - - diff --git a/MeditationAssistant/src/opensource/java/sh/ftp/rocketninelabs/meditationassistant/UtilityMA.java b/MeditationAssistant/src/opensource/java/sh/ftp/rocketninelabs/meditationassistant/UtilityMA.java deleted file mode 100644 index 205ea8a..0000000 --- a/MeditationAssistant/src/opensource/java/sh/ftp/rocketninelabs/meditationassistant/UtilityMA.java +++ /dev/null @@ -1,62 +0,0 @@ -package sh.ftp.rocketninelabs.meditationassistant; - -import android.app.Activity; -import android.content.Intent; - -public class UtilityMA { - - public MeditationAssistant ma = null; - public boolean googleAPIAuthInProgress = false; - - public void initializeTracker(Activity activity) { - return; - } - - public void setupGoogleClient(final Activity activity) { - return; - } - - public void sendFitData() { - return; - } - - public void loadAd(Activity activity) { - return; - } - - public void pauseAd(Activity activity) { - return; - } - - public void resumeAd(Activity activity) { - return; - } - - public void destroyAd(Activity activity) { - return; - } - - public void trackingStart(Activity activity) { - return; - } - - public void trackingStop(Activity activity) { - return; - } - - public void connectGoogleClient() { - return; - } - - public void disconnectGoogleClient() { - return; - } - - public void onGoogleClientResult() { - return; - } - - public Intent getAppShareIntent() { - return null; - } -} \ No newline at end of file diff --git a/MeditationAssistant/src/shared/java/sh/ftp/rocketninelabs/meditationassistant/UtilityMA.java b/MeditationAssistant/src/shared/java/sh/ftp/rocketninelabs/meditationassistant/UtilityMA.java deleted file mode 100644 index 0dc3b99..0000000 --- a/MeditationAssistant/src/shared/java/sh/ftp/rocketninelabs/meditationassistant/UtilityMA.java +++ /dev/null @@ -1,195 +0,0 @@ -package sh.ftp.rocketninelabs.meditationassistant; - -import android.app.Activity; -import android.content.Intent; -import android.content.IntentSender; -import android.os.Bundle; -import android.util.Log; - -import com.google.android.gms.analytics.GoogleAnalytics; -import com.google.android.gms.analytics.Tracker; -import com.google.android.gms.appinvite.AppInviteInvitation; -import com.google.android.gms.common.ConnectionResult; -import com.google.android.gms.common.GooglePlayServicesUtil; -import com.google.android.gms.common.Scopes; -import com.google.android.gms.common.api.GoogleApiClient; -import com.google.android.gms.common.api.Scope; -import com.google.android.gms.fitness.Fitness; -import com.google.android.gms.fitness.FitnessActivities; -import com.google.android.gms.fitness.data.Session; -import com.google.android.gms.fitness.request.SessionInsertRequest; - -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.concurrent.TimeUnit; - -public class UtilityMA { - public MeditationAssistant ma = null; - public GoogleApiClient googleClient = null; - public HashMap mTrackers = new HashMap<>(); - public boolean googleAPIAuthInProgress = false; - - private MeditationAssistant getMeditationAssistant() { - return ma; - } - - synchronized public Tracker getTracker(Activity activity, MeditationAssistant.TrackerName trackerId) { - if (!mTrackers.containsKey(trackerId)) { - GoogleAnalytics analytics = GoogleAnalytics.getInstance(activity); - Tracker t = analytics.newTracker(R.xml.analytics_tracker); - t.set("Market", getMeditationAssistant().getMarketName()); - mTrackers.put(trackerId, t); - } - return mTrackers.get(trackerId); - } - - public void initializeTracker(Activity activity) { - if (getMeditationAssistant().sendUsageReports()) { - getTracker(activity, MeditationAssistant.TrackerName.APP_TRACKER); - } - } - - public void setupGoogleClient(final Activity activity) { - //if (googleClient != null) { - /// return; - //} - Log.d("MeditationAssistant", "Setting up Google Fit"); - - googleClient = new GoogleApiClient.Builder(activity) - .addApi(Fitness.HISTORY_API) - .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE)) - .addConnectionCallbacks( - new GoogleApiClient.ConnectionCallbacks() { - - @Override - public void onConnected(Bundle bundle) { - Log.d("MeditationAssistant", "!!! Connected to Google Fit"); - // Now you can make calls to the Fitness APIs. - // Put application specific code here. - } - - @Override - public void onConnectionSuspended(int i) { - // If your connection to the sensor gets lost at some point, - // you'll be able to determine the reason and react to it here. - if (i == GoogleApiClient.ConnectionCallbacks.CAUSE_NETWORK_LOST) { - Log.d("MeditationAssistant", "Connection lost. Cause: Network Lost."); - } else if (i == GoogleApiClient.ConnectionCallbacks.CAUSE_SERVICE_DISCONNECTED) { - Log.d("MeditationAssistant", "Connection lost. Reason: Service Disconnected"); - } - } - } - ) - .addOnConnectionFailedListener( - new GoogleApiClient.OnConnectionFailedListener() { - // Called whenever the API client fails to connect. - @Override - public void onConnectionFailed(ConnectionResult result) { - Log.d("MeditationAssistant", "Connection failed. Cause: " + result.toString()); - if (!result.hasResolution()) { - // Show the localized error dialog - GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), - activity, 0).show(); - return; - } - // The failure has a resolution. Resolve it. - // Called typically when the app is not yet authorized, and an - // authorization dialog is displayed to the user. - if (!googleAPIAuthInProgress) { - try { - Log.d("MeditationAssistant", "Attempting to resolve failed connection"); - googleAPIAuthInProgress = true; - result.startResolutionForResult(activity, - MeditationAssistant.REQUEST_FIT); - } catch (IntentSender.SendIntentException e) { - Log.d("MeditationAssistant", - "Exception while starting resolution activity", e); - } - } - } - } - ) - .build(); - } - - public void sendFitData() { - Calendar cal = Calendar.getInstance(); - Date now = new Date(); - cal.setTime(now); - long endTime = cal.getTimeInMillis(); - cal.add(Calendar.HOUR, -1); - long startTime = cal.getTimeInMillis(); - - Session session = new Session.Builder() - .setName("No name") - .setDescription("Duration: blah blah") - .setIdentifier("meditation" + "11231241") - .setActivity(FitnessActivities.MEDITATION) - .setStartTime(startTime, TimeUnit.MILLISECONDS) - .setEndTime(endTime, TimeUnit.MILLISECONDS) - .build(); - - SessionInsertRequest insertRequest = new SessionInsertRequest.Builder() - .setSession(session) - .build(); - - // Then, invoke the Sessions API to insert the session and await the result, -// which is possible here because of the AsyncTask. Always include a timeout when -// calling await() to avoid hanging that can occur from the service being shutdown -// because of low memory or other conditions. - Log.d("MeditationAssistant", "Inserting the session in the History API"); - com.google.android.gms.common.api.Status insertStatus = - Fitness.SessionsApi.insertSession(googleClient, insertRequest) - .await(1, TimeUnit.MINUTES); - -// Before querying the session, check to see if the insertion succeeded. - if (!insertStatus.isSuccess()) { - Log.d("MeditationAssistant", "There was a problem inserting the session: " + - insertStatus.getStatusMessage()); - return; - } - -// At this point, the session has been inserted and can be read. - Log.i("MeditationAssistant", "Session insert was successful!"); - } - - public void trackingStart(Activity activity) { - if (getMeditationAssistant().sendUsageReports()) { - GoogleAnalytics.getInstance(activity).reportActivityStart(activity); - } - } - - public void trackingStop(Activity activity) { - if (getMeditationAssistant().sendUsageReports()) { - GoogleAnalytics.getInstance(activity).reportActivityStop(activity); - } - } - - public void connectGoogleClient() { - if (googleClient != null) { - googleClient.connect(); - } - } - - public void disconnectGoogleClient() { - if (googleClient != null && googleClient.isConnected()) { - googleClient.disconnect(); - } - } - - public void onGoogleClientResult() { - // Make sure the app is not already connected or attempting to connect - if (!googleClient.isConnecting() && !googleClient.isConnected()) { - connectGoogleClient(); - - sendFitData(); - } - } - - public Intent getAppShareIntent() { - return new AppInviteInvitation.IntentBuilder(getMeditationAssistant().getString(R.string.appNameShort)) - .setMessage(getMeditationAssistant().getString(R.string.invitationBlurb)) - .build(); - } -} \ No newline at end of file diff --git a/MeditationAssistant/src/shared/java/sh/ftp/rocketninelabs/meditationassistant/WearListenerService.java b/MeditationAssistant/src/shared/java/sh/ftp/rocketninelabs/meditationassistant/WearListenerService.java deleted file mode 100644 index 9dda62c..0000000 --- a/MeditationAssistant/src/shared/java/sh/ftp/rocketninelabs/meditationassistant/WearListenerService.java +++ /dev/null @@ -1,55 +0,0 @@ -package sh.ftp.rocketninelabs.meditationassistant; - -/* -import android.util.Log; -import com.google.android.gms.common.ConnectionResult; -import com.google.android.gms.common.api.GoogleApiClient; -import com.google.android.gms.common.data.FreezableUtils; -import com.google.android.gms.wearable.DataEventBuffer; -import com.google.android.gms.wearable.Wearable; -import com.google.android.gms.wearable.WearableListenerService; - -import java.util.List; -import java.util.concurrent.TimeUnit; - -public class WearListenerService extends WearableListenerService { - - private static final String TAG = "MeditationAssistant"; - private static final String START_ACTIVITY_PATH = "/start-activity"; - private static final String DATA_ITEM_RECEIVED_PATH = "/data-item-received"; - - @Override - public void onDataChanged(DataEventBuffer dataEvents) { - if (Log.isLoggable(TAG, Log.DEBUG)) { - Log.d(TAG, "onDataChanged: " + dataEvents); - } - final List events = FreezableUtils - .freezeIterable(dataEvents); - - GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this) - .addApi(Wearable.API) - .build(); - - ConnectionResult connectionResult = - googleApiClient.blockingConnect(30, TimeUnit.SECONDS); - - if (!connectionResult.isSuccess()) { - Log.e(TAG, "Failed to connect to GoogleApiClient."); - } - - // Loop through the events and send a message - // to the node that created the data item. - /*for (DataEvent event : events) { - Uri uri = event.getDataItem().getUri(); - - // Get the node id from the host value of the URI - String nodeId = uri.getHost(); - // Set the data of the message to be the bytes of the URI - byte[] payload = uri.toString().getBytes(); - - // Send the RPC - Wearable.MessageApi.sendMessage(googleApiClient, nodeId, - DATA_ITEM_RECEIVED_PATH, payload); - } - } -}*/ diff --git a/MeditationAssistantWear/.gitignore b/MeditationAssistantWear/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/MeditationAssistantWear/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/MeditationAssistantWear/build.gradle b/MeditationAssistantWear/build.gradle deleted file mode 100644 index 33a6f11..0000000 --- a/MeditationAssistantWear/build.gradle +++ /dev/null @@ -1,35 +0,0 @@ -/*buildscript { - dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' - } -} - -apply plugin: 'com.android.application' - -repositories { - jcenter() - google() -} - -android { - compileSdkVersion 26 - buildToolsVersion '26.0.1' - - defaultConfig { - minSdkVersion 20 - targetSdkVersion 26 - - versionCode 1 - versionName "1.0" - } - buildTypes { - release { - minifyEnabled false /* Docs say to not compress wear APK *//* - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - compile 'com.google.android.gms:play-services-wearable:11.0.4' -}*/ diff --git a/MeditationAssistantWear/lint.xml b/MeditationAssistantWear/lint.xml deleted file mode 100644 index 560d0e5..0000000 --- a/MeditationAssistantWear/lint.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/MeditationAssistantWear/proguard-rules.pro b/MeditationAssistantWear/proguard-rules.pro deleted file mode 100644 index 2f4fb90..0000000 --- a/MeditationAssistantWear/proguard-rules.pro +++ /dev/null @@ -1,17 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /home/trevor/programming/android-sdk/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/MeditationAssistantWear/src/main/AndroidManifest.xml b/MeditationAssistantWear/src/main/AndroidManifest.xml deleted file mode 100644 index 4d47eff..0000000 --- a/MeditationAssistantWear/src/main/AndroidManifest.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/MeditationAssistantWear/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WearEditDurationActivity.java b/MeditationAssistantWear/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WearEditDurationActivity.java deleted file mode 100644 index 99ebd25..0000000 --- a/MeditationAssistantWear/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WearEditDurationActivity.java +++ /dev/null @@ -1,40 +0,0 @@ -package sh.ftp.rocketninelabs.meditationassistant; - -import android.app.Activity; -import android.os.Bundle; -import android.support.wearable.view.WatchViewStub; -import android.view.View; -import android.widget.TimePicker; - -public class WearEditDurationActivity extends Activity { - - private TimePicker editDuration = null; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - final WearMeditationAssistant wma = (WearMeditationAssistant) getApplication(); - - setContentView(R.layout.wear_editduration); - final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub); - stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() { - @Override - public void onLayoutInflated(WatchViewStub stub) { - editDuration = (TimePicker) stub.findViewById(R.id.editWearDuration); - editDuration.setIs24HourView(true); - - editDuration.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { - @Override - public void onTimeChanged(TimePicker timePicker, int i, int i1) { - wma.newDuration = String.valueOf(editDuration.getCurrentHour()) + ":" + String.valueOf(editDuration.getCurrentMinute()); - } - }); - } - }); - } - - void setDuration(View v) { - finish(); - } -} diff --git a/MeditationAssistantWear/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WearMainActivity.java b/MeditationAssistantWear/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WearMainActivity.java deleted file mode 100644 index 665095c..0000000 --- a/MeditationAssistantWear/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WearMainActivity.java +++ /dev/null @@ -1,82 +0,0 @@ -package sh.ftp.rocketninelabs.meditationassistant; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; -import android.support.wearable.view.WatchViewStub; -import android.util.Log; -import android.view.View; -import android.widget.TextView; - -import com.google.android.gms.common.ConnectionResult; -import com.google.android.gms.common.api.GoogleApiClient; -import com.google.android.gms.wearable.Wearable; - -public class WearMainActivity extends Activity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { - private TextView wearTimer; - private GoogleApiClient mGoogleApiClient; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.wear_main); - final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub); - stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() { - @Override - public void onLayoutInflated(WatchViewStub stub) { - wearTimer = (TextView) stub.findViewById(R.id.wearTimer); - - wearTimer.setText("0:15"); - wearTimer.setTextSize(33 * getResources().getDisplayMetrics().scaledDensity); - - wearTimer.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - Intent intent = new Intent(WearMainActivity.this, WearEditDurationActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); - startActivityForResult(intent, 1); - } - }); - } - }); - - mGoogleApiClient = new GoogleApiClient.Builder(this) - .addApi(Wearable.API) - .addConnectionCallbacks(this) - .addOnConnectionFailedListener(this) - .build(); - } - - @Override - protected void onStart() { - super.onStart(); - Log.d("MeditationAssistant", "WEAR - Connection status: " + String.valueOf(mGoogleApiClient.isConnected())); - } - - @Override - protected void onResume() { - super.onResume(); - - WearMeditationAssistant wma = (WearMeditationAssistant) getApplication(); - - if (wma.newDuration != "") { - wearTimer.setText(wma.newDuration); - wma.newDuration = ""; - } - } - - @Override - public void onConnected(Bundle bundle) { - Log.d("MeditationAssistant", "WEAR - Connected"); - } - - @Override - public void onConnectionSuspended(int i) { - Log.d("MeditationAssistant", "WEAR - Suspended"); - } - - @Override - public void onConnectionFailed(ConnectionResult connectionResult) { - Log.d("MeditationAssistant", "WEAR - Failed"); - } -} diff --git a/MeditationAssistantWear/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WearMeditationAssistant.java b/MeditationAssistantWear/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WearMeditationAssistant.java deleted file mode 100644 index fb4d381..0000000 --- a/MeditationAssistantWear/src/main/java/sh/ftp/rocketninelabs/meditationassistant/WearMeditationAssistant.java +++ /dev/null @@ -1,7 +0,0 @@ -package sh.ftp.rocketninelabs.meditationassistant; - -import android.app.Application; - -public class WearMeditationAssistant extends Application { - public String newDuration = ""; -} diff --git a/MeditationAssistantWear/src/main/res/layout/wear_editduration.xml b/MeditationAssistantWear/src/main/res/layout/wear_editduration.xml deleted file mode 100644 index 81515d5..0000000 --- a/MeditationAssistantWear/src/main/res/layout/wear_editduration.xml +++ /dev/null @@ -1,12 +0,0 @@ - - diff --git a/MeditationAssistantWear/src/main/res/layout/wear_editduration_rect.xml b/MeditationAssistantWear/src/main/res/layout/wear_editduration_rect.xml deleted file mode 100644 index 9d7fd00..0000000 --- a/MeditationAssistantWear/src/main/res/layout/wear_editduration_rect.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - diff --git a/MeditationAssistantWear/src/main/res/layout/wear_editduration_round.xml b/MeditationAssistantWear/src/main/res/layout/wear_editduration_round.xml deleted file mode 100644 index 3ddbf3f..0000000 --- a/MeditationAssistantWear/src/main/res/layout/wear_editduration_round.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - diff --git a/MeditationAssistantWear/src/main/res/layout/wear_main.xml b/MeditationAssistantWear/src/main/res/layout/wear_main.xml deleted file mode 100644 index 520ac08..0000000 --- a/MeditationAssistantWear/src/main/res/layout/wear_main.xml +++ /dev/null @@ -1,12 +0,0 @@ - - diff --git a/MeditationAssistantWear/src/main/res/layout/wear_main_rect.xml b/MeditationAssistantWear/src/main/res/layout/wear_main_rect.xml deleted file mode 100644 index 8b9abf4..0000000 --- a/MeditationAssistantWear/src/main/res/layout/wear_main_rect.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/MeditationAssistantWear/src/main/res/layout/wear_main_round.xml b/MeditationAssistantWear/src/main/res/layout/wear_main_round.xml deleted file mode 100644 index 3b82ced..0000000 --- a/MeditationAssistantWear/src/main/res/layout/wear_main_round.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/MeditationAssistantWear/src/main/res/mipmap-hdpi/ic_launcher.png b/MeditationAssistantWear/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 5e44dd93edd938fb1c7e5662208c8e38fe5258db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3898 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 IM6N<$f_(pIiU0rr diff --git a/MeditationAssistantWear/src/main/res/mipmap-mdpi/ic_launcher.png b/MeditationAssistantWear/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 4f7cf8c8a6b8a4f22476bf1725d9dd9a74ecec12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2885 zcmV-L3%c})P)v{t9#ehYjq<(3o^M7bp-8`scSq^KN>}<+e|89>ac(~cE9VoKaz@u58ndb^o zq$MB(Weo#p6Rk{50;VPCj$1sQj`5qHEzP*&S&2~}y{^e+M@cdd9(0!%0>0-3tm(~z zuOnGZ<z$>IeNO+Ea}Ef}u22 z#Gxj^>FNakwY?#;Z7dR(V7af+<=3}o_>Uv5)78h7kMQ4Z0u@F&h{dqyEMVFr zPnB&XA)vxxe?uMj{rAGmnIS33WxFEqUpnYI=L@VI^veVf2s@77ya)fto1isF3oHwi zBJ4PV-}GCsowAKx2x(~P;oHEl4`lP*(M8W7vjWAVMOCh01;+PKXHR3i+@+B=hTwQB zq6{w#jZkA{eLi>38}2^=Jb1v3OuS~F8#AyW7cf&yBKHZ~0XsgbOhl@3L{Cw6o%qPP zJof|q^0rJwV4z5)7xIXj~ z0`Bw`S5LN18NWzu`KO7mT8pfnfr!Nsu>_)`iqsdj;LKYLT1`dUu^{WS8bGYv?OMQY zPw}a#DYOC+j}snmB{ei?-Rq+J&SJcL#4V9R zR@WkDT#HqE9ad&8NIR+%<>!n!8fM!{vubjYmzaTGicLH5TlW!mwP6amsC5|1M#g~A zh(sE@ej%~N|3IwaF68uUqIRRqKFJuav$bK-WMpIV0~B^Wi???NMuiAFhDfGI4O?*h z5Mjr=sIxAq`~EfRlT6tX$VdZoCnH34rUP%^uZR1fF@F+I@KgKUcKA3=KOtufdbuT72P-?r&8gnI(E)zdtdo#s1cOhblvg8-E z9i(_*HzF1evrbe&l9xnD=!G8waZN;YQl-(H^0Wf zPriZ4_LsF$`9Mk%-RqLw{y4=qe;2`-n4C_DWxL!Xz|G^~8ou93VfQZxj=ss1Z|#l7 zS-hI$XEtEZUNGLkykY|qy+Op2UjJ6SN&HtHU%}A!}+$uHAxj({jAuzl`eX!W6QYqKB}oF~OT? zRl4kA(chm;CP%GQBA$v0R5FcSHxFmQtvCx;L`(kOL6rMGSoXwouvVy^lZ3}xk<;r) z-t%?BV{Z|(9Uyey$K?8>iavVJ*RHkdw5zMD&*by@w=BzAe%W1CMHM1hfe-@S+l}{! z9e8_Q7}llH3K36Dyag#_@%Fqxaqo`OX|Dj=L0AqVo&>*$sHh%m1rGUsvEA

l4zF z&s>&(km%lSbbl{|{^-#xCzTq5DdsSqxqOw^3jNnpk>$*#^3hr!IJ$0ruRPM)q66RG zsg&v;HTMhgffp|MOrj2m(dQIGjGC&o)~$hG+#8+DJ-Qx^=?Mb=$;-MpmcWDogdrc= zP$9aIL!_r&8hx!%VfgydFV1fnK3Z(Qe?bt2;kF>~&x#SwH-3@$%FmO!_ZwJs*JFx# zOyHM&x^_iL1wN)Qh?Tj4iVgo+ssZ`}=_sw=D;B-&05`q#9`@W{zQc(J7twdV@BNyq zY96yJ>wkvRs#eIFnIu--&} zS;F=f{GHC%Tt zHf|xGYxIiYT^$=1X6L`yM*9N`A_AG8zlHm7l!UI|c6e1Pm3k?eOxBGl6s<5yfeJB$ z=Lt`>qk1~g=gy$}&tVFKn4nmyt}#Ti0y%9u^6G1_X4Ye0I}cG+8yVIrnfG!jr{qP? z^Lp~R+}#};7dKz_bb7(d$7oxB;}D65(&_a7CX&gxnTX!Ud+!AMCeQQox$NMU&WDz4 zkFd7WwtoJF?+4n}-$>ol2Lb5Vc+2zI?BMr2&kH76pvLu?5condJ2<$t^Pwf%=Wah- z!a9HS_XBlLAEbM80|3`O*Zkee%BpWB5{U}&VZC1(q4|71m(S<&TTgCU`o!$#4smkR z(o44#7yqGqbHngToZ7T(>-oQ(`%XTeJFS%ZaDW3!DF*ucdh)s4mXn*7K5^Z%EzGE` z9rZ2FWyi>snDJ!eXDcf!zmrN=G&qi9Tb6~H(pnIiS1E<>`(7@aZ3gpiU0+_>T>t#r zbUw6X%wIA(i9aDFoc`*q)co}I+C(D#t#n1j-HCYoCfjkaEE^#xn~V?wV+>&!5(WWY z(K}Z3yjN_;exh^ZlI(b?UvZ3FjoK$0SJ{s9Kq{45Z9B0=wrykEHkM^EUY`tsR$)jO zhQ<&4!^L9pbqw3xhnKeu-8b)7M>+m4H&33x#Uub~pK7|zvaHpySo}8IwwFjt-e5@! zX-TA%$Wl==CBQ~&wALuC&`P7VY7fKkP~iIq5Mpol=7wS5_1jwM+_;!2TY<5N%y{yT zGlh^JkwRQ=+4daEvNBT2Ss>;K!5jlxK&LV0&syuVN~zOIsScn^O1r&#^YY;rr`JB) j%*@(rXkJq{ZajYn$1C>1rG#Iw00000NkvXXu0mjfnt+$v diff --git a/MeditationAssistantWear/src/main/res/mipmap-xhdpi/ic_launcher.png b/MeditationAssistantWear/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 511326e287bd4f96b1bec98e2f26df67ab7fc2da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6135 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 diff --git a/MeditationAssistantWear/src/main/res/mipmap-xxhdpi/ic_launcher.png b/MeditationAssistantWear/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 95ee2d13d0862fafdf97874db64b5a3e4def25a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8385 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 diff --git a/MeditationAssistantWear/src/main/res/values/strings.xml b/MeditationAssistantWear/src/main/res/values/strings.xml deleted file mode 100644 index 5254c9d..0000000 --- a/MeditationAssistantWear/src/main/res/values/strings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - Meditation Assistant - - Set - diff --git a/MeditationAssistantWear/src/main/res/values/styles.xml b/MeditationAssistantWear/src/main/res/values/styles.xml deleted file mode 100644 index dbf4fc5..0000000 --- a/MeditationAssistantWear/src/main/res/values/styles.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 8c21ca0..cbd90ad 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1 @@ include ':MeditationAssistant' -// TODO: Add when wear app is ready -// , ':MeditationAssistantWear'