From a44a2060d52ac085e2eb1b0d030b1bdcf4c4f6b9 Mon Sep 17 00:00:00 2001
From: google-automerger
Date: Tue, 18 Nov 2014 16:18:28 -0800
Subject: [PATCH] Auto-update
---
Application/build.gradle | 1 -
Application/src/main/AndroidManifest.xml | 6 +-
.../common/activities/SampleActivityBase.java | 52 ----
.../example/android/common/logger/Log.java | 236 ------------------
.../android/common/logger/LogFragment.java | 109 --------
.../android/common/logger/LogNode.java | 39 ---
.../android/common/logger/LogView.java | 145 -----------
.../android/common/logger/LogWrapper.java | 75 ------
.../common/logger/MessageOnlyLogFilter.java | 60 -----
.../delayedconfirmation/MainActivity.java | 2 +-
Shared/build.gradle | 35 ---
Shared/src/main/AndroidManifest.xml | 25 --
Shared/src/main/res/values/strings.xml | 18 --
Wearable/build.gradle | 1 -
Wearable/src/main/AndroidManifest.xml | 2 +-
.../delayedconfirmation/MainActivity.java | 2 +-
.../WearableMessageListenerService.java | 2 +-
.../companion_delayed_confirmation.png | Bin 0 -> 111638 bytes
.../delayed_confirmation_box_inset_all.png | Bin 0 -> 21123 bytes
.../delayed_confirmation_box_inset_top.png | Bin 0 -> 21178 bytes
.../delayed_confirmation_notification.png | Bin 0 -> 123940 bytes
settings.gradle | 2 +-
22 files changed, 8 insertions(+), 804 deletions(-)
delete mode 100644 Application/src/main/java/com/example/android/common/activities/SampleActivityBase.java
delete mode 100644 Application/src/main/java/com/example/android/common/logger/Log.java
delete mode 100644 Application/src/main/java/com/example/android/common/logger/LogFragment.java
delete mode 100644 Application/src/main/java/com/example/android/common/logger/LogNode.java
delete mode 100644 Application/src/main/java/com/example/android/common/logger/LogView.java
delete mode 100644 Application/src/main/java/com/example/android/common/logger/LogWrapper.java
delete mode 100644 Application/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java
rename Application/src/main/java/com/example/android/{ => wearable}/delayedconfirmation/MainActivity.java (98%)
delete mode 100644 Shared/build.gradle
delete mode 100644 Shared/src/main/AndroidManifest.xml
delete mode 100644 Shared/src/main/res/values/strings.xml
rename Wearable/src/main/java/com/example/android/{ => wearable}/delayedconfirmation/MainActivity.java (98%)
rename Wearable/src/main/java/com/example/android/{ => wearable}/delayedconfirmation/WearableMessageListenerService.java (95%)
create mode 100644 screenshots/companion_delayed_confirmation.png
create mode 100644 screenshots/delayed_confirmation_box_inset_all.png
create mode 100644 screenshots/delayed_confirmation_box_inset_top.png
create mode 100644 screenshots/delayed_confirmation_notification.png
diff --git a/Application/build.gradle b/Application/build.gradle
index 41fc623..0c6e001 100644
--- a/Application/build.gradle
+++ b/Application/build.gradle
@@ -16,7 +16,6 @@ dependencies {
compile 'com.google.android.gms:play-services:5.0.+'
compile 'com.android.support:support-v13:20.0.+'
- compile project(':Shared')
wearApp project(':Wearable')
}
diff --git a/Application/src/main/AndroidManifest.xml b/Application/src/main/AndroidManifest.xml
index 115ebec..20b7aab 100644
--- a/Application/src/main/AndroidManifest.xml
+++ b/Application/src/main/AndroidManifest.xml
@@ -15,10 +15,10 @@
-->
+ package="com.example.android.wearable.delayedconfirmation" >
-
+
When this is set as the head of the list,
- * an instance of it can function as a drop-in replacement for {@link android.util.Log}.
- * Most of the methods in this class server only to map a method call in Log to its equivalent
- * in LogNode.
- */
-public class Log {
- // Grabbing the native values from Android's native logging facilities,
- // to make for easy migration and interop.
- public static final int NONE = -1;
- public static final int VERBOSE = android.util.Log.VERBOSE;
- public static final int DEBUG = android.util.Log.DEBUG;
- public static final int INFO = android.util.Log.INFO;
- public static final int WARN = android.util.Log.WARN;
- public static final int ERROR = android.util.Log.ERROR;
- public static final int ASSERT = android.util.Log.ASSERT;
-
- // Stores the beginning of the LogNode topology.
- private static LogNode mLogNode;
-
- /**
- * Returns the next LogNode in the linked list.
- */
- public static LogNode getLogNode() {
- return mLogNode;
- }
-
- /**
- * Sets the LogNode data will be sent to.
- */
- public static void setLogNode(LogNode node) {
- mLogNode = node;
- }
-
- /**
- * Instructs the LogNode to print the log data provided. Other LogNodes can
- * be chained to the end of the LogNode as desired.
- *
- * @param priority Log level of the data being logged. Verbose, Error, etc.
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged.
- * @param tr If an exception was thrown, this can be sent along for the logging facilities
- * to extract and print useful information.
- */
- public static void println(int priority, String tag, String msg, Throwable tr) {
- if (mLogNode != null) {
- mLogNode.println(priority, tag, msg, tr);
- }
- }
-
- /**
- * Instructs the LogNode to print the log data provided. Other LogNodes can
- * be chained to the end of the LogNode as desired.
- *
- * @param priority Log level of the data being logged. Verbose, Error, etc.
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged. The actual message to be logged.
- */
- public static void println(int priority, String tag, String msg) {
- println(priority, tag, msg, null);
- }
-
- /**
- * Prints a message at VERBOSE priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged.
- * @param tr If an exception was thrown, this can be sent along for the logging facilities
- * to extract and print useful information.
- */
- public static void v(String tag, String msg, Throwable tr) {
- println(VERBOSE, tag, msg, tr);
- }
-
- /**
- * Prints a message at VERBOSE priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged.
- */
- public static void v(String tag, String msg) {
- v(tag, msg, null);
- }
-
-
- /**
- * Prints a message at DEBUG priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged.
- * @param tr If an exception was thrown, this can be sent along for the logging facilities
- * to extract and print useful information.
- */
- public static void d(String tag, String msg, Throwable tr) {
- println(DEBUG, tag, msg, tr);
- }
-
- /**
- * Prints a message at DEBUG priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged.
- */
- public static void d(String tag, String msg) {
- d(tag, msg, null);
- }
-
- /**
- * Prints a message at INFO priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged.
- * @param tr If an exception was thrown, this can be sent along for the logging facilities
- * to extract and print useful information.
- */
- public static void i(String tag, String msg, Throwable tr) {
- println(INFO, tag, msg, tr);
- }
-
- /**
- * Prints a message at INFO priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged.
- */
- public static void i(String tag, String msg) {
- i(tag, msg, null);
- }
-
- /**
- * Prints a message at WARN priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged.
- * @param tr If an exception was thrown, this can be sent along for the logging facilities
- * to extract and print useful information.
- */
- public static void w(String tag, String msg, Throwable tr) {
- println(WARN, tag, msg, tr);
- }
-
- /**
- * Prints a message at WARN priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged.
- */
- public static void w(String tag, String msg) {
- w(tag, msg, null);
- }
-
- /**
- * Prints a message at WARN priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param tr If an exception was thrown, this can be sent along for the logging facilities
- * to extract and print useful information.
- */
- public static void w(String tag, Throwable tr) {
- w(tag, null, tr);
- }
-
- /**
- * Prints a message at ERROR priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged.
- * @param tr If an exception was thrown, this can be sent along for the logging facilities
- * to extract and print useful information.
- */
- public static void e(String tag, String msg, Throwable tr) {
- println(ERROR, tag, msg, tr);
- }
-
- /**
- * Prints a message at ERROR priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged.
- */
- public static void e(String tag, String msg) {
- e(tag, msg, null);
- }
-
- /**
- * Prints a message at ASSERT priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged.
- * @param tr If an exception was thrown, this can be sent along for the logging facilities
- * to extract and print useful information.
- */
- public static void wtf(String tag, String msg, Throwable tr) {
- println(ASSERT, tag, msg, tr);
- }
-
- /**
- * Prints a message at ASSERT priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged.
- */
- public static void wtf(String tag, String msg) {
- wtf(tag, msg, null);
- }
-
- /**
- * Prints a message at ASSERT priority.
- *
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param tr If an exception was thrown, this can be sent along for the logging facilities
- * to extract and print useful information.
- */
- public static void wtf(String tag, Throwable tr) {
- wtf(tag, null, tr);
- }
-}
diff --git a/Application/src/main/java/com/example/android/common/logger/LogFragment.java b/Application/src/main/java/com/example/android/common/logger/LogFragment.java
deleted file mode 100644
index b302acd..0000000
--- a/Application/src/main/java/com/example/android/common/logger/LogFragment.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-* Copyright 2013 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-/*
- * Copyright 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.example.android.common.logger;
-
-import android.graphics.Typeface;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ScrollView;
-
-/**
- * Simple fraggment which contains a LogView and uses is to output log data it receives
- * through the LogNode interface.
- */
-public class LogFragment extends Fragment {
-
- private LogView mLogView;
- private ScrollView mScrollView;
-
- public LogFragment() {}
-
- public View inflateViews() {
- mScrollView = new ScrollView(getActivity());
- ViewGroup.LayoutParams scrollParams = new ViewGroup.LayoutParams(
- ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT);
- mScrollView.setLayoutParams(scrollParams);
-
- mLogView = new LogView(getActivity());
- ViewGroup.LayoutParams logParams = new ViewGroup.LayoutParams(scrollParams);
- logParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;
- mLogView.setLayoutParams(logParams);
- mLogView.setClickable(true);
- mLogView.setFocusable(true);
- mLogView.setTypeface(Typeface.MONOSPACE);
-
- // Want to set padding as 16 dips, setPadding takes pixels. Hooray math!
- int paddingDips = 16;
- double scale = getResources().getDisplayMetrics().density;
- int paddingPixels = (int) ((paddingDips * (scale)) + .5);
- mLogView.setPadding(paddingPixels, paddingPixels, paddingPixels, paddingPixels);
- mLogView.setCompoundDrawablePadding(paddingPixels);
-
- mLogView.setGravity(Gravity.BOTTOM);
- mLogView.setTextAppearance(getActivity(), android.R.style.TextAppearance_Holo_Medium);
-
- mScrollView.addView(mLogView);
- return mScrollView;
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
-
- View result = inflateViews();
-
- mLogView.addTextChangedListener(new TextWatcher() {
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {}
-
- @Override
- public void afterTextChanged(Editable s) {
- mScrollView.fullScroll(ScrollView.FOCUS_DOWN);
- }
- });
- return result;
- }
-
- public LogView getLogView() {
- return mLogView;
- }
-}
\ No newline at end of file
diff --git a/Application/src/main/java/com/example/android/common/logger/LogNode.java b/Application/src/main/java/com/example/android/common/logger/LogNode.java
deleted file mode 100644
index bc37cab..0000000
--- a/Application/src/main/java/com/example/android/common/logger/LogNode.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.example.android.common.logger;
-
-/**
- * Basic interface for a logging system that can output to one or more targets.
- * Note that in addition to classes that will output these logs in some format,
- * one can also implement this interface over a filter and insert that in the chain,
- * such that no targets further down see certain data, or see manipulated forms of the data.
- * You could, for instance, write a "ToHtmlLoggerNode" that just converted all the log data
- * it received to HTML and sent it along to the next node in the chain, without printing it
- * anywhere.
- */
-public interface LogNode {
-
- /**
- * Instructs first LogNode in the list to print the log data provided.
- * @param priority Log level of the data being logged. Verbose, Error, etc.
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged. The actual message to be logged.
- * @param tr If an exception was thrown, this can be sent along for the logging facilities
- * to extract and print useful information.
- */
- public void println(int priority, String tag, String msg, Throwable tr);
-
-}
diff --git a/Application/src/main/java/com/example/android/common/logger/LogView.java b/Application/src/main/java/com/example/android/common/logger/LogView.java
deleted file mode 100644
index c01542b..0000000
--- a/Application/src/main/java/com/example/android/common/logger/LogView.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.example.android.common.logger;
-
-import android.app.Activity;
-import android.content.Context;
-import android.util.*;
-import android.widget.TextView;
-
-/** Simple TextView which is used to output log data received through the LogNode interface.
-*/
-public class LogView extends TextView implements LogNode {
-
- public LogView(Context context) {
- super(context);
- }
-
- public LogView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public LogView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- /**
- * Formats the log data and prints it out to the LogView.
- * @param priority Log level of the data being logged. Verbose, Error, etc.
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged. The actual message to be logged.
- * @param tr If an exception was thrown, this can be sent along for the logging facilities
- * to extract and print useful information.
- */
- @Override
- public void println(int priority, String tag, String msg, Throwable tr) {
-
-
- String priorityStr = null;
-
- // For the purposes of this View, we want to print the priority as readable text.
- switch(priority) {
- case android.util.Log.VERBOSE:
- priorityStr = "VERBOSE";
- break;
- case android.util.Log.DEBUG:
- priorityStr = "DEBUG";
- break;
- case android.util.Log.INFO:
- priorityStr = "INFO";
- break;
- case android.util.Log.WARN:
- priorityStr = "WARN";
- break;
- case android.util.Log.ERROR:
- priorityStr = "ERROR";
- break;
- case android.util.Log.ASSERT:
- priorityStr = "ASSERT";
- break;
- default:
- break;
- }
-
- // Handily, the Log class has a facility for converting a stack trace into a usable string.
- String exceptionStr = null;
- if (tr != null) {
- exceptionStr = android.util.Log.getStackTraceString(tr);
- }
-
- // Take the priority, tag, message, and exception, and concatenate as necessary
- // into one usable line of text.
- final StringBuilder outputBuilder = new StringBuilder();
-
- String delimiter = "\t";
- appendIfNotNull(outputBuilder, priorityStr, delimiter);
- appendIfNotNull(outputBuilder, tag, delimiter);
- appendIfNotNull(outputBuilder, msg, delimiter);
- appendIfNotNull(outputBuilder, exceptionStr, delimiter);
-
- // In case this was originally called from an AsyncTask or some other off-UI thread,
- // make sure the update occurs within the UI thread.
- ((Activity) getContext()).runOnUiThread( (new Thread(new Runnable() {
- @Override
- public void run() {
- // Display the text we just generated within the LogView.
- appendToLog(outputBuilder.toString());
- }
- })));
-
- if (mNext != null) {
- mNext.println(priority, tag, msg, tr);
- }
- }
-
- public LogNode getNext() {
- return mNext;
- }
-
- public void setNext(LogNode node) {
- mNext = node;
- }
-
- /** Takes a string and adds to it, with a separator, if the bit to be added isn't null. Since
- * the logger takes so many arguments that might be null, this method helps cut out some of the
- * agonizing tedium of writing the same 3 lines over and over.
- * @param source StringBuilder containing the text to append to.
- * @param addStr The String to append
- * @param delimiter The String to separate the source and appended strings. A tab or comma,
- * for instance.
- * @return The fully concatenated String as a StringBuilder
- */
- private StringBuilder appendIfNotNull(StringBuilder source, String addStr, String delimiter) {
- if (addStr != null) {
- if (addStr.length() == 0) {
- delimiter = "";
- }
-
- return source.append(addStr).append(delimiter);
- }
- return source;
- }
-
- // The next LogNode in the chain.
- LogNode mNext;
-
- /** Outputs the string as a new line of log data in the LogView. */
- public void appendToLog(String s) {
- append("\n" + s);
- }
-
-
-}
diff --git a/Application/src/main/java/com/example/android/common/logger/LogWrapper.java b/Application/src/main/java/com/example/android/common/logger/LogWrapper.java
deleted file mode 100644
index 16a9e7b..0000000
--- a/Application/src/main/java/com/example/android/common/logger/LogWrapper.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.example.android.common.logger;
-
-import android.util.Log;
-
-/**
- * Helper class which wraps Android's native Log utility in the Logger interface. This way
- * normal DDMS output can be one of the many targets receiving and outputting logs simultaneously.
- */
-public class LogWrapper implements LogNode {
-
- // For piping: The next node to receive Log data after this one has done its work.
- private LogNode mNext;
-
- /**
- * Returns the next LogNode in the linked list.
- */
- public LogNode getNext() {
- return mNext;
- }
-
- /**
- * Sets the LogNode data will be sent to..
- */
- public void setNext(LogNode node) {
- mNext = node;
- }
-
- /**
- * Prints data out to the console using Android's native log mechanism.
- * @param priority Log level of the data being logged. Verbose, Error, etc.
- * @param tag Tag for for the log data. Can be used to organize log statements.
- * @param msg The actual message to be logged. The actual message to be logged.
- * @param tr If an exception was thrown, this can be sent along for the logging facilities
- * to extract and print useful information.
- */
- @Override
- public void println(int priority, String tag, String msg, Throwable tr) {
- // There actually are log methods that don't take a msg parameter. For now,
- // if that's the case, just convert null to the empty string and move on.
- String useMsg = msg;
- if (useMsg == null) {
- useMsg = "";
- }
-
- // If an exeption was provided, convert that exception to a usable string and attach
- // it to the end of the msg method.
- if (tr != null) {
- msg += "\n" + Log.getStackTraceString(tr);
- }
-
- // This is functionally identical to Log.x(tag, useMsg);
- // For instance, if priority were Log.VERBOSE, this would be the same as Log.v(tag, useMsg)
- Log.println(priority, tag, useMsg);
-
- // If this isn't the last node in the chain, move things along.
- if (mNext != null) {
- mNext.println(priority, tag, msg, tr);
- }
- }
-}
diff --git a/Application/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java b/Application/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java
deleted file mode 100644
index 19967dc..0000000
--- a/Application/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.example.android.common.logger;
-
-/**
- * Simple {@link LogNode} filter, removes everything except the message.
- * Useful for situations like on-screen log output where you don't want a lot of metadata displayed,
- * just easy-to-read message updates as they're happening.
- */
-public class MessageOnlyLogFilter implements LogNode {
-
- LogNode mNext;
-
- /**
- * Takes the "next" LogNode as a parameter, to simplify chaining.
- *
- * @param next The next LogNode in the pipeline.
- */
- public MessageOnlyLogFilter(LogNode next) {
- mNext = next;
- }
-
- public MessageOnlyLogFilter() {
- }
-
- @Override
- public void println(int priority, String tag, String msg, Throwable tr) {
- if (mNext != null) {
- getNext().println(Log.NONE, null, msg, null);
- }
- }
-
- /**
- * Returns the next LogNode in the chain.
- */
- public LogNode getNext() {
- return mNext;
- }
-
- /**
- * Sets the LogNode data will be sent to..
- */
- public void setNext(LogNode node) {
- mNext = node;
- }
-
-}
diff --git a/Application/src/main/java/com/example/android/delayedconfirmation/MainActivity.java b/Application/src/main/java/com/example/android/wearable/delayedconfirmation/MainActivity.java
similarity index 98%
rename from Application/src/main/java/com/example/android/delayedconfirmation/MainActivity.java
rename to Application/src/main/java/com/example/android/wearable/delayedconfirmation/MainActivity.java
index 6fe681f..3ffda53 100644
--- a/Application/src/main/java/com/example/android/delayedconfirmation/MainActivity.java
+++ b/Application/src/main/java/com/example/android/wearable/delayedconfirmation/MainActivity.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.example.android.delayedconfirmation;
+package com.example.android.wearable.delayedconfirmation;
import android.app.Activity;
import android.os.Bundle;
diff --git a/Shared/build.gradle b/Shared/build.gradle
deleted file mode 100644
index e6ddb59..0000000
--- a/Shared/build.gradle
+++ /dev/null
@@ -1,35 +0,0 @@
-buildscript {
- repositories {
- mavenCentral()
- }
-
- dependencies {
- classpath 'com.android.tools.build:gradle:0.12.+'
- }
-}
-
-apply plugin: 'android-library'
-
-// The sample build uses multiple directories to
-// keep boilerplate and common code separate from
-// the main sample code.
-List dirs = [
- 'main', // main sample code; look here for the interesting stuff.
- 'common', // components that are reused by multiple samples
- 'template'] // boilerplate code that is generated by the sample template process
-
-android {
- compileSdkVersion 20
-
- buildToolsVersion '20'
-
- sourceSets {
- main {
- dirs.each { dir ->
- java.srcDirs "src/${dir}/java"
- res.srcDirs "src/${dir}/res"
- }
- }
-
- }
-}
diff --git a/Shared/src/main/AndroidManifest.xml b/Shared/src/main/AndroidManifest.xml
deleted file mode 100644
index 2c9b669..0000000
--- a/Shared/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/Shared/src/main/res/values/strings.xml b/Shared/src/main/res/values/strings.xml
deleted file mode 100644
index 0f2bb90..0000000
--- a/Shared/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- Shared
-
diff --git a/Wearable/build.gradle b/Wearable/build.gradle
index b8151b1..864b2fd 100644
--- a/Wearable/build.gradle
+++ b/Wearable/build.gradle
@@ -16,7 +16,6 @@ dependencies {
compile 'com.google.android.gms:play-services-wearable:5.0.+'
compile 'com.android.support:support-v13:20.0.+'
compile 'com.google.android.support:wearable:1.0.+'
- compile project(':Shared')
}
// The sample build uses multiple directories to
diff --git a/Wearable/src/main/AndroidManifest.xml b/Wearable/src/main/AndroidManifest.xml
index a220008..b73af62 100644
--- a/Wearable/src/main/AndroidManifest.xml
+++ b/Wearable/src/main/AndroidManifest.xml
@@ -15,7 +15,7 @@
-->
+ package="com.example.android.wearable.delayedconfirmation" >
diff --git a/Wearable/src/main/java/com/example/android/delayedconfirmation/MainActivity.java b/Wearable/src/main/java/com/example/android/wearable/delayedconfirmation/MainActivity.java
similarity index 98%
rename from Wearable/src/main/java/com/example/android/delayedconfirmation/MainActivity.java
rename to Wearable/src/main/java/com/example/android/wearable/delayedconfirmation/MainActivity.java
index 2e169c7..f9b126d 100644
--- a/Wearable/src/main/java/com/example/android/delayedconfirmation/MainActivity.java
+++ b/Wearable/src/main/java/com/example/android/wearable/delayedconfirmation/MainActivity.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.example.android.delayedconfirmation;
+package com.example.android.wearable.delayedconfirmation;
import android.app.Activity;
import android.app.Notification;
diff --git a/Wearable/src/main/java/com/example/android/delayedconfirmation/WearableMessageListenerService.java b/Wearable/src/main/java/com/example/android/wearable/delayedconfirmation/WearableMessageListenerService.java
similarity index 95%
rename from Wearable/src/main/java/com/example/android/delayedconfirmation/WearableMessageListenerService.java
rename to Wearable/src/main/java/com/example/android/wearable/delayedconfirmation/WearableMessageListenerService.java
index 0032fda..bb2ec91 100644
--- a/Wearable/src/main/java/com/example/android/delayedconfirmation/WearableMessageListenerService.java
+++ b/Wearable/src/main/java/com/example/android/wearable/delayedconfirmation/WearableMessageListenerService.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.example.android.delayedconfirmation;
+package com.example.android.wearable.delayedconfirmation;
import android.content.Intent;
diff --git a/screenshots/companion_delayed_confirmation.png b/screenshots/companion_delayed_confirmation.png
new file mode 100644
index 0000000000000000000000000000000000000000..b1b61a4af403611f52fb7fd8571db42206466f8a
GIT binary patch
literal 111638
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 tB81N*@};2wDcvT@?O
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