diff options
Diffstat (limited to 'app/src/main/java')
10 files changed, 164 insertions, 29 deletions
diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/MainActivity.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/MainActivity.java index 8084714..e98856b 100644 --- a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/MainActivity.java +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/MainActivity.java @@ -1,20 +1,26 @@ package me.brysonsteck.wiimmfiwatcher; -import android.os.Build; +import android.content.DialogInterface; +import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.WindowManager; -import androidx.annotation.RequiresApi; import androidx.appcompat.app.AppCompatActivity; import androidx.room.Room; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + import me.brysonsteck.wiimmfiwatcher.database.AppDatabase; +import me.brysonsteck.wiimmfiwatcher.fragments.AboutFragment; +import me.brysonsteck.wiimmfiwatcher.fragments.WatchCodeFragment; public class MainActivity extends AppCompatActivity { AppDatabase database; + final MaterialAlertDialogBuilder[] dialog = new MaterialAlertDialogBuilder[1]; + boolean shownUpdate = false; - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -47,6 +53,62 @@ public class MainActivity extends AppCompatActivity { }); } + + @Override + protected void onStart() { + super.onStart(); + final String[] newestRelease = {""}; + final boolean[] outdated = {false}; + Thread thread = new Thread() { + public void run() { + Updater updater = new Updater(); + updater.compareRelease(BuildConfig.VERSION_NAME); + if (updater.isOutdated()) { + System.out.println("---------------------------------------------------------------"); + System.out.println("\tA newer version of Wiimmfi Watcher is available! (" + updater.getNewestRelease() + ")"); + System.out.println("\tView the release notes and the source code here: " + updater.getGithubRelease()); + System.out.println("\t---------------------------------------------------------------"); + } else { + System.out.println("---------------------------------------------------------------"); + System.out.println("\t\t" + updater.getNewestRelease() + " is the latest release of Wiimmfi Watcher."); + System.out.println("\t\t---------------------------------------------------------------"); + } + newestRelease[0] = updater.getNewestRelease(); + outdated[0] = updater.isOutdated(); + } + }; + thread.start(); + try { + thread.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if (outdated[0] && !shownUpdate) { + shownUpdate = true; + final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object + new MaterialAlertDialogBuilder(this) + .setTitle(R.string.update_title) + .setMessage(getResources().getString(R.string.update_message, newestRelease[0])) + .setNegativeButton(getResources().getString(R.string.update_negative), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + } + }) + .setPositiveButton(getResources().getString(R.string.update_positive), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + try { + startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName))); + } catch (android.content.ActivityNotFoundException anfe) { + startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName))); + } + } + }) + .show(); + } + + } + @Override protected void onStop() { super.onStop(); diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/Updater.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/Updater.java new file mode 100644 index 0000000..eb3e813 --- /dev/null +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/Updater.java @@ -0,0 +1,73 @@ +package me.brysonsteck.wiimmfiwatcher; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLConnection; + +public class Updater { + + public boolean outdated = false; + public String newestRelease; + public String githubRelease; + public String playStore = "https://play.google.com/store/apps/details?id=me.brysonsteck.wiimmfiwatcher"; + + public Updater() { + try { + String json = urlReader(); + JsonElement root = new JsonParser().parse(json); + JsonObject rootObj = root.getAsJsonObject(); + JsonElement softwareElement = rootObj.getAsJsonObject("wiimmfi-watcher"); + JsonObject softwareObj = softwareElement.getAsJsonObject(); + newestRelease = softwareObj.get("current-release").getAsString(); + newestRelease = newestRelease.replace("\"", ""); + githubRelease = softwareObj.get("github-release").getAsString(); + githubRelease = githubRelease.replace("\"", ""); + } catch (IOException e) { + System.out.println("An error has occurred while attempting to check for updates."); + e.printStackTrace(); + } + } + + public String urlReader() throws IOException { + URL website = new URL("https://brysonsteck.net/updates.json"); + URLConnection connection = website.openConnection(); + BufferedReader in = new BufferedReader( + new InputStreamReader( + connection.getInputStream())); + + StringBuilder response = new StringBuilder(); + String inputLine; + + while ((inputLine = in.readLine()) != null) + response.append(inputLine); + + in.close(); + + return response.toString(); + + } + + public void compareRelease(String deviceRelease) { + if (!deviceRelease.equals(newestRelease)) { + outdated = true; + } + } + + public boolean isOutdated() { + return outdated; + } + + public String getNewestRelease() { + return newestRelease; + } + + public String getGithubRelease() { + return githubRelease; + } +} diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/AboutFragment.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/fragments/AboutFragment.java index 87f3def..3047e85 100644 --- a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/AboutFragment.java +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/fragments/AboutFragment.java @@ -1,4 +1,4 @@ -package me.brysonsteck.wiimmfiwatcher; +package me.brysonsteck.wiimmfiwatcher.fragments; import android.annotation.SuppressLint; import android.content.res.Configuration; @@ -18,6 +18,9 @@ import androidx.fragment.app.Fragment; import com.google.android.material.appbar.MaterialToolbar; +import me.brysonsteck.wiimmfiwatcher.BuildConfig; +import me.brysonsteck.wiimmfiwatcher.R; + public class AboutFragment extends Fragment { View aboutButton; MaterialToolbar toolbar; diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/WatchCodeAdapter.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/fragments/WatchCodeAdapter.java index 7034888..400436b 100644 --- a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/WatchCodeAdapter.java +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/fragments/WatchCodeAdapter.java @@ -1,4 +1,4 @@ -package me.brysonsteck.wiimmfiwatcher; +package me.brysonsteck.wiimmfiwatcher.fragments; import android.app.ProgressDialog; import android.content.Context; @@ -18,6 +18,7 @@ import com.google.android.material.textview.MaterialTextView; import java.util.ArrayList; +import me.brysonsteck.wiimmfiwatcher.R; import me.brysonsteck.wiimmfiwatcher.model.FriendCode; import me.brysonsteck.wiimmfiwatcher.wiimmfi.WiimmfiActivity; diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/WatchCodeFragment.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/fragments/WatchCodeFragment.java index 01069b6..2687518 100644 --- a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/WatchCodeFragment.java +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/fragments/WatchCodeFragment.java @@ -1,4 +1,4 @@ -package me.brysonsteck.wiimmfiwatcher; +package me.brysonsteck.wiimmfiwatcher.fragments; import android.app.ProgressDialog; import android.content.Intent; @@ -20,6 +20,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.textview.MaterialTextView; +import me.brysonsteck.wiimmfiwatcher.R; import me.brysonsteck.wiimmfiwatcher.model.FriendCode; import me.brysonsteck.wiimmfiwatcher.viewmodel.FriendCodeViewModel; import me.brysonsteck.wiimmfiwatcher.wiimmfi.WiimmfiActivity; diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/Player.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/Player.java index fe9e072..257ee20 100644 --- a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/Player.java +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/Player.java @@ -1,15 +1,15 @@ package me.brysonsteck.wiimmfiwatcher.wiimmfi; public class Player { - String rosterNumber; - String miiName; - String friendCode; - String role; - String loginRegion; - String roomMatch; - String world; - String connFail; - String vr; - String br; - boolean watching; + public String rosterNumber; + public String miiName; + public String friendCode; + public String role; + public String loginRegion; + public String roomMatch; + public String world; + public String connFail; + public String vr; + public String br; + public boolean watching; } diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/RoomData.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/RoomData.java index 60ad7df..b5f6aaf 100644 --- a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/RoomData.java +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/RoomData.java @@ -14,7 +14,7 @@ public class RoomData { String roomHeader; String playerLink; String friendCode; - Exception error; + public Exception error; ArrayList<Player> players = new ArrayList<>(); String userAgent = "Wiimmfi Watcher for Android (https://github.com/brysonsteck/wiimmfi-watcher) Version " + BuildConfig.VERSION_NAME; diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/WiimmfiActivity.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/WiimmfiActivity.java index c0d4c9f..6936275 100644 --- a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/WiimmfiActivity.java +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/WiimmfiActivity.java @@ -5,7 +5,6 @@ import android.content.res.Configuration; import android.graphics.Color; import android.os.Bundle; import android.os.StrictMode; -import android.view.View; import androidx.appcompat.app.AppCompatActivity; import androidx.drawerlayout.widget.DrawerLayout; @@ -13,11 +12,10 @@ import androidx.drawerlayout.widget.DrawerLayout; import com.google.android.material.appbar.MaterialToolbar; import com.google.android.material.navigation.NavigationView; -import org.jsoup.*; - import java.util.ArrayList; import me.brysonsteck.wiimmfiwatcher.R; +import me.brysonsteck.wiimmfiwatcher.wiimmfi.fragments.RoomFragment; public class WiimmfiActivity extends AppCompatActivity { ArrayList<Player> players = new ArrayList<>(); diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/RoomAdapter.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomAdapter.java index 5538869..2840ce6 100644 --- a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/RoomAdapter.java +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomAdapter.java @@ -1,4 +1,4 @@ -package me.brysonsteck.wiimmfiwatcher.wiimmfi; +package me.brysonsteck.wiimmfiwatcher.wiimmfi.fragments; import android.annotation.SuppressLint; import android.content.Context; @@ -15,11 +15,10 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.card.MaterialCardView; -import org.jsoup.*; - import java.util.ArrayList; import me.brysonsteck.wiimmfiwatcher.R; +import me.brysonsteck.wiimmfiwatcher.wiimmfi.Player; public class RoomAdapter extends RecyclerView.Adapter<RoomAdapter.ViewHolder>{ String display; diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/RoomFragment.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomFragment.java index fc144aa..d6326f7 100644 --- a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/RoomFragment.java +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomFragment.java @@ -1,10 +1,8 @@ -package me.brysonsteck.wiimmfiwatcher.wiimmfi; +package me.brysonsteck.wiimmfiwatcher.wiimmfi.fragments; import android.os.Bundle; -import android.os.Looper; import android.view.View; import android.widget.TextView; -import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -15,11 +13,11 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.appbar.MaterialToolbar; import com.google.android.material.floatingactionbutton.FloatingActionButton; -import java.net.UnknownHostException; import java.util.ArrayList; -import java.util.Arrays; import me.brysonsteck.wiimmfiwatcher.R; +import me.brysonsteck.wiimmfiwatcher.wiimmfi.Player; +import me.brysonsteck.wiimmfiwatcher.wiimmfi.RoomData; public class RoomFragment extends Fragment { String display; |