From 38dd1e6664609e82a790be299a4a7c2f7e05fe9d Mon Sep 17 00:00:00 2001 From: Shachar R Date: Sun, 24 Dec 2017 11:15:07 -0800 Subject: [PATCH 1/6] Upgrade gradle to 3.0.1 (current android-studio version) Add google maven repository, to allow importing compatibility libs --- build.gradle | 4 +++- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 2e36980..97d43c4 100644 --- a/build.gradle +++ b/build.gradle @@ -2,14 +2,16 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.3' + classpath 'com.android.tools.build:gradle:3.0.1' } } allprojects { repositories { jcenter() + google() } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 04e285f..428a2ba 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Dec 28 10:00:20 PST 2015 +#Sun Dec 24 10:02:44 PST 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-4.1-all.zip From 0009c3bbdd06d7dd29a4bf83335ddce225a3ebb2 Mon Sep 17 00:00:00 2001 From: Shachar R Date: Sun, 24 Dec 2017 11:26:22 -0800 Subject: [PATCH 2/6] Add notification icon for listening and disconnected events TODO: Change icon color/details for connected vs. disconnected status --- app/build.gradle | 5 +++- .../protect/babymonitor/ListenActivity.java | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 6d87b00..4ae3c09 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,7 +8,6 @@ findbugs { android { compileSdkVersion 25 - buildToolsVersion "25.0.2" defaultConfig { applicationId "protect.babymonitor" @@ -22,6 +21,10 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } + + dependencies { + compile "com.android.support:support-compat:25.4.0" + } } task findbugs(type: FindBugs, dependsOn: 'assembleDebug') { diff --git a/app/src/main/java/protect/babymonitor/ListenActivity.java b/app/src/main/java/protect/babymonitor/ListenActivity.java index bc2539e..8243ac9 100644 --- a/app/src/main/java/protect/babymonitor/ListenActivity.java +++ b/app/src/main/java/protect/babymonitor/ListenActivity.java @@ -22,6 +22,7 @@ import java.net.UnknownHostException; import android.app.Activity; +import android.content.Context; import android.media.AudioFormat; import android.media.AudioManager; import android.media.AudioTrack; @@ -29,6 +30,8 @@ import android.os.Bundle; import android.util.Log; import android.widget.TextView; +import android.support.v4.app.NotificationCompat; +import android.support.v4.app.NotificationManagerCompat; public class ListenActivity extends Activity { @@ -37,6 +40,8 @@ public class ListenActivity extends Activity String _address; int _port; String _name; + Context _mParentContext = this; + NotificationManagerCompat _mNotifyMgr; Thread _listenThread; private void streamAudio(final Socket socket) throws IllegalArgumentException, IllegalStateException, IOException @@ -93,6 +98,9 @@ protected void onCreate(Bundle savedInstanceState) _address = b.getString("address"); _port = b.getInt("port"); _name = b.getString("name"); + // Gets an instance of the NotificationManager service + _mNotifyMgr = + NotificationManagerCompat.from(_mParentContext); setContentView(R.layout.activity_listen); @@ -101,6 +109,17 @@ protected void onCreate(Bundle savedInstanceState) @Override public void run() { + NotificationCompat.Builder mBuilder = + new NotificationCompat.Builder(_mParentContext) + .setSmallIcon(R.drawable.ic_launcher) + .setContentTitle("Baby Monitor Listener") + .setContentText("Listener is running"); + + + // Sets an ID for the notification + int mNotificationId = 1; + _mNotifyMgr.notify(mNotificationId, mBuilder.build()); + final TextView connectedText = (TextView) findViewById(R.id.connectedTo); connectedText.setText(_name); @@ -146,6 +165,14 @@ public void run() final TextView statusText = (TextView) findViewById(R.id.textStatus); statusText.setText(R.string.disconnected); + NotificationCompat.Builder mBuilder = + new NotificationCompat.Builder(_mParentContext) + .setSmallIcon(R.drawable.ic_launcher) + .setContentTitle("Baby Monitor Listener") + .setContentText("Disconnected!"); + // Sets an ID for the notification + int mNotificationId = 1; + _mNotifyMgr.notify(mNotificationId, mBuilder.build()); } }); } From 053cf34ea28a41b3b06bae11722ed1139d036f8c Mon Sep 17 00:00:00 2001 From: Shachar R Date: Sun, 24 Dec 2017 11:27:50 -0800 Subject: [PATCH 3/6] Fix a leak in the wifiManager usage in Android version smaller than N Update the SDK version to match the version in gradle. --- app/src/main/AndroidManifest.xml | 4 ++-- app/src/main/java/protect/babymonitor/MonitorActivity.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b16ca79..4a4c6f7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,8 +5,8 @@ android:versionName="0.2" > + android:minSdkVersion="16" + android:targetSdkVersion="17" /> diff --git a/app/src/main/java/protect/babymonitor/MonitorActivity.java b/app/src/main/java/protect/babymonitor/MonitorActivity.java index 4d5a3ac..63bff5d 100644 --- a/app/src/main/java/protect/babymonitor/MonitorActivity.java +++ b/app/src/main/java/protect/babymonitor/MonitorActivity.java @@ -174,7 +174,7 @@ public void run() { final TextView addressText = (TextView) findViewById(R.id.address); - final WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); + final WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE); final WifiInfo info = wifiManager.getConnectionInfo(); final int address = info.getIpAddress(); if(address != 0) From 51dc9155120f22f9ba515d62e55d2e7c4791a142 Mon Sep 17 00:00:00 2001 From: Branden Archer Date: Sun, 24 Dec 2017 18:43:59 -0500 Subject: [PATCH 4/6] Update travis to use Android tools 26.0.2 --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index df7ab2e..6b9dd73 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ sudo: true install: - echo y | android update sdk -u -a -t tools - echo y | android update sdk -u -a -t platform-tools -- echo y | android update sdk -u -a -t build-tools-25.0.2 +- echo y | android update sdk -u -a -t build-tools-26.0.2 - echo y | android update sdk -u -a -t android-25 - echo y | android update sdk -u -a -t extra-google-m2repository - echo y | android update sdk -u -a -t extra-android-m2repository @@ -13,4 +13,4 @@ script: ./gradlew assembleRelease testReleaseUnitTest lintRelease findbugs after_failure: - cat app/build/reports/findbugs/findbugs.html -- cat app/build/reports/tests/debug/index.html \ No newline at end of file +- cat app/build/reports/tests/debug/index.html From e19f1cc09a9ffbd32dc6b75e7493a90c02b482fb Mon Sep 17 00:00:00 2001 From: Shachar R Date: Sun, 24 Dec 2017 17:42:44 -0800 Subject: [PATCH 5/6] Fix comments from pull-request review --- .../protect/babymonitor/ListenActivity.java | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/protect/babymonitor/ListenActivity.java b/app/src/main/java/protect/babymonitor/ListenActivity.java index 8243ac9..d75b203 100644 --- a/app/src/main/java/protect/babymonitor/ListenActivity.java +++ b/app/src/main/java/protect/babymonitor/ListenActivity.java @@ -36,11 +36,12 @@ public class ListenActivity extends Activity { final String TAG = "BabyMonitor"; + // Sets an ID for the notification + final static int mNotificationId = 1; String _address; int _port; String _name; - Context _mParentContext = this; NotificationManagerCompat _mNotifyMgr; Thread _listenThread; @@ -100,7 +101,7 @@ protected void onCreate(Bundle savedInstanceState) _name = b.getString("name"); // Gets an instance of the NotificationManager service _mNotifyMgr = - NotificationManagerCompat.from(_mParentContext); + NotificationManagerCompat.from(this); setContentView(R.layout.activity_listen); @@ -110,14 +111,12 @@ protected void onCreate(Bundle savedInstanceState) public void run() { NotificationCompat.Builder mBuilder = - new NotificationCompat.Builder(_mParentContext) + new NotificationCompat.Builder(ListenActivity.this) .setSmallIcon(R.drawable.ic_launcher) - .setContentTitle("Baby Monitor Listener") - .setContentText("Listener is running"); + .setContentTitle(getString(R.string.app_name)) + .setContentText(getString(R.string.listening)); - // Sets an ID for the notification - int mNotificationId = 1; _mNotifyMgr.notify(mNotificationId, mBuilder.build()); final TextView connectedText = (TextView) findViewById(R.id.connectedTo); @@ -166,12 +165,10 @@ public void run() final TextView statusText = (TextView) findViewById(R.id.textStatus); statusText.setText(R.string.disconnected); NotificationCompat.Builder mBuilder = - new NotificationCompat.Builder(_mParentContext) + new NotificationCompat.Builder(ListenActivity.this) .setSmallIcon(R.drawable.ic_launcher) - .setContentTitle("Baby Monitor Listener") - .setContentText("Disconnected!"); - // Sets an ID for the notification - int mNotificationId = 1; + .setContentTitle(getString(R.string.app_name)) + .setContentText(getString(R.string.disconnected)); _mNotifyMgr.notify(mNotificationId, mBuilder.build()); } }); From 64db907c2b74b1fa985fde08050e394a7e7c0db0 Mon Sep 17 00:00:00 2001 From: Shachar R Date: Mon, 25 Dec 2017 08:31:33 -0800 Subject: [PATCH 6/6] Cosmetics --- app/src/main/java/protect/babymonitor/MonitorActivity.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/protect/babymonitor/MonitorActivity.java b/app/src/main/java/protect/babymonitor/MonitorActivity.java index 63bff5d..c7ca991 100644 --- a/app/src/main/java/protect/babymonitor/MonitorActivity.java +++ b/app/src/main/java/protect/babymonitor/MonitorActivity.java @@ -174,7 +174,9 @@ public void run() { final TextView addressText = (TextView) findViewById(R.id.address); - final WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE); + // Use the application context to get WifiManager, to avoid leak before Android 5.1 + final WifiManager wifiManager = + (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE); final WifiInfo info = wifiManager.getConnectionInfo(); final int address = info.getIpAddress(); if(address != 0)