-
-
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/build.gradle b/Week_09_Services_and_wearables/MyWearables2 copy/build.gradle
deleted file mode 100644
index c20bca1..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/build.gradle
+++ /dev/null
@@ -1,23 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-
-buildscript {
- repositories {
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:2.2.2'
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-
-allprojects {
- repositories {
- jcenter()
- }
-}
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/gradle.properties b/Week_09_Services_and_wearables/MyWearables2 copy/gradle.properties
deleted file mode 100644
index aac7c9b..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/gradle.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Project-wide Gradle settings.
-
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx1536m
-
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/gradle/wrapper/gradle-wrapper.jar b/Week_09_Services_and_wearables/MyWearables2 copy/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 13372ae..0000000
Binary files a/Week_09_Services_and_wearables/MyWearables2 copy/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/gradle/wrapper/gradle-wrapper.properties b/Week_09_Services_and_wearables/MyWearables2 copy/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 04e285f..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Mon Dec 28 10:00:20 PST 2015
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/gradlew b/Week_09_Services_and_wearables/MyWearables2 copy/gradlew
deleted file mode 100644
index 9d82f78..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/gradlew
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
- echo "$*"
-}
-
-die ( ) {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
-esac
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/gradlew.bat b/Week_09_Services_and_wearables/MyWearables2 copy/gradlew.bat
deleted file mode 100644
index 8a0b282..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/gradlew.bat
+++ /dev/null
@@ -1,90 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/.gitignore b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/.gitignore
deleted file mode 100644
index 796b96d..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/build.gradle b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/build.gradle
deleted file mode 100644
index b73ebbf..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/build.gradle
+++ /dev/null
@@ -1,32 +0,0 @@
-apply plugin: 'com.android.application'
-
-android {
- compileSdkVersion 24
- buildToolsVersion "24.0.3"
- defaultConfig {
- applicationId "com.example.jianhuayang.mywearables"
- minSdkVersion 15
- targetSdkVersion 24
- versionCode 1
- versionName "1.0"
- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
-}
-
-dependencies {
- compile fileTree(include: ['*.jar'], dir: 'libs')
- androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
- exclude group: 'com.android.support', module: 'support-annotations'
- })
- compile 'com.android.support:appcompat-v7:24.2.1'
- testCompile 'junit:junit:4.12'
- wearApp project(':wear')
-// compile 'com.google.android.gms:play-services:9.6.1'
- compile 'com.google.android.gms:play-services:7.8.0'
-}
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/proguard-rules.pro b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/proguard-rules.pro
deleted file mode 100644
index cce7213..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/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 /Users/jianhuayang/Library/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/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/androidTest/java/com/example/jianhuayang/mywearables/ExampleInstrumentedTest.java b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/androidTest/java/com/example/jianhuayang/mywearables/ExampleInstrumentedTest.java
deleted file mode 100644
index 67c500d..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/androidTest/java/com/example/jianhuayang/mywearables/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.example.jianhuayang.mywearables;
-
-import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumentation test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() throws Exception {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getTargetContext();
-
- assertEquals("com.example.jianhuayang.mywearables", appContext.getPackageName());
- }
-}
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/AndroidManifest.xml b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/AndroidManifest.xml
deleted file mode 100644
index 7050171..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/CountingReceiver.java b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/CountingReceiver.java
deleted file mode 100644
index 3951ffc..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/CountingReceiver.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.example.jianhuayang.mywearables;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.util.Log;
-
-/**
- * Created by jianhuayang on 25/11/2016.
- */
-
-public class CountingReceiver extends BroadcastReceiver {
- public CountingReceiver() {
- }
-
- @Override
- public void onReceive(Context context, Intent intent) {
- Log.d(MainActivity.DEBUG_KEY, "on receive");
- String timeElapsed = intent.getStringExtra(CountingService.REPORT_KEY);
- Log.d(MainActivity.DEBUG_KEY, "time elapsed: " + timeElapsed);
-
- Intent intentNew = new Intent(context, DisplayActivity.class);
- intentNew.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intentNew.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- intentNew.putExtra(CountingService.REPORT_KEY, timeElapsed);
- context.startActivity(intentNew);
- }
-
-}
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/CountingService.java b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/CountingService.java
deleted file mode 100644
index 39ae1a1..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/CountingService.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.example.jianhuayang.mywearables;
-
-import android.app.IntentService;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.TaskStackBuilder;
-import android.util.Log;
-
-/**
- * Created by jianhuayang on 25/11/2016.
- */
-
-public class CountingService extends IntentService {
-
- public static final String REPORT_KEY = "REPORT_KEY";
- public static final String INTENT_KEY = "com.example.jianhuayang.mywearables.BROADCAST";
-
- public CountingService() {
- super("BackgroundCounting");
- }
-
- @Override
- protected void onHandleIntent(Intent intent) {
-
- int count = 0;
- while (count < 10) {
- synchronized (this) {
- try {
- wait(1000);
- count++;
- Log.d(MainActivity.DEBUG_KEY, Integer.toString(count));
-
-// send info using intent
-// Intent intentNew = new Intent(getBaseContext(), DisplayActivity.class);
-// intentNew.putExtra(REPORT_KEY, Integer.toString(count));
-// intentNew.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-// intentNew.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-// getBaseContext().startActivity(intentNew);
-
-// Intent localIntent = new Intent();
-// localIntent.setAction(INTENT_KEY);
-// localIntent.putExtra(REPORT_KEY, Integer.toString(count));
-// sendBroadcast(localIntent);
-// Log.d(MainActivity.DEBUG_KEY, "broadcasted");
-
- NotificationCompat.Builder builder =
- new NotificationCompat.Builder(this)
- .setSmallIcon(R.mipmap.ic_launcher)
- .setContentTitle("My Wearables")
- .setContentText("Time elapsed: " + Integer.toString(count) + " seconds.");
- Intent resultIntent = new Intent(this, DisplayActivity.class);
- resultIntent.putExtra(REPORT_KEY, Integer.toString(count));
-
- TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(this);
- taskStackBuilder.addParentStack(DisplayActivity.class);
- taskStackBuilder.addNextIntent(resultIntent);
- PendingIntent resultPendingIntent =
- taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
- builder.setContentIntent(resultPendingIntent);
- NotificationManager notificationManager =
- (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.notify(123123, builder.build());
- } catch (Exception e) {
- }
- }
- }
- Log.d(MainActivity.DEBUG_KEY, "service finished");
-
- }
-}
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/DisplayActivity.java b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/DisplayActivity.java
deleted file mode 100644
index 0258027..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/DisplayActivity.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.example.jianhuayang.mywearables;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-import android.widget.TextView;
-
-public class DisplayActivity extends AppCompatActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_display);
- if (getIntent() != null) {
- Intent intent = getIntent();
- TextView textView = (TextView) findViewById(R.id.display);
- textView.setText("Time elapsed (seconds):\n" + intent.getStringExtra(CountingService.REPORT_KEY));
- }
- }
-}
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/ListenerService.java b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/ListenerService.java
deleted file mode 100644
index b89dda6..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/ListenerService.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.example.jianhuayang.mywearables;
-
-import android.util.Log;
-import android.widget.Toast;
-
-import com.google.android.gms.wearable.MessageEvent;
-import com.google.android.gms.wearable.WearableListenerService;
-
-/**
- * Created by jianhuayang on 25/11/2016.
- */
-
-public class ListenerService extends WearableListenerService {
- @Override
- public void onMessageReceived(MessageEvent messageEvent) {
- Log.d("DEBUG_KEY", "on received");
- showToast(messageEvent.getPath());
- }
-
- private void showToast(String message) {
- Toast.makeText(this, message, Toast.LENGTH_LONG).show();
- }
-}
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/MainActivity.java b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/MainActivity.java
deleted file mode 100644
index be541c5..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/java/com/example/jianhuayang/mywearables/MainActivity.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.example.jianhuayang.mywearables;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-import android.util.Log;
-import android.view.View;
-
-public class MainActivity extends AppCompatActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- }
-
- public static final String DEBUG_KEY = "DEBUG_KEY";
- public void onStartClick(View v) {
- startService(new Intent(this, CountingService.class));
- Log.d(DEBUG_KEY, "service started");
- }
-}
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/layout/activity_display.xml b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/layout/activity_display.xml
deleted file mode 100644
index 9d1e4d1..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/layout/activity_display.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/layout/activity_main.xml b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/layout/activity_main.xml
deleted file mode 100644
index 5518d18..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
-
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-hdpi/ic_launcher.png b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index cde69bc..0000000
Binary files a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-mdpi/ic_launcher.png b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index c133a0c..0000000
Binary files a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-xhdpi/ic_launcher.png b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index bfa42f0..0000000
Binary files a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 324e72c..0000000
Binary files a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index aee44e1..0000000
Binary files a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values-w820dp/dimens.xml b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values-w820dp/dimens.xml
deleted file mode 100644
index 63fc816..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values-w820dp/dimens.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- 64dp
-
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values/colors.xml b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values/colors.xml
deleted file mode 100644
index 3ab3e9c..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- #3F51B5
- #303F9F
- #FF4081
-
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values/dimens.xml b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values/dimens.xml
deleted file mode 100644
index 47c8224..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- 16dp
- 16dp
-
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values/strings.xml b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values/strings.xml
deleted file mode 100644
index 2570ada..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
- My Wearables
-
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values/styles.xml b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values/styles.xml
deleted file mode 100644
index 5885930..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/test/java/com/example/jianhuayang/mywearables/ExampleUnitTest.java b/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/test/java/com/example/jianhuayang/mywearables/ExampleUnitTest.java
deleted file mode 100644
index 02b74eb..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/mobile/src/test/java/com/example/jianhuayang/mywearables/ExampleUnitTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.example.jianhuayang.mywearables;
-
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see Testing documentation
- */
-public class ExampleUnitTest {
- @Test
- public void addition_isCorrect() throws Exception {
- assertEquals(4, 2 + 2);
- }
-}
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/settings.gradle b/Week_09_Services_and_wearables/MyWearables2 copy/settings.gradle
deleted file mode 100644
index 6a4e79f..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/settings.gradle
+++ /dev/null
@@ -1 +0,0 @@
-include ':mobile', ':wear'
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/wear/.gitignore b/Week_09_Services_and_wearables/MyWearables2 copy/wear/.gitignore
deleted file mode 100644
index 796b96d..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/wear/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/wear/build.gradle b/Week_09_Services_and_wearables/MyWearables2 copy/wear/build.gradle
deleted file mode 100644
index 56a86c0..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/wear/build.gradle
+++ /dev/null
@@ -1,29 +0,0 @@
-apply plugin: 'com.android.application'
-
-
-android {
- compileSdkVersion 24
- buildToolsVersion "24.0.3"
-
- defaultConfig {
- applicationId "com.example.jianhuayang.mywearables"
- minSdkVersion 21
- targetSdkVersion 24
- 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.0-alpha2'
-// compile 'com.google.android.gms:play-services-wearable:9.6.1'
- compile 'com.google.android.wearable:wearable:2.0.0-alpha2'
- compile 'com.google.android.gms:play-services-wearable:7.8.0'
-}
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/wear/proguard-rules.pro b/Week_09_Services_and_wearables/MyWearables2 copy/wear/proguard-rules.pro
deleted file mode 100644
index cce7213..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/wear/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 /Users/jianhuayang/Library/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/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/AndroidManifest.xml b/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/AndroidManifest.xml
deleted file mode 100644
index b73b70d..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/java/com/example/jianhuayang/mywearables/MainActivity.java b/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/java/com/example/jianhuayang/mywearables/MainActivity.java
deleted file mode 100644
index 69c9722..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/java/com/example/jianhuayang/mywearables/MainActivity.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package com.example.jianhuayang.mywearables;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.os.CountDownTimer;
-import android.support.wearable.activity.WearableActivity;
-import android.support.wearable.view.BoxInsetLayout;
-import android.util.Log;
-import android.view.View;
-import android.widget.Button;
-import android.widget.TextView;
-
-import com.google.android.gms.common.api.GoogleApiClient;
-import com.google.android.gms.wearable.Node;
-import com.google.android.gms.wearable.NodeApi;
-import com.google.android.gms.wearable.Wearable;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-import java.util.concurrent.TimeUnit;
-
-public class MainActivity extends WearableActivity {
-
- private static final SimpleDateFormat AMBIENT_DATE_FORMAT =
- new SimpleDateFormat("HH:mm", Locale.US);
-
- private BoxInsetLayout mContainerView;
- private TextView mTextView;
- private TextView mClockView;
-
- private Button button;
- private static final long CONNECTION_TIME_OUT_MS = 100;
- private String message;
- private GoogleApiClient client;
- private String nodeId;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- setAmbientEnabled();
-
- mContainerView = (BoxInsetLayout) findViewById(R.id.container);
- mTextView = (TextView) findViewById(R.id.text);
- mClockView = (TextView) findViewById(R.id.clock);
-
- button = (Button) findViewById(R.id.send);
- initApi();
- new CountDownTimer(30000, 1000) {
-
- public void onTick(long millisUntilFinished) {
- message = "seconds remaining: " + millisUntilFinished / 1000;
- mTextView.setText(message);
- }
-
- public void onFinish() {
- mTextView.setText("done!");
- }
- }.start();
- }
-
- @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()) {
- mContainerView.setBackgroundColor(getResources().getColor(android.R.color.black));
- mTextView.setTextColor(getResources().getColor(android.R.color.white));
- mClockView.setVisibility(View.VISIBLE);
- mClockView.setText(AMBIENT_DATE_FORMAT.format(new Date()));
- button.setTextColor(getResources().getColor(android.R.color.white));
- } else {
- mContainerView.setBackground(null);
- mTextView.setTextColor(getResources().getColor(android.R.color.black));
- mClockView.setVisibility(View.GONE);
- button.setTextColor(getResources().getColor(android.R.color.black));
-
- }
- }
-
- private void initApi() {
- client = getGoogleApiClient(this);
- retrieveDeviceNode();
- }
-
- private GoogleApiClient getGoogleApiClient(Context context) {
- return new GoogleApiClient.Builder(context)
- .addApi(Wearable.API)
- .build();
- }
-
- private void retrieveDeviceNode() {
- new Thread(new Runnable() {
- @Override
- public void run() {
- client.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
- NodeApi.GetConnectedNodesResult result =
- Wearable.NodeApi.getConnectedNodes(client).await();
- List nodes = result.getNodes();
- Log.d("xxxx", Integer.toString(nodes.size()));
- if (nodes.size() > 0) {
- nodeId = nodes.get(0).getId();
- Log.d("DEBUG_KEY", "size " + Integer.toString(nodes.size()));
-
- Log.d("DEBUG_KEY", nodeId);
- }
- client.disconnect();
- }
- }).start();
- }
-
- public void onSendClick(View v) {
- if (nodeId != null) {
- new Thread(new Runnable() {
- @Override
- public void run() {
- Log.d("DEBUG_KEY", "on click");
- client.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
- Wearable.MessageApi.sendMessage(client, nodeId, message, null);
- client.disconnect();
- Log.d("DEBUG_KEY", "on click sent");
-
- }
- }).start();
- }
- }
-}
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/layout/activity_main.xml b/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/layout/activity_main.xml
deleted file mode 100644
index 872dd00..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/mipmap-hdpi/ic_launcher.png b/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index cde69bc..0000000
Binary files a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/mipmap-mdpi/ic_launcher.png b/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index c133a0c..0000000
Binary files a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/mipmap-xhdpi/ic_launcher.png b/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index bfa42f0..0000000
Binary files a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 324e72c..0000000
Binary files a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/values/strings.xml b/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/values/strings.xml
deleted file mode 100644
index d7b539d..0000000
--- a/Week_09_Services_and_wearables/MyWearables2 copy/wear/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
- My Wearables
- Hello World!
-
diff --git a/Week_09_Services_and_wearables/MyWearables2/.idea/encodings.xml b/Week_09_Services_and_wearables/MyWearables2/.idea/encodings.xml
deleted file mode 100644
index 33bc042..0000000
--- a/Week_09_Services_and_wearables/MyWearables2/.idea/encodings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/Week_09_Services_and_wearables/MyWearables2/.idea/gradle.xml b/Week_09_Services_and_wearables/MyWearables2/.idea/gradle.xml
index 901927a..2246bbb 100644
--- a/Week_09_Services_and_wearables/MyWearables2/.idea/gradle.xml
+++ b/Week_09_Services_and_wearables/MyWearables2/.idea/gradle.xml
@@ -17,4 +17,4 @@
-
+
\ No newline at end of file
diff --git a/Week_09_Services_and_wearables/MyWearables2/.idea/misc.xml b/Week_09_Services_and_wearables/MyWearables2/.idea/misc.xml
index 4c09cf7..5d19981 100644
--- a/Week_09_Services_and_wearables/MyWearables2/.idea/misc.xml
+++ b/Week_09_Services_and_wearables/MyWearables2/.idea/misc.xml
@@ -1,5 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -16,4 +43,4 @@
-
+
\ No newline at end of file
diff --git a/Week_09_Services_and_wearables/MyWearables2/.idea/modules.xml b/Week_09_Services_and_wearables/MyWearables2/.idea/modules.xml
index 6f71be4..c69a079 100644
--- a/Week_09_Services_and_wearables/MyWearables2/.idea/modules.xml
+++ b/Week_09_Services_and_wearables/MyWearables2/.idea/modules.xml
@@ -2,9 +2,10 @@
+
-
+
\ No newline at end of file
diff --git a/Week_09_Services_and_wearables/MyWearables2/build.gradle b/Week_09_Services_and_wearables/MyWearables2/build.gradle
index c20bca1..428e343 100644
--- a/Week_09_Services_and_wearables/MyWearables2/build.gradle
+++ b/Week_09_Services_and_wearables/MyWearables2/build.gradle
@@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.2.2'
+ classpath 'com.android.tools.build:gradle:2.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@@ -15,6 +15,9 @@ buildscript {
allprojects {
repositories {
jcenter()
+ maven {
+ url "https://maven.google.com"
+ }
}
}
diff --git a/Week_09_Services_and_wearables/MyWearables2/gradle/wrapper/gradle-wrapper.properties b/Week_09_Services_and_wearables/MyWearables2/gradle/wrapper/gradle-wrapper.properties
index 04e285f..80ecfae 100644
--- a/Week_09_Services_and_wearables/MyWearables2/gradle/wrapper/gradle-wrapper.properties
+++ b/Week_09_Services_and_wearables/MyWearables2/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Mon Dec 28 10:00:20 PST 2015
+#Tue Nov 28 14:46:32 GMT 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
diff --git a/Week_09_Services_and_wearables/MyWearables2/mobile/build.gradle b/Week_09_Services_and_wearables/MyWearables2/mobile/build.gradle
index b73ebbf..4bae514 100644
--- a/Week_09_Services_and_wearables/MyWearables2/mobile/build.gradle
+++ b/Week_09_Services_and_wearables/MyWearables2/mobile/build.gradle
@@ -1,12 +1,12 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 24
- buildToolsVersion "24.0.3"
+ compileSdkVersion 26
+ buildToolsVersion '27.0.1'
defaultConfig {
applicationId "com.example.jianhuayang.mywearables"
minSdkVersion 15
- targetSdkVersion 24
+ targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -20,13 +20,12 @@ android {
}
dependencies {
- compile fileTree(include: ['*.jar'], dir: 'libs')
+ compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
- compile 'com.android.support:appcompat-v7:24.2.1'
+ compile 'com.android.support:appcompat-v7:26.+'
testCompile 'junit:junit:4.12'
wearApp project(':wear')
-// compile 'com.google.android.gms:play-services:9.6.1'
- compile 'com.google.android.gms:play-services:7.8.0'
+ compile 'com.google.android.gms:play-services-wearable:11.0.4'
}
diff --git a/Week_09_Services_and_wearables/MyWearables2/mobile/src/main/AndroidManifest.xml b/Week_09_Services_and_wearables/MyWearables2/mobile/src/main/AndroidManifest.xml
index 7050171..97fdadd 100644
--- a/Week_09_Services_and_wearables/MyWearables2/mobile/src/main/AndroidManifest.xml
+++ b/Week_09_Services_and_wearables/MyWearables2/mobile/src/main/AndroidManifest.xml
@@ -24,12 +24,6 @@
-
-
-
-
-
-
@@ -39,6 +33,20 @@
+
+
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/Week_09_Services_and_wearables/MyWearables2/mobile/src/main/java/com/example/jianhuayang/mywearables/CountingService.java b/Week_09_Services_and_wearables/MyWearables2/mobile/src/main/java/com/example/jianhuayang/mywearables/CountingService.java
index 39ae1a1..b9b62ab 100644
--- a/Week_09_Services_and_wearables/MyWearables2/mobile/src/main/java/com/example/jianhuayang/mywearables/CountingService.java
+++ b/Week_09_Services_and_wearables/MyWearables2/mobile/src/main/java/com/example/jianhuayang/mywearables/CountingService.java
@@ -1,10 +1,13 @@
package com.example.jianhuayang.mywearables;
import android.app.IntentService;
+import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
+import android.os.Build;
+import android.support.annotation.RequiresApi;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.TaskStackBuilder;
import android.util.Log;
@@ -22,9 +25,12 @@ public class CountingService extends IntentService {
super("BackgroundCounting");
}
+ @RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void onHandleIntent(Intent intent) {
+
+
int count = 0;
while (count < 10) {
synchronized (this) {
@@ -46,8 +52,18 @@ public class CountingService extends IntentService {
// sendBroadcast(localIntent);
// Log.d(MainActivity.DEBUG_KEY, "broadcasted");
+ //https://stackoverflow.com/questions/43093260/notification-not-showing-in-android-8-oreo
+ String CHANNEL_ID = "my_channel_01";
+ CharSequence name = "Channel human readable title";// The user-visible name of the channel.
+ int importance = NotificationManager.IMPORTANCE_HIGH;
+ NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name,
+ importance);
+ NotificationManager notificationManager =
+ (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ notificationManager.createNotificationChannel(channel);
+
NotificationCompat.Builder builder =
- new NotificationCompat.Builder(this)
+ new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("My Wearables")
.setContentText("Time elapsed: " + Integer.toString(count) + " seconds.");
@@ -60,8 +76,7 @@ public class CountingService extends IntentService {
PendingIntent resultPendingIntent =
taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(resultPendingIntent);
- NotificationManager notificationManager =
- (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+
notificationManager.notify(123123, builder.build());
} catch (Exception e) {
}
diff --git a/Week_09_Services_and_wearables/MyWearables2/mobile/src/main/java/com/example/jianhuayang/mywearables/ListenerService.java b/Week_09_Services_and_wearables/MyWearables2/mobile/src/main/java/com/example/jianhuayang/mywearables/ListenerService.java
index b89dda6..bc70f54 100644
--- a/Week_09_Services_and_wearables/MyWearables2/mobile/src/main/java/com/example/jianhuayang/mywearables/ListenerService.java
+++ b/Week_09_Services_and_wearables/MyWearables2/mobile/src/main/java/com/example/jianhuayang/mywearables/ListenerService.java
@@ -6,10 +6,6 @@ import android.widget.Toast;
import com.google.android.gms.wearable.MessageEvent;
import com.google.android.gms.wearable.WearableListenerService;
-/**
- * Created by jianhuayang on 25/11/2016.
- */
-
public class ListenerService extends WearableListenerService {
@Override
public void onMessageReceived(MessageEvent messageEvent) {
@@ -20,4 +16,4 @@ public class ListenerService extends WearableListenerService {
private void showToast(String message) {
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
-}
+}
\ No newline at end of file
diff --git a/Week_09_Services_and_wearables/MyWearables2/wear/build.gradle b/Week_09_Services_and_wearables/MyWearables2/wear/build.gradle
index 56a86c0..0f7e618 100644
--- a/Week_09_Services_and_wearables/MyWearables2/wear/build.gradle
+++ b/Week_09_Services_and_wearables/MyWearables2/wear/build.gradle
@@ -2,13 +2,13 @@ apply plugin: 'com.android.application'
android {
- compileSdkVersion 24
- buildToolsVersion "24.0.3"
+ compileSdkVersion 26
+ buildToolsVersion "27.0.1"
defaultConfig {
applicationId "com.example.jianhuayang.mywearables"
minSdkVersion 21
- targetSdkVersion 24
+ targetSdkVersion 26
versionCode 1
versionName "1.0"
}
@@ -22,8 +22,7 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'com.google.android.support:wearable:2.0.0-alpha2'
-// compile 'com.google.android.gms:play-services-wearable:9.6.1'
- compile 'com.google.android.wearable:wearable:2.0.0-alpha2'
- compile 'com.google.android.gms:play-services-wearable:7.8.0'
+ compile 'com.google.android.support:wearable:2.0.5'
+ compile 'com.google.android.gms:play-services-wearable:11.0.4'
+ provided 'com.google.android.wearable:wearable:2.0.5'
}
diff --git a/Week_09_Services_and_wearables/MyWearables2/wear/proguard-rules.pro b/Week_09_Services_and_wearables/MyWearables2/wear/proguard-rules.pro
index cce7213..6d3585e 100644
--- a/Week_09_Services_and_wearables/MyWearables2/wear/proguard-rules.pro
+++ b/Week_09_Services_and_wearables/MyWearables2/wear/proguard-rules.pro
@@ -15,3 +15,11 @@
#-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/Week_09_Services_and_wearables/MyWearables2/wear/src/main/AndroidManifest.xml b/Week_09_Services_and_wearables/MyWearables2/wear/src/main/AndroidManifest.xml
index b73b70d..e538c46 100644
--- a/Week_09_Services_and_wearables/MyWearables2/wear/src/main/AndroidManifest.xml
+++ b/Week_09_Services_and_wearables/MyWearables2/wear/src/main/AndroidManifest.xml
@@ -17,7 +17,7 @@
android:required="false"/>
@@ -28,4 +28,4 @@
-
+
\ No newline at end of file
diff --git a/Week_09_Services_and_wearables/MyWearables2/wear/src/main/java/com/example/jianhuayang/mywearables/MainActivity.java b/Week_09_Services_and_wearables/MyWearables2/wear/src/main/java/com/example/jianhuayang/mywearables/MainActivity.java
index 69c9722..ab9c1bd 100644
--- a/Week_09_Services_and_wearables/MyWearables2/wear/src/main/java/com/example/jianhuayang/mywearables/MainActivity.java
+++ b/Week_09_Services_and_wearables/MyWearables2/wear/src/main/java/com/example/jianhuayang/mywearables/MainActivity.java
@@ -23,6 +23,12 @@ import java.util.concurrent.TimeUnit;
public class MainActivity extends WearableActivity {
+ private Button button;
+ private static final long CONNECTION_TIME_OUT_MS = 100;
+ private String message;
+ private GoogleApiClient client;
+ private String nodeId;
+
private static final SimpleDateFormat AMBIENT_DATE_FORMAT =
new SimpleDateFormat("HH:mm", Locale.US);
@@ -30,12 +36,6 @@ public class MainActivity extends WearableActivity {
private TextView mTextView;
private TextView mClockView;
- private Button button;
- private static final long CONNECTION_TIME_OUT_MS = 100;
- private String message;
- private GoogleApiClient client;
- private String nodeId;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -84,8 +84,10 @@ public class MainActivity extends WearableActivity {
mContainerView.setBackgroundColor(getResources().getColor(android.R.color.black));
mTextView.setTextColor(getResources().getColor(android.R.color.white));
mClockView.setVisibility(View.VISIBLE);
+
mClockView.setText(AMBIENT_DATE_FORMAT.format(new Date()));
button.setTextColor(getResources().getColor(android.R.color.white));
+
} else {
mContainerView.setBackground(null);
mTextView.setTextColor(getResources().getColor(android.R.color.black));
@@ -110,14 +112,14 @@ public class MainActivity extends WearableActivity {
new Thread(new Runnable() {
@Override
public void run() {
+ Log.d("DEBUG_KEY", "114");
client.blockingConnect(CONNECTION_TIME_OUT_MS, TimeUnit.MILLISECONDS);
NodeApi.GetConnectedNodesResult result =
Wearable.NodeApi.getConnectedNodes(client).await();
List nodes = result.getNodes();
- Log.d("xxxx", Integer.toString(nodes.size()));
if (nodes.size() > 0) {
nodeId = nodes.get(0).getId();
- Log.d("DEBUG_KEY", "size " + Integer.toString(nodes.size()));
+ Log.d("DEBUG_KEY", "size "+Integer.toString(nodes.size()));
Log.d("DEBUG_KEY", nodeId);
}
@@ -126,6 +128,8 @@ public class MainActivity extends WearableActivity {
}).start();
}
+
+
public void onSendClick(View v) {
if (nodeId != null) {
new Thread(new Runnable() {
diff --git a/Week_09_Services_and_wearables/MyWearables2/wear/src/main/res/layout/activity_main.xml b/Week_09_Services_and_wearables/MyWearables2/wear/src/main/res/layout/activity_main.xml
index 872dd00..ffe042e 100644
--- a/Week_09_Services_and_wearables/MyWearables2/wear/src/main/res/layout/activity_main.xml
+++ b/Week_09_Services_and_wearables/MyWearables2/wear/src/main/res/layout/activity_main.xml
@@ -15,7 +15,6 @@
android:layout_height="match_parent"
android:text="@string/hello_world"
app:layout_box="all"/>
-
-
Finish
+ 3. Select the system image you downloaded earlier and click Next ==> Finish
4. Click the green triangle once the AVD is created to start it. On the first start, the watch may give you a quick demo on how to use it (depending on your version). If that happens, follow instructions and feel free to explore your virtual watch.
![](.md_images/watch_start.png)
@@ -41,23 +37,22 @@ Android notifications delivered to your phone will be automatically displayed on
3. On your Android phone/tablet, install an app called Android Wear from Play store.
4. Connect your phone to the Mac/Windows machine using a USB cable.
5. Find out your Android SDK location by right-clicking on the app folder in project tool window, select Open Module Settings ==> SDK Location.
-6. Open a terminal window, navigate to a subfolder inside the SDK location called platform-tools. For example, my platform-tools is located at `/Users/jianhuayang/Portables/android-sdk-macosx/platform-tools`. Issue the following command so that the AVD can connect to the phone `./adb -d forward tcp:5601 tcp:5601`. This command should return nothing.
+6. Open a terminal window, navigate to a subfolder inside the SDK location called platform-tools. For example, my platform-tools is located at `/Users/jianhuayang/Library/Android/sdk/platform-tools`. Issue the following command so that the AVD can connect to the phone `./adb -d forward tcp:5601 tcp:5601`. This command should return nothing.
![](.md_images/command.png)
- > This command only works when you have a single wearable. If you have more than one, you should try to disable one of those. Or you can check out [discussions on Stack Overflow on Connecting Multiple Devices using adb](http://stackoverflow.com/questions/14654718/adb-shell-when-multiple-devices).
+ > This command only works when you have a single wearable. If you have more than one, you should disable one of those.
+
- > In case you have a real Android watch such as Moto 360 2nd Gen, to setup debugging you'll need to follow [official guides on Debugging over Bluetooth](https://developer.android.com/training/wearables/apps/bt-debugging.html). Note that some online tutorials use `localhost` instead of `127.0.0.1`, which may not work.
+ > In case you have a real Android watch such as Moto 360, to setup debugging you'll need to follow [official guides on Debugging over Bluetooth](https://developer.android.com/training/wearables/apps/debugging.html#usb-debugging). Note there's no need to do port forwarding as in the previous step for the wear AVD. Also note that some online tutorials use `localhost` instead of `127.0.0.1`, which may not work.
> `./adb forward tcp:4444 localabstract:/adb-hub`
> `./adb connect 127.0.0.1:4444`
+
+
7. On your phone, open Android Wear and connect to the watch called Emulator. To test the connection, click Take wearable screenshot. If it's connected successfully you should see in the notification area you have a new message saying 'Wearable screenshot finished.'
-
- ![](.md_images/try.png)
-
- ![](.md_images/not1.png)
### Services and broadcasting
@@ -268,10 +263,6 @@ If you run the app and hit Start Counting, you'll see that on both your phone an
![](.md_images/not2_watch.png)
-If you click Open on phone in the watch, it'll bring you back to the display activity
-
-![](.md_images/open_on_phone.png)
-
## Lab 2 Android wear apps
The My Wearables app created previously uses notifications on wearable to control the app installed on the phone. In the following exercise, we'll build an app that runs directly on the watch. The idea is that once we start the app we'll start counting down the time. And if we hit Send button, we'll send a message to the phone to display a Toast.
@@ -279,19 +270,22 @@ The My Wearables app created previously uses notifications on wearable to contro
### Add a wearable module
1. Duplicate the project folder you created earlier and rename it MyWearables2, open it in Android Studio.
-2. Click menu File ==> New ==> New Module, and select Android wear Module
+2. Click File ==> New ==> New Module, and select Android wear Module
![](.md_images/wear_module.png)
-3. Give the application a name My Wearables. Make sure that the Package name is the same as your existing package name (otherwise the wear module may not get installed properly, see [Stack Overflow discussions on Android Wear App not Installed](http://stackoverflow.com/questions/24685845/android-wear-app-not-installed)).
-
+3. Give the application a name My Wearables. Make sure that the Package name is the same as your existing package name
+
![](.md_images/new_module.png)
+
+
+
4. Select Always On Wear Activity, click Next until Finish. Now you have two modules in your project, as follows
![](.md_images/modules.png)
-
- If you receive a warning message saying 'Project mywearables: Provided dependencies can only be jars. com.google.android.wearable:wearable:aar:2.0.0-alpha2 is an Android Library' you'll need open build.gradle (Module: mywearables) file and change line `provided 'com.google.android.wearable:wearable:2.0.0-alpha2'` to `compile 'com.google.android.wearable:wearable:2.0.0-alpha2'`.
+
5. Refactor these two modules so that their names change to mobile and wear respectively. These should be default module names for such an app.
@@ -301,7 +295,7 @@ The My Wearables app created previously uses notifications on wearable to contro
```xml
wearApp project(':wear')
- compile 'com.google.android.gms:play-services:9.6.1'
+ compile 'com.google.android.gms:play-services:11.0.4'
```
The reason for doing this i.e. including wear module inside a mobile module, is that a wearable app needs to be included in the corresponding mobile app in order to be installed. This makes sense as there are no standalone wear apps.
@@ -458,11 +452,11 @@ If you run the app on your watch by tapping My Wearables icon, the counting down
![](.md_images/20s_w.png)
-## Lab 3 Useful Resources
+