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 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/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/ListenActivity.java b/app/src/main/java/protect/babymonitor/ListenActivity.java index bc2539e..d75b203 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,14 +30,19 @@ 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 { final String TAG = "BabyMonitor"; + // Sets an ID for the notification + final static int mNotificationId = 1; String _address; int _port; String _name; + NotificationManagerCompat _mNotifyMgr; Thread _listenThread; private void streamAudio(final Socket socket) throws IllegalArgumentException, IllegalStateException, IOException @@ -93,6 +99,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(this); setContentView(R.layout.activity_listen); @@ -101,6 +110,15 @@ protected void onCreate(Bundle savedInstanceState) @Override public void run() { + NotificationCompat.Builder mBuilder = + new NotificationCompat.Builder(ListenActivity.this) + .setSmallIcon(R.drawable.ic_launcher) + .setContentTitle(getString(R.string.app_name)) + .setContentText(getString(R.string.listening)); + + + _mNotifyMgr.notify(mNotificationId, mBuilder.build()); + final TextView connectedText = (TextView) findViewById(R.id.connectedTo); connectedText.setText(_name); @@ -146,6 +164,12 @@ public void run() final TextView statusText = (TextView) findViewById(R.id.textStatus); statusText.setText(R.string.disconnected); + NotificationCompat.Builder mBuilder = + new NotificationCompat.Builder(ListenActivity.this) + .setSmallIcon(R.drawable.ic_launcher) + .setContentTitle(getString(R.string.app_name)) + .setContentText(getString(R.string.disconnected)); + _mNotifyMgr.notify(mNotificationId, mBuilder.build()); } }); } diff --git a/app/src/main/java/protect/babymonitor/MonitorActivity.java b/app/src/main/java/protect/babymonitor/MonitorActivity.java index 4d5a3ac..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) 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) 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