diff --git a/build.gradle b/build.gradle index ea8f01a..4f0a511 100644 --- a/build.gradle +++ b/build.gradle @@ -1,17 +1,19 @@ buildscript { repositories { - jcenter() + gradlePluginPortal() google() + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' + classpath 'com.android.tools.build:gradle:7.3.1' } } allprojects { repositories { - jcenter() + gradlePluginPortal() google() + mavenCentral() } } diff --git a/caster/build.gradle b/caster/build.gradle index 91922a6..357b9f5 100644 --- a/caster/build.gradle +++ b/caster/build.gradle @@ -1,21 +1,17 @@ apply plugin: 'com.android.library' ext { - supportVersion = '27.1.1' - castVersion = '15.0.1' - queryVersion = '0.25.9' + castVersion = '21.2.0' } android { - compileSdkVersion 27 - buildToolsVersion "27.0.3" + namespace 'com.mradzinski.caster' + compileSdkVersion 33 defaultConfig { minSdkVersion 17 - targetSdkVersion 27 - versionCode 7 - versionName '1.0.8' - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + targetSdkVersion 33 + testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } buildTypes { @@ -26,21 +22,9 @@ android { } } -configurations.all { - // Force the usage of the same support library version. - resolutionStrategy.eachDependency { DependencyResolveDetails details -> - def requested = details.requested - if (requested.group == 'com.android.support') { - if (!requested.name.startsWith("multidex")) { - details.useVersion supportVersion - } - } - } -} - dependencies { - api "com.android.support:appcompat-v7:$supportVersion" - api "com.android.support:support-v4:$supportVersion" - api "com.android.support:mediarouter-v7:$supportVersion" + api 'androidx.appcompat:appcompat:1.5.1' + api 'androidx.legacy:legacy-support-v4:1.0.0' + api 'androidx.mediarouter:mediarouter:1.3.1' api "com.google.android.gms:play-services-cast-framework:$castVersion" } \ No newline at end of file diff --git a/caster/src/main/AndroidManifest.xml b/caster/src/main/AndroidManifest.xml index 1692838..eec70a8 100644 --- a/caster/src/main/AndroidManifest.xml +++ b/caster/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + createButtonActions() { } @Override - public List getAdditionalSessionProviders(Context context) { + public List getAdditionalSessionProviders(@NonNull Context context) { return null; } } diff --git a/caster/src/main/java/com/mradzinski/caster/Caster.java b/caster/src/main/java/com/mradzinski/caster/Caster.java index 767746e..df63b06 100644 --- a/caster/src/main/java/com/mradzinski/caster/Caster.java +++ b/caster/src/main/java/com/mradzinski/caster/Caster.java @@ -4,11 +4,6 @@ import android.app.Application; import android.content.Intent; import android.os.Bundle; -import android.support.annotation.LayoutRes; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.UiThread; -import android.support.v7.app.MediaRouteButton; import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -35,6 +30,12 @@ import java.util.ArrayList; import java.util.List; +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.UiThread; +import androidx.mediarouter.app.MediaRouteButton; + /** * Core class of Caster. It manages buttons/widgets and gives access to the media player. */ diff --git a/caster/src/main/java/com/mradzinski/caster/CasterActivity.java b/caster/src/main/java/com/mradzinski/caster/CasterActivity.java index 5f85da9..7274b57 100644 --- a/caster/src/main/java/com/mradzinski/caster/CasterActivity.java +++ b/caster/src/main/java/com/mradzinski/caster/CasterActivity.java @@ -1,12 +1,13 @@ package com.mradzinski.caster; import android.os.Bundle; -import android.support.annotation.CallSuper; -import android.support.annotation.IdRes; -import android.support.annotation.Nullable; -import android.support.v7.app.AppCompatActivity; import android.view.Menu; +import androidx.annotation.CallSuper; +import androidx.annotation.IdRes; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + /** * Extensible {@link AppCompatActivity}, which helps with setting widgets */ diff --git a/caster/src/main/java/com/mradzinski/caster/CasterNoOp.java b/caster/src/main/java/com/mradzinski/caster/CasterNoOp.java index 7a03ede..7a50df1 100644 --- a/caster/src/main/java/com/mradzinski/caster/CasterNoOp.java +++ b/caster/src/main/java/com/mradzinski/caster/CasterNoOp.java @@ -1,10 +1,11 @@ package com.mradzinski.caster; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.app.MediaRouteButton; import android.view.Menu; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.mediarouter.app.MediaRouteButton; + class CasterNoOp extends Caster { private CasterPlayer casterPlayer; diff --git a/caster/src/main/java/com/mradzinski/caster/CasterPlayer.java b/caster/src/main/java/com/mradzinski/caster/CasterPlayer.java index 83fa0a9..589cc71 100644 --- a/caster/src/main/java/com/mradzinski/caster/CasterPlayer.java +++ b/caster/src/main/java/com/mradzinski/caster/CasterPlayer.java @@ -1,14 +1,16 @@ package com.mradzinski.caster; -import android.support.annotation.MainThread; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.util.Log; import com.google.android.gms.cast.MediaInfo; import com.google.android.gms.cast.MediaLoadOptions; import com.google.android.gms.cast.framework.media.RemoteMediaClient; +import androidx.annotation.MainThread; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +@SuppressWarnings("unused") public class CasterPlayer { private static final String TAG = "Caster"; diff --git a/caster/src/main/java/com/mradzinski/caster/CasterPlayerNoOp.java b/caster/src/main/java/com/mradzinski/caster/CasterPlayerNoOp.java index 567e362..881f001 100644 --- a/caster/src/main/java/com/mradzinski/caster/CasterPlayerNoOp.java +++ b/caster/src/main/java/com/mradzinski/caster/CasterPlayerNoOp.java @@ -1,8 +1,9 @@ package com.mradzinski.caster; -import android.support.annotation.NonNull; import com.google.android.gms.cast.MediaInfo; +import androidx.annotation.NonNull; + class CasterPlayerNoOp extends CasterPlayer { @Override public void play() { diff --git a/caster/src/main/java/com/mradzinski/caster/ExpandedControlsStyle.java b/caster/src/main/java/com/mradzinski/caster/ExpandedControlsStyle.java index 2f84bcd..e25b820 100644 --- a/caster/src/main/java/com/mradzinski/caster/ExpandedControlsStyle.java +++ b/caster/src/main/java/com/mradzinski/caster/ExpandedControlsStyle.java @@ -10,10 +10,10 @@ package com.mradzinski.caster; -import android.support.annotation.ColorInt; - import java.io.Serializable; +import androidx.annotation.ColorInt; + public class ExpandedControlsStyle implements Serializable { @ColorInt private int seekbarLineColor; @ColorInt private int seekbarThumbColor; diff --git a/caster/src/main/java/com/mradzinski/caster/MediaData.java b/caster/src/main/java/com/mradzinski/caster/MediaData.java index 4dda68a..e0f904f 100644 --- a/caster/src/main/java/com/mradzinski/caster/MediaData.java +++ b/caster/src/main/java/com/mradzinski/caster/MediaData.java @@ -1,16 +1,19 @@ package com.mradzinski.caster; import android.net.Uri; -import android.support.annotation.IntDef; import android.text.TextUtils; + import com.google.android.gms.cast.MediaInfo; import com.google.android.gms.cast.MediaMetadata; import com.google.android.gms.common.images.WebImage; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.List; +import androidx.annotation.IntDef; + /** * Media information class */ diff --git a/caster/src/main/res/menu/caster_discovery.xml b/caster/src/main/res/menu/caster_discovery.xml index a6ae726..d138be4 100644 --- a/caster/src/main/res/menu/caster_discovery.xml +++ b/caster/src/main/res/menu/caster_discovery.xml @@ -4,6 +4,6 @@ \ No newline at end of file diff --git a/example/build.gradle b/example/build.gradle index e422f0a..0ab87a4 100644 --- a/example/build.gradle +++ b/example/build.gradle @@ -1,16 +1,16 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 27 - buildToolsVersion "27.0.3" + namespace 'com.mradzinski.casterexample' + compileSdkVersion 33 defaultConfig { applicationId "com.mradzinski.casterexample" minSdkVersion 17 - targetSdkVersion 27 + targetSdkVersion 33 versionCode 1 versionName "1.0.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } buildTypes { release { diff --git a/example/src/main/AndroidManifest.xml b/example/src/main/AndroidManifest.xml index 726a2c6..af9e3f7 100644 --- a/example/src/main/AndroidManifest.xml +++ b/example/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ - + @@ -12,7 +11,9 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - + diff --git a/example/src/main/java/com/mradzinski/casterexample/MainActivity.java b/example/src/main/java/com/mradzinski/casterexample/MainActivity.java index ff7f957..83ef8cd 100644 --- a/example/src/main/java/com/mradzinski/casterexample/MainActivity.java +++ b/example/src/main/java/com/mradzinski/casterexample/MainActivity.java @@ -1,17 +1,17 @@ package com.mradzinski.casterexample; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.app.MediaRouteButton; import android.util.Log; import android.view.Menu; -import android.view.View; import android.widget.Button; import com.mradzinski.caster.Caster; import com.mradzinski.caster.ExpandedControlsStyle; import com.mradzinski.caster.MediaData; +import androidx.appcompat.app.AppCompatActivity; +import androidx.mediarouter.app.MediaRouteButton; + public class MainActivity extends AppCompatActivity { private static final String VIMEO_URL = "Your M3U URL goes here :)"; @@ -43,19 +43,11 @@ private void setUpPlayButton() { playButton = findViewById(R.id.button_play); resumeButton = findViewById(R.id.button_resume); - playButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - caster.getPlayer().loadMediaAndPlay(createSampleMediaData()); - } - }); + playButton.setOnClickListener(v -> caster.getPlayer().loadMediaAndPlay(createSampleMediaData())); - resumeButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (caster.getPlayer().isPaused()) { - caster.getPlayer().togglePlayPause(); - } + resumeButton.setOnClickListener(v -> { + if (caster.getPlayer().isPaused()) { + caster.getPlayer().togglePlayPause(); } }); diff --git a/gradle.properties b/gradle.properties index aac7c9b..9e6fce1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,6 +9,8 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. +android.enableJetifier=true +android.useAndroidX=true org.gradle.jvmargs=-Xmx1536m # When configured, Gradle will run in incubating parallel mode. diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 13372ae..758de96 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bc47b4a..8fad3f5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Wed Feb 14 11:27:03 CET 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.5.1-all.zip diff --git a/gradlew b/gradlew index 9d82f78..cccdd3d 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,20 +6,38 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# 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 APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -30,6 +48,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,26 +59,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=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. @@ -85,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -150,11 +154,19 @@ if $cygwin ; then 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=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 8a0b282..f955316 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -8,14 +8,14 @@ @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 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= + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -46,10 +46,9 @@ echo location of your Java installation. goto fail :init -@rem Get command-line arguments, handling Windowz variants +@rem Get command-line arguments, handling Windows 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. @@ -60,11 +59,6 @@ set _SKIP=2 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