From b76cf679c8b27d8fc88cdcd5dfa2bd4a78638793 Mon Sep 17 00:00:00 2001
From: James Fenn <18jafenn90@gmail.com>
Date: Mon, 12 Jun 2017 18:53:20 -0400
Subject: [PATCH] fixed #5 - added an android wear module
---
.../metronome/activities/MainActivity.java | 20 +-
settings.gradle | 2 +-
wear/.gitignore | 1 +
wear/build.gradle | 28 +++
wear/proguard-rules.pro | 25 +++
wear/src/main/AndroidManifest.xml | 33 +++
.../james/metronome/wear/MainActivity.java | 173 ++++++++++++++++
.../metronome/wear/MetronomeService.java | 195 ++++++++++++++++++
.../res/drawable-hdpi/ic_notification.png | Bin 0 -> 568 bytes
.../res/drawable-mdpi/ic_notification.png | Bin 0 -> 364 bytes
.../res/drawable-xhdpi/ic_notification.png | Bin 0 -> 806 bytes
.../res/drawable-xxhdpi/ic_notification.png | Bin 0 -> 1254 bytes
wear/src/main/res/drawable/ic_pause.xml | 9 +
wear/src/main/res/drawable/ic_play.xml | 9 +
wear/src/main/res/drawable/ic_sound.xml | 9 +
wear/src/main/res/drawable/ic_vibration.xml | 9 +
wear/src/main/res/layout/activity_main.xml | 49 +++++
wear/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3098 bytes
wear/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1842 bytes
.../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3924 bytes
.../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7159 bytes
.../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 8526 bytes
wear/src/main/res/raw/click.mp3 | Bin 0 -> 3576 bytes
wear/src/main/res/values/strings.xml | 8 +
24 files changed, 559 insertions(+), 11 deletions(-)
create mode 100644 wear/.gitignore
create mode 100644 wear/build.gradle
create mode 100644 wear/proguard-rules.pro
create mode 100644 wear/src/main/AndroidManifest.xml
create mode 100644 wear/src/main/java/james/metronome/wear/MainActivity.java
create mode 100644 wear/src/main/java/james/metronome/wear/MetronomeService.java
create mode 100644 wear/src/main/res/drawable-hdpi/ic_notification.png
create mode 100644 wear/src/main/res/drawable-mdpi/ic_notification.png
create mode 100644 wear/src/main/res/drawable-xhdpi/ic_notification.png
create mode 100644 wear/src/main/res/drawable-xxhdpi/ic_notification.png
create mode 100644 wear/src/main/res/drawable/ic_pause.xml
create mode 100644 wear/src/main/res/drawable/ic_play.xml
create mode 100644 wear/src/main/res/drawable/ic_sound.xml
create mode 100644 wear/src/main/res/drawable/ic_vibration.xml
create mode 100644 wear/src/main/res/layout/activity_main.xml
create mode 100644 wear/src/main/res/mipmap-hdpi/ic_launcher.png
create mode 100644 wear/src/main/res/mipmap-mdpi/ic_launcher.png
create mode 100644 wear/src/main/res/mipmap-xhdpi/ic_launcher.png
create mode 100644 wear/src/main/res/mipmap-xxhdpi/ic_launcher.png
create mode 100644 wear/src/main/res/mipmap-xxxhdpi/ic_launcher.png
create mode 100644 wear/src/main/res/raw/click.mp3
create mode 100644 wear/src/main/res/values/strings.xml
diff --git a/app/src/main/java/james/metronome/activities/MainActivity.java b/app/src/main/java/james/metronome/activities/MainActivity.java
index 855d72c..069be4b 100644
--- a/app/src/main/java/james/metronome/activities/MainActivity.java
+++ b/app/src/main/java/james/metronome/activities/MainActivity.java
@@ -77,7 +77,7 @@ public class MainActivity extends AestheticActivity implements TicksView.OnTickC
playView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- if (isBound && service != null) {
+ if (isBound()) {
if (service.isPlaying())
service.pause();
else service.play();
@@ -207,15 +207,6 @@ public class MainActivity extends AestheticActivity implements TicksView.OnTickC
textColorPrimarySubscription.dispose();
}
- @Override
- protected void onStart() {
- Intent intent = new Intent(this, MetronomeService.class);
- startService(intent);
- bindService(intent, this, Context.BIND_AUTO_CREATE);
-
- super.onStart();
- }
-
@Override
protected void onResume() {
super.onResume();
@@ -228,6 +219,15 @@ public class MainActivity extends AestheticActivity implements TicksView.OnTickC
unsubscribe();
}
+ @Override
+ protected void onStart() {
+ Intent intent = new Intent(this, MetronomeService.class);
+ startService(intent);
+ bindService(intent, this, Context.BIND_AUTO_CREATE);
+
+ super.onStart();
+ }
+
@Override
protected void onStop() {
if (isBound) {
diff --git a/settings.gradle b/settings.gradle
index e7b4def..9ccfb61 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':app'
+include ':app', ':wear'
diff --git a/wear/.gitignore b/wear/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/wear/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/wear/build.gradle b/wear/build.gradle
new file mode 100644
index 0000000..02a6b13
--- /dev/null
+++ b/wear/build.gradle
@@ -0,0 +1,28 @@
+apply plugin: 'com.android.application'
+
+
+android {
+ compileSdkVersion 26
+ buildToolsVersion "26.0.0"
+
+ defaultConfig {
+ applicationId "james.metronome.wear"
+ minSdkVersion 21
+ targetSdkVersion 26
+ versionCode 1
+ versionName "1.0"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+}
+
+dependencies {
+ compile fileTree(dir: 'libs', include: ['*.jar'])
+ compile 'com.google.android.support:wearable:2.0.1'
+ compile 'com.google.android.gms:play-services-wearable:10.2.1'
+ provided 'com.google.android.wearable:wearable:1.0.0'
+}
diff --git a/wear/proguard-rules.pro b/wear/proguard-rules.pro
new file mode 100644
index 0000000..be289b0
--- /dev/null
+++ b/wear/proguard-rules.pro
@@ -0,0 +1,25 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in /home/james/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 *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/wear/src/main/AndroidManifest.xml b/wear/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..326e59a
--- /dev/null
+++ b/wear/src/main/AndroidManifest.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wear/src/main/java/james/metronome/wear/MainActivity.java b/wear/src/main/java/james/metronome/wear/MainActivity.java
new file mode 100644
index 0000000..c41ee72
--- /dev/null
+++ b/wear/src/main/java/james/metronome/wear/MainActivity.java
@@ -0,0 +1,173 @@
+package james.metronome.wear;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.support.wearable.activity.WearableActivity;
+import android.support.wearable.view.BoxInsetLayout;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.SeekBar;
+import android.widget.TextView;
+
+import java.util.Locale;
+
+public class MainActivity extends WearableActivity implements ServiceConnection, MetronomeService.TickListener {
+
+ private BoxInsetLayout container;
+ private ImageView vibrationView;
+ private ImageView playView;
+ private TextView bpmView;
+ private SeekBar seekBar;
+
+ private MetronomeService service;
+ private boolean isBound;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ setAmbientEnabled();
+
+ container = findViewById(R.id.container);
+ vibrationView = findViewById(R.id.vibration);
+ playView = findViewById(R.id.play);
+ bpmView = findViewById(R.id.bpm);
+ seekBar = findViewById(R.id.seekBar);
+
+ if (isBound()) {
+ vibrationView.setImageResource(service.isVibration() ? R.drawable.ic_vibration : R.drawable.ic_sound);
+ playView.setImageResource(service.isPlaying() ? R.drawable.ic_pause : R.drawable.ic_play);
+ bpmView.setText(String.format(Locale.getDefault(), getString(R.string.bpm), String.valueOf(service.getBpm())));
+ seekBar.setProgress(service.getBpm());
+ }
+
+ vibrationView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ service.setVibration(!service.isVibration());
+ vibrationView.setImageResource(service.isVibration() ? R.drawable.ic_vibration : R.drawable.ic_sound);
+ }
+ });
+
+ playView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if (isBound()) {
+ if (service.isPlaying())
+ service.pause();
+ else service.play();
+ }
+ }
+ });
+
+ seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
+ setBpm(i);
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {
+
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {
+
+ }
+ });
+ }
+
+ private void setBpm(int bpm) {
+ if (isBound()) {
+ service.setBpm(bpm);
+ bpmView.setText(String.format(Locale.getDefault(), getString(R.string.bpm), String.valueOf(bpm)));
+ }
+ }
+
+ private boolean isBound() {
+ return isBound && service != null;
+ }
+
+ @Override
+ public void onEnterAmbient(Bundle ambientDetails) {
+ super.onEnterAmbient(ambientDetails);
+ updateDisplay();
+ }
+
+ @Override
+ public void onUpdateAmbient() {
+ super.onUpdateAmbient();
+ updateDisplay();
+ }
+
+ @Override
+ public void onExitAmbient() {
+ updateDisplay();
+ super.onExitAmbient();
+ }
+
+ private void updateDisplay() {
+ if (isAmbient())
+ container.setBackgroundColor(Color.BLACK);
+ else container.setBackground(null);
+ }
+
+ @Override
+ protected void onStart() {
+ Intent intent = new Intent(this, MetronomeService.class);
+ startService(intent);
+ bindService(intent, this, Context.BIND_AUTO_CREATE);
+
+ super.onStart();
+ }
+
+ @Override
+ protected void onStop() {
+ if (isBound) {
+ unbindService(this);
+ isBound = false;
+ }
+ super.onStop();
+ }
+
+ @Override
+ public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
+ MetronomeService.LocalBinder binder = (MetronomeService.LocalBinder) iBinder;
+ service = binder.getService();
+ service.setTickListener(this);
+ isBound = true;
+
+ if (vibrationView != null)
+ vibrationView.setImageResource(service.isVibration() ? R.drawable.ic_vibration : R.drawable.ic_sound);
+
+ if (playView != null)
+ playView.setImageResource(service.isPlaying() ? R.drawable.ic_pause : R.drawable.ic_play);
+
+ if (bpmView != null)
+ bpmView.setText(String.format(Locale.getDefault(), getString(R.string.bpm), String.valueOf(service.getBpm())));
+
+ if (seekBar != null)
+ seekBar.setProgress(service.getBpm());
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName componentName) {
+ isBound = false;
+ }
+
+ @Override
+ public void onStartTicks() {
+ playView.setImageResource(R.drawable.ic_pause);
+ }
+
+ @Override
+ public void onStopTicks() {
+ playView.setImageResource(R.drawable.ic_play);
+ }
+}
diff --git a/wear/src/main/java/james/metronome/wear/MetronomeService.java b/wear/src/main/java/james/metronome/wear/MetronomeService.java
new file mode 100644
index 0000000..2015ddb
--- /dev/null
+++ b/wear/src/main/java/james/metronome/wear/MetronomeService.java
@@ -0,0 +1,195 @@
+package james.metronome.wear;
+
+import android.app.PendingIntent;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.media.AudioAttributes;
+import android.media.AudioManager;
+import android.media.SoundPool;
+import android.os.Binder;
+import android.os.Build;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.VibrationEffect;
+import android.os.Vibrator;
+import android.preference.PreferenceManager;
+import android.support.annotation.Nullable;
+import android.support.v4.app.NotificationCompat;
+
+public class MetronomeService extends Service implements Runnable {
+
+ public static final String ACTION_PAUSE = "james.metronome.ACTION_PAUSE";
+
+ public static final String PREF_VIBRATION = "vibration";
+ public static final String PREF_INTERVAL = "interval";
+
+ private final IBinder binder = new LocalBinder();
+
+ private SharedPreferences prefs;
+ private int bpm;
+ private long interval;
+
+ private SoundPool soundPool;
+ private Handler handler;
+ private int soundId = -1;
+ private boolean isPlaying;
+ private boolean isVibration;
+
+ private Vibrator vibrator;
+
+ private TickListener listener;
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ prefs = PreferenceManager.getDefaultSharedPreferences(this);
+
+ vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ soundPool = new SoundPool.Builder()
+ .setMaxStreams(1)
+ .setAudioAttributes(new AudioAttributes.Builder()
+ .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
+ .build())
+ .build();
+ } else soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
+
+ isVibration = prefs.getBoolean(PREF_VIBRATION, true);
+ if (!isVibration)
+ soundId = soundPool.load(this, R.raw.click, 1);
+
+ interval = prefs.getLong(PREF_INTERVAL, 500);
+ bpm = toBpm(interval);
+
+ handler = new Handler();
+ }
+
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ if (intent != null && intent.getAction() != null) {
+ switch (intent.getAction()) {
+ case ACTION_PAUSE:
+ pause();
+ }
+ }
+ return START_STICKY;
+ }
+
+ private static int toBpm(long interval) {
+ return (int) (60000 / interval);
+ }
+
+ private static long toInterval(int bpm) {
+ return (long) 60000 / bpm;
+ }
+
+ public void play() {
+ handler.post(this);
+ isPlaying = true;
+
+ Intent intent = new Intent(this, MetronomeService.class);
+ intent.setAction(ACTION_PAUSE);
+
+ startForeground(530,
+ new NotificationCompat.Builder(this)
+ .setContentTitle(getString(R.string.notification_title))
+ .setContentText(getString(R.string.notification_desc))
+ .setSmallIcon(R.drawable.ic_notification)
+ .setContentIntent(PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_ONE_SHOT))
+ .build()
+ );
+
+ if (listener != null)
+ listener.onStartTicks();
+ }
+
+ public void pause() {
+ handler.removeCallbacks(this);
+ stopForeground(true);
+ isPlaying = false;
+
+ if (listener != null)
+ listener.onStopTicks();
+ }
+
+ public void setBpm(int bpm) {
+ this.bpm = bpm;
+ interval = toInterval(bpm);
+ prefs.edit().putLong(PREF_INTERVAL, interval).apply();
+ }
+
+ public void setVibration(boolean vibration) {
+ isVibration = vibration;
+ if (!isVibration)
+ soundId = soundPool.load(this, R.raw.click, 1);
+ else soundId = -1;
+
+ prefs.edit().putBoolean(PREF_VIBRATION, isVibration).apply();
+ }
+
+ public boolean isPlaying() {
+ return isPlaying;
+ }
+
+ public long getInterval() {
+ return interval;
+ }
+
+ public int getBpm() {
+ return bpm;
+ }
+
+ public boolean isVibration() {
+ return isVibration;
+ }
+
+ public void setTickListener(TickListener listener) {
+ this.listener = listener;
+ }
+
+ @Nullable
+ @Override
+ public IBinder onBind(Intent intent) {
+ return binder;
+ }
+
+ @Override
+ public boolean onUnbind(Intent intent) {
+ listener = null;
+ return super.onUnbind(intent);
+ }
+
+ @Override
+ public void onDestroy() {
+ handler.removeCallbacks(this);
+ super.onDestroy();
+ }
+
+ @Override
+ public void run() {
+ if (isPlaying) {
+ if (soundId != -1)
+ soundPool.play(soundId, 1.0f, 1.0f, 0, 0, 1.0f);
+ else if (Build.VERSION.SDK_INT >= 26)
+ vibrator.vibrate(VibrationEffect.createOneShot(50, VibrationEffect.DEFAULT_AMPLITUDE));
+ else vibrator.vibrate(50);
+
+ handler.postDelayed(this, interval);
+ }
+ }
+
+ public class LocalBinder extends Binder {
+ public MetronomeService getService() {
+ return MetronomeService.this;
+ }
+ }
+
+ public interface TickListener {
+ void onStartTicks();
+
+ void onStopTicks();
+ }
+}
diff --git a/wear/src/main/res/drawable-hdpi/ic_notification.png b/wear/src/main/res/drawable-hdpi/ic_notification.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a77d4c02144444e068075b823409fc127dec16a
GIT binary patch
literal 568
zcmV-80>}M{P)0qaJLk@?_s+fd%y>Ni!|<>yYZBapG{}Ig^)<4*mS)VP
zv`i(xcpUVAF3|CfF5VksY(P>d0#YFF7qNLD35F$w7QnVf{03N(6gmLY8u3%$NJ=Ij
zJc53WoL=w@3M7PTSfoCU94~W15<(;3Rx>Bet)NpvXc25`#H&?y23GjF7!;WlIs{RT
z_zJ$RDo_ocz`2onQj>7PK8+mz=f()?`ReXKp$VZ7C--W;vI{WB&vl?QX9dl?3AMB5
zyr6AQ=!CnwdcyTND`@6)f;UhOPSqSHcjzab9h!N2U{x&y*59+K6&7@`LpN|$)$;t?
z;T%B|LPM&J(9Bs=T>)sMSdeW?#DvhiX3G&^*Vqi!RSUxF>M6xd2L!&y7%2
zKxoE|(3XHu!i`W;KA-=<}A(bFT(>fYvZS3zyHp>S2k&C&h|g^hu8;}z_n>dy)^*<0000
zEPaO@Y0f*p3sai?bBl4{(`07%2RC;Kg8!@}Niw*_=Lo8o@d;SOg{FUol21SlJDUDB
z>OKL7Sl0BH(Dw;=MOM?#;Vtdu)A%sVw9v++^RhWm#))C(9y55tk!wI*EzvM@j1{cw
zb~Wm7UoFuvvw^)oS+LAJVih;8mrq$NSiPcG@+ybwj7vZXr-qqptl=H!D7pk}p`q!|
z;SRf~qKQqHfUbnh%Vl{nE5BW$f-e;0FXg}`KrPR;9&9h4z#v6HX!SMABS>2dHUSln
zfT~TvzDGdECg9m4;Ke2&^au!T0(uxC!Z%{^Tg5UH$(c?t?)m|-5+Q)u(bHZ40000<
KMNUMnLSTYJ)tvzV
literal 0
HcmV?d00001
diff --git a/wear/src/main/res/drawable-xhdpi/ic_notification.png b/wear/src/main/res/drawable-xhdpi/ic_notification.png
new file mode 100644
index 0000000000000000000000000000000000000000..4aa838340e3c968258a954ee4b9f010dee54bc69
GIT binary patch
literal 806
zcmV+>1KIqEP)Lqe{a-9V?%0p;1DOIt>Fdp8t~0XrYnMNv>U^1NVTtmO5AY
z1onkCFoPAJve1}MjYi|#G%zlNfhtyBZK1K38Vh+`!`DfM)neZUjQOM&P
z#^P_YZv!2iMQu9pHa2!8k1IGRbc4wuI`AD!ovB=2KLVq9Zlw2F+33J09cZ1WR(Z$~
zD8WiMSn3Q1&-paRXw1MRmO2&GIRqwx$6$R<%)r#S&+X+T($?F#T(-VHRk|&cHueJCz@E$z0$Un}zyqHKF
zHLlB0`r23Hr?A3vS>{jRmswrB`?8+um%X)7<^t;|@L^yn#T&pnum-FKtGK*QkV=x^
zdAYt8Tx9+Z4x?$_@k*o26_#1#!@$lcTx|DY;8H*X^*#(d4QSw*>&B1e%o!@Af8@C|
zP!@%c@?7n}1F_qsfd&Nw%`OdeD;Rj?s`2rR|96Fq0v86#BfVJS!a%K}fjuq^G%6Zs
zc46R!qJft#3?vl|BwZM2QZ#Vcg@JsU_yE51iTvSaHpE%m4rY
literal 0
HcmV?d00001
diff --git a/wear/src/main/res/drawable-xxhdpi/ic_notification.png b/wear/src/main/res/drawable-xxhdpi/ic_notification.png
new file mode 100644
index 0000000000000000000000000000000000000000..7e46e5bdc1fe6f988b406caebf92836f39d266af
GIT binary patch
literal 1254
zcmVXf=vvBsNq4m$qS(u+S(L)Ay9*f
zjSsDeM#E##LJSBo+ybeBqFjuDq!hIrgce(B$Gy`3#6M$wAnBUf3(iXZq-UKu>)-Qb
z&YnGc@6%DEQjv;OSdJhF(wyFK>TtU1lyJJ`bla)lX~5}kr@`Rg7({LW$K1we5~$IE
znrZg}poTy%8m+_0r<3V)`q-)2X_r%z(+)XFKor$O$=8iIrU{>EMvYFYn{OG=n{*;`
zN3iZ3s=L}Upk|!JpH8Dkux`53b<}RP45$MqaZsUlJ8GY^3Mb3y4o;#@p?(!=%iV6g
zML^F{Ke0@qelgWwXc5pmbOO^A>OV&HH(CVLipKw;HK4
zoN?$pC2ACXDou9OuCeo}e^{*Ovxt0(ECE_i4WFv$lS@A9Edlxjjs8v9XBwXPC3af^
z^fMa0Ptjwn(^MFyndCDG)B;$I~|a(
zpYKx~xyoKVP+W`LTFR~Sd5Ytj_ND??{{+0cow9NDTp>W8`3UG78uyj5&q4xGjoix6
z==r>FaI&d`eoxu!OZdo^n2A`1{viZNw$F_72~Z(5Zi%ALEZRr(0dg;s_c8jr&?i7^
zsA1C-eRjh`rdjilJA&Me(5{cSeFD@H!6M;QTI>G;xn~JTJ-%)Uy#B~1KxfdX1BxCy
z3C1(X?WK92$;cf-?vyWZvS?*ttCGhAryh8Gjog!TV`!mcwNlpvpJ_wHW}^9v2)Lk8~LT)EOfggE#k?Oy{xRtapA{EK_2R!$n!E}I&
Qd;kCd07*qoM6N<$g6)M^c>n+a
literal 0
HcmV?d00001
diff --git a/wear/src/main/res/drawable/ic_pause.xml b/wear/src/main/res/drawable/ic_pause.xml
new file mode 100644
index 0000000..53b5e6a
--- /dev/null
+++ b/wear/src/main/res/drawable/ic_pause.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/wear/src/main/res/drawable/ic_play.xml b/wear/src/main/res/drawable/ic_play.xml
new file mode 100644
index 0000000..dbe3ec6
--- /dev/null
+++ b/wear/src/main/res/drawable/ic_play.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/wear/src/main/res/drawable/ic_sound.xml b/wear/src/main/res/drawable/ic_sound.xml
new file mode 100644
index 0000000..2ee5bce
--- /dev/null
+++ b/wear/src/main/res/drawable/ic_sound.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/wear/src/main/res/drawable/ic_vibration.xml b/wear/src/main/res/drawable/ic_vibration.xml
new file mode 100644
index 0000000..5d1a010
--- /dev/null
+++ b/wear/src/main/res/drawable/ic_vibration.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/wear/src/main/res/layout/activity_main.xml b/wear/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..3afc8e3
--- /dev/null
+++ b/wear/src/main/res/layout/activity_main.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wear/src/main/res/mipmap-hdpi/ic_launcher.png b/wear/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..e715f8b7afacd4b834b6f921083d2e66253ecc30
GIT binary patch
literal 3098
zcmV+#4CV8QP)t{;$9HM
z07#jKJ1`z)o^|WH+#-5(8@~brWrYx%m~11cY^^C4^5C;o8y?uEyg?n;?k`5$^K)>nzW-3@WwFv(DPu
z2-4|LsYY7+b0Z$dg@uLO@(KHV#@-}EDD3w~08B!49P{RaHANr*rnb~dX^>Rwa`l(;
zebytXX}g-%$XTWz34uCU9zbDP_^DH;TIS~FeslZw?ITlDQ%}I8y{Z^NUZQ?89T<$c
z!-d+&zyR`B13Pr+P+)Ly@C{j(f5{j-5DJBkkB^UUg9&?834#~^MPaNrS5iO=if-=~
zwtW}TW~c;Z1!n-H;o;%OIp^QZzDo$B08X9UhY}oK~BI0XJ
z2^TM3oPi0&s0cv~vitxM1&e6|5#gqW98E>RpFdw-E=~{t2odb4ukXEl`SR9KDD(r)
zc^?2b5!Gv(#bUAR&p-eC2uuXGl^{q8$?_H?lLgh7h`<=bMz1%gLAu$peDl!g_2#$B
zjt9U~QzPwt<&{5F*VZ->QPJgl{`~nrO;1n9U}7h$2tgjz{m+AT;+tz~u(_rtTY*c9
zi@3bF2mt8x`w{W`%fE>TN-&6Ruf7UjTU%2hVzgyFJw4sk)zzyD3k!w`a@t5|4RmyU
zg(0I{Kznk{ij;Nk-w$6~TY+Kod(_s}e&_7jvroc=+>R5ptE(#@3DK!7G__+H+{K6p
z-0eooV~^>|g%G%T^XApDv9Xc)`T4urcM}n-udjdM*=L_M=!H5@5dUsh*A}t5DrY9-
z2syC=<}bHy-MRwc>X|cVE=*2NzNf8cjQRb3{{|S8-Dx8&xrp-Y
zj}9iuDcYI{g))`VXw(JZHh=_xWMgBaS6eTHz|73dm$Hko-QC?jrC5rioJJMefy#`t
zFg2A|y>;u>UyP29UK|@68y_4T{8oK^{nOg|WHNbkbaeD?@yY1nC_&ws6i3-p3Ilaz
z^^7qrUb%wB8#fSWZq5~R&O0KJ$cacK@&ysq5|Pdyo1LBg`&)0lb;rmn0B3Cw>kI_+
zDUKqVp{p-gY|OATA@JGJqoA}t%OQkt3n4bFCue14CGqB)Z~ieBi><&QK~8FrRO5E{
zQzBug@!0%4W(tHGlyMp_Wt>K!cr3;M-2C`sOmEwU_FcPj{R?4vd3oi74?Z|_`0(L#
z01Ol4qz1`uHSJIqB!n(d&6O7su25Sb>y;`9wYL`>i-?d)rNqq4%%!78kN)bp=brmB
zfCT_4Bl85D(;x;wR)~5_w#pE|7(=7itJ9!TZb75Rlm9{@fHBnf_aoTRp&R4w-Mh2X
z)6?f-vDobR`1rq$969pI1Cyj2IYI~;85w!~z<~oN0VJU=rx<`Q04$?$TDB-0BdAqT)D(wC
z2qP%v=aefCb$27wqxULqU%5h`yz#~afNN06SUWbq-2|zlAZK{
zZO7idnPSTQJ9hFUZ%HKDpxT-Q)^3AXf@1`^i299?Q?^Ah*FYO|0tj?;p#GtUbhc~$
z`gL4AeHuYo?uCUDj6!f?7h?bv7f>?9F!X0M5!klv*#jo)|Gxh@bqXRLhljB((C4Tv
z!x4gZb#(o;u)ErcNiK=%95
zobj5oP_^e>NQ^aMob5{uP7ow{%B488C`Sy6JB>ty*2f>u)1Hf`Ph)vzMkR-H
zaK;?F^ChT8l!lSeBS#v6vDFpzX;gb$t@?I6gah5)$X?!x$vSz=?XF
zXl?brckPY2684I2LWgr8iK1%f01MI>{%>b
zzn0S;i7{}-z=a4u*wSMA)`wk!czYlafe@imgseyQTns23gJtU*yQc&0y5rDdA6oE)YS3Wy2fw_O4
zgOpubP;HOa@yVoLYjz^VqZz2R`c#d*OLhbb5}=oZiOU5s_^Yi|!&>I~}y
z@t<{f_k%HO8fa#xGr1$?^#$agc6M6+p2IRhEmc+KmY0R?-_|VlyX-XFHLS^D6`5NsPeZuNtgdqR*D
zR*jx<*j;|5#x+>iq^3Sh%WK6*OVx^^C&)>mjlhDZ9h9W(2QQ`!wON7~0L9CB?>#34
zu;oy?Wm)^di{Z(eRXKL#;fGr#&YR0Obr?pprbHWw^XAtF2Ti9wOcS)Jx;nxb3zl!{
z0F2lzqj_*3*r^(7Q!<++NNRGsqpX5o83U+De8vE&$>)or(ggWkE^|AW8B{nvt5PF-
zQ-54DMp`w{l4Sf8)d=oYYzDx?x%SqFp}|ZM)Eo%76vphOIIM;tc0q*9+)eG=rW)T^
zT;xe2avM#t+7-;<5G0{y{w0{uAhR}zrj}ywr%MH?c0FdN!;lQpM3`DydLJgUie@y3
z03?4s`j6KRM*CdtRaK9=Ik$g>kMe%74_X_K2uPAhO)teqemg#X2
z0oVwj3YFgOokI%1B7ixlUji8pH_Q^m0Js4J0C=&sp6_Q6RD$9Fmaum7)ex)*m;Jvm
ovgF*)1d-<7G}K$Krq=TR0Jn!XtSPB{#Q*>R07*qoM6N<$g4eXY8UO$Q
literal 0
HcmV?d00001
diff --git a/wear/src/main/res/mipmap-mdpi/ic_launcher.png b/wear/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..6c1ab32e6fef98b538ed43382ae1ea9993be917a
GIT binary patch
literal 1842
zcmV-22hI42P)rOu
zF|N2L=bY)o=A7*1T;`n3OaG@cvomME@1ObRo0(nUe;#Co-XQ{@F8gT!6acK!FRvu%
z#h#u%NtVB6su}@X#=;7oVe(8wabeN#|KQ-jz>lbaL`4L)wY5b)Y-yR$WI0?4)F5C%
zgaM#F-@@66iH55W9%Q{@a69Zpaj?00qXFJSXtEsH-`KdZ5)73PAW=d(%|0laJ`PdE
zSSKo&36&5KBu(3Flw5!=3?E~gE5T6_0Usglb`5T4GPpH0W&08dXa^vaRFfrajw9ol
zz=l|?N&pf7EVG|g6l4{}9spyh&gSM|K@}Mt9o;lDGxN*z^z^s={rx`M{_bEe$FWo@
z$y7B^TF**W8Z&Z5HL4ouYi&&y)JV~2^gBYx8ud2i-$L)w^~|0CYsh@
z09gXLE)+s@B!czfFvb=Z079_4p#ke75v&V^ijgpe7k2JM^2CXH##pfQT|S>r4Tr-&
z3=a=KvjXBt14ROc$-1wX3$kw-qKKB>UZa0Dn_ZZkoE+6OO((Ga`0?W>V6z%|B5*XB
zOff|XFvhIGmp%h!*Dd0`U_c>e+z{|@9RzH=H~vi1>+Jt0Em+Az>K*EUl5D)^BBKz!zlax{$r6yYNbA)F$PjogWc!O0fZE_
zU0hsLhKGkwb$54v17H>_JcI+^~=W@AcnM~&K%*@Q+
zgM)(?&YU@O3&6Y;crOG{t*XUa=n{~6h8cis6B7V{-Hnaq1Q`PnMa1{*Gl)LCbLZlo
zy?eg`kOeRYU;+7Kr)9V$AovJzcHpwga_|g5R0-9#Jg|_@A8N2wb$K}iL&Ce&17p$ddOT*PFv>_I&5(r5Y)-l**-NxkV
zwr)kRu@L~Un9JeurAr71LaH+w4Z=mZB5*8~N-{+W=%Bf?UQ)*ZG<9_u<&mKwD6_MW
z7z^}tbR^3=TZbD0q*_%wZ6_tCFVrNHSk>AJ0MIlIj|K}fG!b$q6Cfx*L8~|wkEB_rG#njz9@KFkpQcyw+
zV%4(DEo5G`3;!HG{C&0G|2Aj)@^Eo}c#_MVTX+8ayWr3PuLeZFqO`lYGBm=fkIlP$
zn#L_;t||0-JRbB5Lc+OaLD+eMLn0(XlDjw^nTG)RtfeIdz;yp_3eH2;3)@g2@Cm0Q
zbB#cKIBa?g%`0f0tQ+l?q9GLG5;BhlgfOMHTWBXRUfKr*fyU>h^O|9
zAs`6)t+g!y$0_t`ELP>G)LOv2)5xl?MV&}#ibu$f1U_$TOMak)gu}&_lT`}<>H(}pekfPs&mla)ke@bb08^;&a#sN0hxebO
gyoQ2230o)r50TagZKhji1^@s607*qoM6N<$g4}sVKmY&$
literal 0
HcmV?d00001
diff --git a/wear/src/main/res/mipmap-xhdpi/ic_launcher.png b/wear/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ca302927091522a4e0bb859d2d2fb2403152485
GIT binary patch
literal 3924
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
literal 0
HcmV?d00001
diff --git a/wear/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/wear/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000000000000000000000000000000000000..546f413998e490314978fca48fe2578803c33d9c
GIT binary patch
literal 8526
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
LdTQ0Gw&DK=j?C-L
literal 0
HcmV?d00001
diff --git a/wear/src/main/res/raw/click.mp3 b/wear/src/main/res/raw/click.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..48480af0e90beaa1f5ad7e8ca3105b09dd834e7d
GIT binary patch
literal 3576
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
+ Metronome
+
+ %1$s BPM
+
+ Metronome is running…
+ Touch to stop.
+
--
GitLab