diff options
21 files changed, 241 insertions, 73 deletions
@@ -1,42 +1,30 @@ # Wiimmfi Watcher -Wiimmfi Watcher is an Android application that allows you to watch Mario Kart Wii gameplay by simply entering your friend code. This application can be found on the Google Play Store [here!](https://play.google.com/store/apps/details?id=me.brysonsteck.wiimmfiwatcher) This app can be used in English, German, French, Italian, Japanese, Spanish, Portuguese and Korean. +Wiimmfi Watcher is an unofficial Android application that allows you to watch Mario Kart Wii gameplay by simply entering your friend code. This application can be found on the Google Play Store [here!](https://play.google.com/store/apps/details?id=me.brysonsteck.wiimmfiwatcher) This app can be used in several different languages. This application is currently being maintained by myself out of love for Mario Kart Wii and appreciation for the developers of Wiimmfi. I am in no way affiliated with Wiimmfi or any of the Wiimmfi developers. ## Screenshots -![](screenshots/sc-1.png) -![](screenshots/sc-1-dark.png) -![](screenshots/sc-2.png) -![](screenshots/sc-3.png) -![](screenshots/sc-3-dark.png) -![](screenshots/sc-4.png) -![](screenshots/sc-5.png) -![](screenshots/sc-6.png) -![](screenshots/sc-7.png) +![Main Screen](screenshots/sc-1.png) +![Main Screen in Dark Mode (for versions of Android that support it)](screenshots/sc-1-dark.png) +![Simply insert the friend code...](screenshots/sc-2.png) +![... And there is the room!](screenshots/sc-3.png) +![Dark Mode variant of the room screen.](screenshots/sc-3-dark.png) +![Press the menu button on the right for more display options.](screenshots/sc-4.png) +![Selecting an option changes the data on the right.](screenshots/sc-5.png) +![The app shows you what data is being displayed in the menu.](screenshots/sc-6.png) +![You can change data views at any point.](screenshots/sc-7.png) ## Download You can visit the Google Play Store to download the most recent and stable version [here!](https://play.google.com/store/apps/details?id=me.brysonsteck.wiimmfiwatcher) You are also free to clone the repository and download the source code for the most stable release in the Releases tab if you would like to build it from scratch. -## Feedback +## Feedback and Bugs This is officially my first project and Google Play app that I'm maintaining, so if you have any feedback about my work, I would love to hear it! You can create an issue tagged "feedback", or you can fill out this [Google Form](https://docs.google.com/forms/d/e/1FAIpQLSd6qCONAP2tsbHPgzu_CdZcHVHL5nx7q0XFqrVfExEc84kqUQ/viewform). I also have a section in my TODO list under "Features I would like to add" for things I am already considering adding to future releases. -## Bugs - -If you found any bugs in the `master` branch (i. e. the most recent Google Play release), **PLEASE READ MY [TODO LIST](https://github.com/brysonsteck/wiimmfi-watcher/blob/dev/TODO.md) FIRST** to make sure that the bug you found isn't something I'm already aware of. Once you have made sure of that, you can then create an issue or fill out this [Google Form](https://docs.google.com/forms/d/e/1FAIpQLSd6qCONAP2tsbHPgzu_CdZcHVHL5nx7q0XFqrVfExEc84kqUQ/viewform). - -## Devices - -Wiimmfi Watcher has been officially tested and confirmed to work on the following devices: -* x86_64 emulated Pixel 4 (Android 5.0.2) by brysonsteck -* x86_64 emulated Pixel 4 (Android 11) by brysonsteck -* x86_64 emulated Nexus 7 (Android 10) by brysonsteck -* x86_64 emulated Nexus 10 (Android 10) by brysonsteck -* x86_64 emulated Nexus 7 (Android 5.0.2) by brysonsteck -* x86_64 emulated Nexus 10 (Android 5.0.2) by brysonsteck +Additionally, If you find any bugs in the app (the `master` branch contains the same code as the latest release), you can create an issue here on GitHub or fill out the Google Form linked before in a similar manner. Please only submit bugs that pertain to the [most recent release.](https://github.com/brysonsteck/wiimmfi-watcher/releases) ## Donations @@ -44,7 +32,7 @@ This application is completely free, ad-less and open source. That means that no If you'd like to donate to this project, I'd ask that you first [donate to Wiimmfi.](https://wiimmfi.de/donate) This app nor my 3,069+ hours of fun on their service would not be possible without them. -Once you donate to them or you choose not to (why?? :( ), then here are ways you can donate to me: +Once you donate to them or you choose not to (why?? :( how sad), then here are ways you can donate to me: * [PayPal](https://www.paypal.com/donate/?business=steck.bryson%40gmail.com&item_name=Bryson+Steck¤cy_code=USD&Z3JncnB0=) * Bitcoin: 1Kbnp5JMTKd7a3Zs2WWm2JMCjfVb5tpcky * Litecoin: LRboJVNzoJCjXHmwN6RQgyvYEQjjaFzEA7 @@ -52,8 +40,26 @@ Once you donate to them or you choose not to (why?? :( ), then here are ways you Please note that donations are **NOT** required and does **NOT** add or remove functionality from the app. +## License + +© 2021 Bryson Steck. Wiimmfi Watcher is licensed under the [GPL-3.0](LICENSE). + +Wiimmfi Watcher is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Wiimmfi Watcher is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Wiimmfi Watcher. If not, see <https://www.gnu.org/licenses/>. + ## Credits Wiimmfi Watcher is made possible by the following: -* [Jsoup](https://jsoup.org) HTML parser, version 1.13.1 - +* [Wiimmfi](https://wiimmfi.de) for being the complete backbone of this app. +* [Jsoup](https://jsoup.org) version 1.13.1, which powers getting the information from Wiimmfi with HTML parsing. (This will soon be replaced in favor of JSON parsing.) +* [Gson](https://github.com/google/gson) version 2.8.7, which powers the updater. @@ -4,27 +4,20 @@ This list is not accurate. Instead, checkout the TODO list on the `dev` branch [ # TODO These are issues in Wiimmfi Watcher I am at least aware of. Please **DO NOT** submit a bug report on the Google Form or an issue here on GitHub if it is mentioned on this list, unless you found a way that the bug can crash the app. -## Completed For Release 1.1.3 -* Added language translations for Korean, Portuguese and Spanish. -* Fixed a bug where the error message that appears does not disappear when clicking on a recent friend code. -* Added a new dialog between searching for a friend code and the watcher screen. -* Fixed a bug where the internal Java error on the watcher screen wouldn't show after pressing the refresh button at least once. -* Fixed a bug where the final button of the recent friend codes wouldn't show if it reached past the bottom of the screen, especially with devices that have the software navigation bar. -* Fixed a bug in the English version of the app where the "License" portion of the about page was not formatted correctly. +### Completed For Release 1.1.4 +* Added an updater to make sure subsequent releases are up to date +* Implement the updater into the UI -## Working On +### Working On * Create a better looking header for the watcher activity * Add 'sections' I guess??? -* Adding the option to toggle dark mode manually so older devices can have that privledge as well -## Aware Of -* The about page causes part of the screen to get cut off as the animation plays (only if there are not a lot of recent friend codes present) -* The navigation menu in Dark Mode is messed up +### Aware Of +* The about fragment causes part of the screen to get cut off as the animation plays when returning to the main fragment (only if there are a few recent friend codes) +* The navigation menu in Dark Mode is messed up (colors) * The selected player detail text and icon is black * The highlight color is barely visible -* Pressing the watch or refresh buttons cause the app to hang until refreshing is completed. - * Working with threads should fix this - * Adding a dialog helps make it look like the app is working for now +* Adding the option to toggle dark mode manually so older devices can have that privledge as well # Features I would like to add * The watcher activity does not refresh automatically like the official website does diff --git a/app/build.gradle b/app/build.gradle index 20b68a8..3e0d1a3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId "me.brysonsteck.wiimmfiwatcher" minSdkVersion 19 targetSdkVersion 30 - versionCode 5 - versionName "1.1.3" + versionCode 6 + versionName "1.1.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -33,6 +33,7 @@ android { } dependencies { + implementation 'com.google.code.gson:gson:2.8.6' def lifecycle_version = "2.3.1" // ViewModel 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; diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 05fc857..5e0cbeb 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -30,4 +30,8 @@ <string name="version_header">Ausführung</string> <string name="version">Sie verwenden die Wiimmfi Watcher Version %1$s aus. Sie können die Versionshinweise für diese Version <![CDATA[<a href="https://github.com/brysonsteck/wiimmfi-watcher/releases/">hier</a>]]> anzeigen.</string> <string name="locating_text">Suchen von %1$s…</string> + <string name="update_positive">Aktualisieren</string> + <string name="update_negative">Später</string> + <string name="update_title">Ein neues Update ist verfügbar!</string> + <string name="update_message">Eine neue Version von Wiimmfi Watcher ist im Play Store verfügbar (Version %1$s)! Sie können es herunterladen, indem Sie auf \"Aktualisieren\" klicken.</string> </resources>
\ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 29c9f22..08be5f5 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -30,4 +30,8 @@ <string name="license">© Copyright 2021 Bryson Steck Wiimmfi Watcher está disponible bajo la Licencia Pública General de GNU Versión 3. Puede ver la licencia <a href="https://github.com/brysonsteck/wiimmfi-watcher/tree/master/LICENSE">aquí.</a>\n\nWiimmfi Watcher is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nWiimmfi Watcher is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with Wiimmfi Watcher. If not, see <<a href="https://www.gnu.org/licenses/">https://www.gnu.org/licenses/</a>>.</string> <string name="contact">Si desea comunicarse conmigo por cualquier motivo que no esté relacionado con los informes de errores o esta aplicación en general, puede comunicarse conmigo por correo electrónico a <a href='mailto:steck.bryson@gmail.com'>steck.bryson@gmail.com</a> o en Discord a bryzinga#9971.</string> <string name="locating_text">Localizando %1$s…</string> + <string name="update_positive">Actualizar</string> + <string name="update_negative">Luego</string> + <string name="update_title">¡Hay una nueva actualización disponible!</string> + <string name="update_message">¡Hay una nueva versión de Wiimmfi Watcher disponible en Play Store (versión %1$s)! Puedes descargarlo presionando \"Actualizar\".</string> </resources>
\ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 4109ad8..9b37214 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -37,5 +37,9 @@ <string name="version_header">Version</string> <string name="version">Vous exécutez la version %1$s de Wiimmfi Watcher. Vous pouvez consulter les notes de publication de cette version <![CDATA[<a href="https://github.com/brysonsteck/wiimmfi-watcher/releases/">ici.</a>]]></string> <string name="locating_text">Localisation de %1$s…</string> + <string name="update_positive">réactualiser</string> + <string name="update_negative">Ensuite</string> + <string name="update_title">Une nouvelle mise à jour est disponible!</string> + <string name="update_message">Une nouvelle version de Wiimmfi Watcher est disponible sur le Play Store (version %1$s)! Vous pouvez le télécharger en appuyant sur \"Mettre à jour\".</string> </resources>
\ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index d094f92..00de712 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -30,4 +30,8 @@ <string name="version_header">Versione</string> <string name="version">Stai eseguendo Wiimmfi Watcher versione %1$s. È possibile visualizzare le note di rilascio per questa versione <![CDATA[<a href="https://github.com/brysonsteck/wiimmfi-watcher/releases/">qui.</a>]]></string> <string name="locating_text">Individuazione %1$s…</string> + <string name="update_positive">Aggiornare</string> + <string name="update_negative">Dopo</string> + <string name="update_title">È disponibile un nuovo aggiornamento!</string> + <string name="update_message">Una nuova versione di Wiimmfi Watcher è disponibile sul Play Store (versione %1$s)! Puoi scaricarlo premendo \"Aggiorna\".</string> </resources>
\ No newline at end of file diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index cc89096..6e120cc 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -30,4 +30,8 @@ <string name="version_header">バージョン</string> <string name="version">Wiimmfi Watcherバージョン%1$sを実行しています。このバージョンのリリースノートは<![CDATA[<a href="https://github.com/brysonsteck/wiimmfi-watcher/releases/">こちら</a>]]>でご覧いただけます。</string> <string name="locating_text">%1$sの検索…</string> + <string name="update_positive">更新</string> + <string name="update_negative">後で</string> + <string name="update_title">新しいアップデートが利用可能です!</string> + <string name="update_message">Wiimmfiウォッチャーの新しいバージョンがPlayストアで入手できます(バージョン %1$s!「更新」を押すとダウンロードできます。</string> </resources>
\ No newline at end of file diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index bde3c68..0343262 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -30,4 +30,8 @@ <string name="license">© Copyright 2021 Bryson Steck\n\nWiimmfi Watcher는 GNU General Public License 버전 3에 따라 사용할 수 있습니다. <a href="https://github.com/brysonsteck/wiimmfi-watcher/tree/master/LICENSE">여기</a>에서 라이센스를 볼 수 있습니다.\n\nWiimmfi Watcher is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nWiimmfi Watcher is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with Wiimmfi Watcher. If not, see <<a href="https://www.gnu.org/licenses/">https://www.gnu.org/licenses/</a>>.</string> <string name="contact">일반적으로 버그 보고서 나이 앱과 관련이없는 이유로 저를 붙잡 으려면 <a href='mailto:steck.bryson@gmail.com'>steck.bryson@gmail.com</a>으로 이메일을 보내거나 bryzinga#9971로 Discord를 통해 저에게 연락 할 수 있습니다.</string> <string name="locating_text">%1$s 찾는 중…</string> + <string name="update_positive">최신 정보</string> + <string name="update_negative">나중</string> + <string name="update_title">새로운 업데이트가 있습니다!</string> + <string name="update_message">Play 스토어 (버전 %1$s)에서 Wiimmfi Watcher의 새 버전을 사용할 수 있습니다! \"업데이트\"를 눌러 다운로드 할 수 있습니다.</string> </resources>
\ No newline at end of file diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index d8aa961..4b7611d 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -30,4 +30,8 @@ <string name="license">© Copyright 2021 Bryson Steck\n\nWiimmfi Watcher está disponível sob a Licença Pública Geral GNU Versão 3. Você pode visualizar a licença <a href="https://github.com/brysonsteck/wiimmfi-watcher/tree/master/LICENSE">aqui.</a>\n\nWiimmfi Watcher is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nWiimmfi Watcher is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with Wiimmfi Watcher. If not, see <<a href="https://www.gnu.org/licenses/">https://www.gnu.org/licenses/</a>>.</string> <string name="contact">Se você quiser entrar em contato comigo por qualquer motivo não relacionado a relatórios de bugs ou a este aplicativo em geral, pode entrar em contato comigo por e-mail <a href='mailto:steck.bryson@gmail.com'>steck.bryson@gmail.com</a> ou no Discord em bryzinga#9971.</string> <string name="locating_text">Localizando %1$s…</string> + <string name="update_positive">Atualizar</string> + <string name="update_negative">Mais tarde</string> + <string name="update_title">Uma nova atualização está disponível!</string> + <string name="update_message">Uma nova versão do Wiimmfi Watcher está disponível na Play Store (versão %1$s)! Você pode baixá-lo pressionando \"Atualizar\".</string> </resources>
\ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bb30d2a..05fc69e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -37,4 +37,9 @@ <string name="header_null_error">This player is not online, not inside a room or does not exist. Click the refresh button to try again, or click on the back button to enter a different friend code.</string> <string name="jsoup_error">Whoops! Wiimmfi Watcher was unable to connect to the Wiimmfi servers. This could be that you are not connected to the internet, but it could be something else. Here was the error:\n\n%1$s\n\nIf the error is along the lines of \"Unable to resolve host\" or \"Timeout\", you are probably having internet issues. Make sure you are connected to the internet then click the refresh button or press back to watch a new friend code.\n\nIf the error is something other than that or if the error persists, make sure that Wiimmfi\'s website is currently running. Otherwise, please screenshot this screen and submit a bug report by clicking the About icon on the main page.</string> <string name="locating_text">Locating %1$s…</string> + + <string name="update_title">A new update is available!</string> + <string name="update_message">A new version of Wiimmfi Watcher is available on the Play Store (version %1$s)! You can download it by pressing \"Update\".</string> + <string name="update_positive">Update</string> + <string name="update_negative">Later</string> </resources>
\ No newline at end of file |