diff --git a/app/build.gradle b/app/build.gradle index 1a0d49b..1b2233c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,12 +3,12 @@ plugins { } android { - compileSdkVersion 29 + compileSdkVersion 30 defaultConfig { applicationId "de.jg_cody.Teraplex" - minSdkVersion 16 - targetSdkVersion 29 + minSdkVersion 19 + targetSdkVersion 30 versionCode 1 versionName "1.0" multiDexEnabled true diff --git a/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java b/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java index 9c08184..2b84916 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java +++ b/app/src/main/java/de/jg_cody/Teraplex/MainActivity.java @@ -24,6 +24,7 @@ import android.os.Vibrator; import android.provider.MediaStore; import android.text.SpannableString; import android.text.style.ForegroundColorSpan; +import android.util.Base64; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.Menu; @@ -57,7 +58,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; -import java.util.Base64; import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -85,14 +85,15 @@ public class MainActivity extends AppCompatActivity { Map tabitems = new HashMap<>(); - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); - getWindow().setStatusBarColor(Color.TRANSPARENT); - getWindow().setNavigationBarColor(Color.BLUE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + getWindow().setStatusBarColor(Color.TRANSPARENT); + getWindow().setNavigationBarColor(Color.BLUE); + } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { getWindow().setStatusBarContrastEnforced(false); } @@ -477,7 +478,6 @@ public class MainActivity extends AppCompatActivity { } - @RequiresApi(api = Build.VERSION_CODES.O) @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -505,7 +505,7 @@ public class MainActivity extends AppCompatActivity { } Background.close(); SharedPreferences p = getSharedPreferences("appsettings", Context.MODE_PRIVATE); - p.edit().putString("Background", Base64.getEncoder().encodeToString(bOut.toByteArray())).apply(); + p.edit().putString("Background", Base64.encodeToString(bOut.toByteArray(), Base64.DEFAULT)).apply(); loadBackground(); startActivity(getIntent()); finish(); @@ -517,12 +517,11 @@ public class MainActivity extends AppCompatActivity { } - @RequiresApi(api = Build.VERSION_CODES.O) private void loadBackground() { SharedPreferences p = getSharedPreferences("appsettings", Activity.MODE_PRIVATE); String Background = p.getString("Background", null); ImageView I = findViewById(R.id.Background); - byte[] BA = Base64.getDecoder().decode(Background); + byte[] BA = Base64.decode(Background, Base64.DEFAULT); I.setImageBitmap(BitmapFactory.decodeByteArray(BA, 0, BA.length)); } diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/Credits/CreditsFragment.java b/app/src/main/java/de/jg_cody/Teraplex/ui/Credits/CreditsFragment.java index ab2e013..3ee19ea 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/Credits/CreditsFragment.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/Credits/CreditsFragment.java @@ -6,6 +6,7 @@ import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.os.Build; import android.os.Bundle; +import android.util.Base64; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -16,8 +17,6 @@ import androidx.annotation.RequiresApi; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; -import java.util.Base64; - import de.jg_cody.Teraplex.MainActivity; import de.jg_cody.Teraplex.R; @@ -25,7 +24,6 @@ public class CreditsFragment extends Fragment { private CreditsViewModel creditsViewModel; - @RequiresApi(api = Build.VERSION_CODES.O) public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { creditsViewModel = @@ -35,7 +33,7 @@ public class CreditsFragment extends Fragment { String Background = p.getString("Background", null); if (Background != null) { ImageView I = root.findViewById(R.id.Background); - byte[] BA = Base64.getDecoder().decode(Background); + byte[] BA = Base64.decode(Background, Base64.DEFAULT); I.setImageDrawable(new BitmapDrawable(getResources(), MainActivity.scaleCenterCrop(BitmapFactory.decodeByteArray(BA, 0, BA.length), MainActivity.getScreenHeight(), MainActivity.getScreenWidth()))); I.setScaleType(ImageView.ScaleType.CENTER_CROP); } diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/Einstellungen/EinstellungenFragment.java b/app/src/main/java/de/jg_cody/Teraplex/ui/Einstellungen/EinstellungenFragment.java index 4284e37..9fe3324 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/Einstellungen/EinstellungenFragment.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/Einstellungen/EinstellungenFragment.java @@ -13,6 +13,7 @@ import android.media.MediaPlayer; import android.os.Build; import android.os.Bundle; import android.os.Vibrator; +import android.util.Base64; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -24,7 +25,6 @@ import androidx.annotation.RequiresApi; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; -import java.util.Base64; import java.util.Locale; import java.util.Objects; @@ -37,7 +37,6 @@ public class EinstellungenFragment extends Fragment { private EinstellungenViewModel einstellungenViewModel; - @RequiresApi(api = Build.VERSION_CODES.O) public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { einstellungenViewModel = @@ -47,7 +46,7 @@ public class EinstellungenFragment extends Fragment { String Background = p.getString("Background", null); if (Background != null) { ImageView I = root.findViewById(R.id.Background); - byte[] BA = Base64.getDecoder().decode(Background); + byte[] BA = Base64.decode(Background, Base64.DEFAULT); I.setImageDrawable(new BitmapDrawable(getResources(), MainActivity.scaleCenterCrop(BitmapFactory.decodeByteArray(BA, 0, BA.length), MainActivity.getScreenHeight(), MainActivity.getScreenWidth()))); I.setScaleType(ImageView.ScaleType.CENTER_CROP); } diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/Konsole/KonsoleFragment.java b/app/src/main/java/de/jg_cody/Teraplex/ui/Konsole/KonsoleFragment.java index 9d59037..5e2fd4f 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/Konsole/KonsoleFragment.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/Konsole/KonsoleFragment.java @@ -11,6 +11,7 @@ import android.media.MediaPlayer; import android.os.Build; import android.os.Bundle; import android.os.Vibrator; +import android.util.Base64; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -24,7 +25,6 @@ import androidx.annotation.RequiresApi; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; -import java.util.Base64; import java.util.Objects; import de.jg_cody.Teraplex.MainActivity; @@ -46,7 +46,6 @@ public class KonsoleFragment extends Fragment { private KonsoleViewModel konsoleViewModel; - @RequiresApi(api = Build.VERSION_CODES.O) public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { konsoleViewModel = @@ -56,7 +55,7 @@ public class KonsoleFragment extends Fragment { String Background = p.getString("Background", null); if (Background != null) { ImageView I = root.findViewById(R.id.Background); - byte[] BA = Base64.getDecoder().decode(Background); + byte[] BA = Base64.decode(Background, Base64.DEFAULT); I.setImageDrawable(new BitmapDrawable(getResources(), MainActivity.scaleCenterCrop(BitmapFactory.decodeByteArray(BA, 0, BA.length), MainActivity.getScreenHeight(), MainActivity.getScreenWidth()))); I.setScaleType(ImageView.ScaleType.CENTER_CROP); } diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/Tabs/TabsFragment.java b/app/src/main/java/de/jg_cody/Teraplex/ui/Tabs/TabsFragment.java index cd6a5da..b434029 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/Tabs/TabsFragment.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/Tabs/TabsFragment.java @@ -8,6 +8,7 @@ import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.os.Build; import android.os.Bundle; +import android.util.Base64; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -29,7 +30,6 @@ import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; -import java.util.Base64; import java.util.Objects; import de.jg_cody.Teraplex.AddButtonDialogSingle; @@ -69,7 +69,6 @@ public class TabsFragment extends Fragment implements AddButtonDialogSingle.AddB this.tabname = tabname; } - @RequiresApi(api = Build.VERSION_CODES.O) public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { tabsViewModel = @@ -79,7 +78,7 @@ public class TabsFragment extends Fragment implements AddButtonDialogSingle.AddB String Background = p.getString("Background", null); if (Background != null) { ImageView I = root.findViewById(R.id.Background); - byte[] BA = Base64.getDecoder().decode(Background); + byte[] BA = Base64.decode(Background, Base64.DEFAULT); I.setImageDrawable(new BitmapDrawable(getResources(), MainActivity.scaleCenterCrop(BitmapFactory.decodeByteArray(BA, 0, BA.length), MainActivity.getScreenHeight(), MainActivity.getScreenWidth()))); I.setScaleType(ImageView.ScaleType.CENTER_CROP); } @@ -264,7 +263,6 @@ public class TabsFragment extends Fragment implements AddButtonDialogSingle.AddB ; } - @RequiresApi(api = Build.VERSION_CODES.KITKAT) public void save() throws JSONException { JSONArray listItems2 = new JSONArray(); for (ListItem Item : listAdapter.getObjects()) { diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/home/HomeFragment.java b/app/src/main/java/de/jg_cody/Teraplex/ui/home/HomeFragment.java index b4fee2f..7bdeb5d 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/home/HomeFragment.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/home/HomeFragment.java @@ -10,6 +10,7 @@ import android.media.MediaPlayer; import android.os.Build; import android.os.Bundle; import android.os.Vibrator; +import android.util.Base64; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -24,7 +25,6 @@ import androidx.annotation.RequiresApi; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; -import java.util.Base64; import java.util.Objects; import de.jg_cody.Teraplex.MainActivity; @@ -48,7 +48,6 @@ public class HomeFragment extends Fragment { private HomeViewModel homeViewModel; - @RequiresApi(api = Build.VERSION_CODES.O) public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { SharedPreferences prefs = requireContext().getSharedPreferences("appsettings", Context.MODE_PRIVATE); @@ -63,7 +62,7 @@ public class HomeFragment extends Fragment { String Background = p.getString("Background", null); if (Background != null) { ImageView I = root.findViewById(R.id.Background); - byte[] BA = Base64.getDecoder().decode(Background); + byte[] BA = Base64.decode(Background, Base64.DEFAULT); I.setImageDrawable(new BitmapDrawable(getResources(), MainActivity.scaleCenterCrop(BitmapFactory.decodeByteArray(BA, 0, BA.length), MainActivity.getScreenHeight(), MainActivity.getScreenWidth()))); I.setScaleType(ImageView.ScaleType.CENTER_CROP); } diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/rooms/ListItem.java b/app/src/main/java/de/jg_cody/Teraplex/ui/rooms/ListItem.java index a8e9ff8..d0afea6 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/rooms/ListItem.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/rooms/ListItem.java @@ -15,11 +15,14 @@ public abstract class ListItem { this.type = type; } - @RequiresApi(api = Build.VERSION_CODES.KITKAT) public JSONObject toJson() throws JSONException { JSONObject toJson = new JSONObject(); toJson.put("type", type); - toJson.put("strings", new JSONArray(getStrings())); + JSONArray a = new JSONArray(); + for(String s : getStrings()) { + a.put(s); + } + toJson.put("strings", a); return toJson; } diff --git a/app/src/main/java/de/jg_cody/Teraplex/ui/zeitsteuerung/ZeitsteuerungFragment.java b/app/src/main/java/de/jg_cody/Teraplex/ui/zeitsteuerung/ZeitsteuerungFragment.java index b3a23f4..3151a0d 100644 --- a/app/src/main/java/de/jg_cody/Teraplex/ui/zeitsteuerung/ZeitsteuerungFragment.java +++ b/app/src/main/java/de/jg_cody/Teraplex/ui/zeitsteuerung/ZeitsteuerungFragment.java @@ -6,6 +6,7 @@ import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.os.Build; import android.os.Bundle; +import android.util.Base64; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -17,7 +18,6 @@ import androidx.annotation.RequiresApi; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; -import java.util.Base64; import java.util.Objects; import de.jg_cody.Teraplex.MainActivity; @@ -28,7 +28,6 @@ public class ZeitsteuerungFragment extends Fragment { private ZeitsteuerungViewModel zeitsteuerungViewModel; TimePicker timePicker; - @RequiresApi(api = Build.VERSION_CODES.O) public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { zeitsteuerungViewModel = @@ -38,7 +37,7 @@ public class ZeitsteuerungFragment extends Fragment { String Background = p.getString("Background", null); if (Background != null) { ImageView I = root.findViewById(R.id.Background); - byte[] BA = Base64.getDecoder().decode(Background); + byte[] BA = Base64.decode(Background, Base64.DEFAULT); I.setImageDrawable(new BitmapDrawable(getResources(), MainActivity.scaleCenterCrop(BitmapFactory.decodeByteArray(BA, 0, BA.length), MainActivity.getScreenHeight(), MainActivity.getScreenWidth()))); I.setScaleType(ImageView.ScaleType.CENTER_CROP); } diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 0000000..960aeba --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,25 @@ + + + #EE0000 + #EE0000 + #B30000 + #DA0303 + #FF0088FF + #FFE500 + #00FFF7 + #FF7700 + #D900FF + #00FF0A + #870101 + #000000 + #FFFFFF + + #000000 + #FFFFFF + + #00EE00 + #00EE00 + #00B300 + #03DA03 + #018701 + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f745424..960aeba 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -22,5 +22,4 @@ #00B300 #03DA03 #018701 - \ No newline at end of file diff --git a/build.gradle b/build.gradle index 2dcabb6..407a26d 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { maven { url 'https://maven.google.com/' } } dependencies { - classpath 'com.android.tools.build:gradle:4.2.1' + classpath 'com.android.tools.build:gradle:4.2.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files