diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 194be8a..d2901f3 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -74,6 +74,7 @@ dependencies {
implementation(libs.androidx.lifecycle.viewmodel.ktx)
implementation(libs.androidx.datastore.rxjava3)
implementation(libs.androidx.datastore.preferences)
+ implementation(libs.androidx.work)
testImplementation(libs.junit)
@@ -85,4 +86,7 @@ dependencies {
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
+
+ implementation(libs.moshi)
+ implementation(libs.okhttp3)
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5bfa0ae..3a22231 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,6 +4,7 @@
+
+ android:supportsRtl="false"
+ android:theme="@style/Theme.Android101"
+ android:usesCleartextTraffic="true"
+ >
(R.id.P2SettingPage)
+ if (fl != null) {
+ if (fl.visibility == View.VISIBLE) {
+ return super.dispatchTouchEvent(ev)
+ }
+ }
+
+ val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
+ imm.hideSoftInputFromWindow(currentFocus!!.windowToken, 0)
+ }
+ return super.dispatchTouchEvent(ev)
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/uk/kagurach/android101/MainActivity.java b/app/src/main/java/uk/kagurach/android101/MainActivity.java
index 96724b6..26fff29 100644
--- a/app/src/main/java/uk/kagurach/android101/MainActivity.java
+++ b/app/src/main/java/uk/kagurach/android101/MainActivity.java
@@ -16,7 +16,6 @@ import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
@@ -129,7 +128,7 @@ public class MainActivity extends KaBaseActivity {
@Override
public void onClick(View v) {
- Intent intent = new Intent(v.getContext(),SettingPage.class);
+ Intent intent = new Intent(v.getContext(), SettingPage.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
diff --git a/app/src/main/java/uk/kagurach/android101/MainActivity2.java b/app/src/main/java/uk/kagurach/android101/MainActivity2.java
index ca234f9..d18b5f5 100644
--- a/app/src/main/java/uk/kagurach/android101/MainActivity2.java
+++ b/app/src/main/java/uk/kagurach/android101/MainActivity2.java
@@ -5,7 +5,6 @@ import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.util.TypedValue;
-import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
@@ -16,7 +15,6 @@ import android.widget.ImageView;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
@@ -30,7 +28,7 @@ public class MainActivity2 extends KaBaseActivity {
PageHelper pageHelper;
int _text_size = 70;
- int _text_color = Color.rgb(0,0,0);
+ int _text_color = Color.rgb(0, 0, 0);
String _text_unit = "sp";
@Override
@@ -158,10 +156,10 @@ public class MainActivity2 extends KaBaseActivity {
}
- private void updateCurrentSettingShower(){
+ private void updateCurrentSettingShower() {
TextView tv = findViewById(R.id.P2SettingResult);
String sb = "Color = " +
- new ColorHelper().toString(_text_color,"#",false) +
+ new ColorHelper().toString(_text_color, "#", false) +
"; TextSize = " +
_text_size +
"." +
@@ -169,7 +167,7 @@ public class MainActivity2 extends KaBaseActivity {
tv.setText(sb);
}
- class SettingButtonHandler implements View.OnClickListener{
+ class SettingButtonHandler implements View.OnClickListener {
@Override
public void onClick(View v) {
FrameLayout fl = findViewById(R.id.P2SettingPage);
@@ -182,7 +180,7 @@ public class MainActivity2 extends KaBaseActivity {
}
}
- class CloseSettingButtonHandler implements View.OnClickListener{
+ class CloseSettingButtonHandler implements View.OnClickListener {
@Override
public void onClick(View v) {
FrameLayout fl = findViewById(R.id.P2SettingPage);
@@ -197,7 +195,7 @@ public class MainActivity2 extends KaBaseActivity {
}
}
- class TestColorButtonHandler implements View.OnClickListener{
+ class TestColorButtonHandler implements View.OnClickListener {
@Override
public void onClick(View v) {
ImageView imageView = findViewById(R.id.P2ColorShower);
@@ -213,8 +211,8 @@ public class MainActivity2 extends KaBaseActivity {
g_edit.getText().toString().isEmpty() ||
b_edit.getText().toString().isEmpty()) {
ToastHelper.SmartToast.ShowToast("""
- Please input R,G,B within 0-255
- 请在大小选择下方输入0-255的RGB""",
+ Please input R,G,B within 0-255
+ 请在大小选择下方输入0-255的RGB""",
v.getContext());
}
@@ -235,23 +233,5 @@ public class MainActivity2 extends KaBaseActivity {
}
}
}
-
- // Fix: hide keyboard
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- if (getCurrentFocus() != null) {
- // If the Setting float window shows, do nothing
- FrameLayout fl = findViewById(R.id.P2SettingPage);
- if (fl!=null){
- if (fl.getVisibility() == View.VISIBLE){
- return super.dispatchTouchEvent(ev);
- }
- }
-
- InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
- }
- return super.dispatchTouchEvent(ev);
- }
}
diff --git a/app/src/main/java/uk/kagurach/android101/Page3.java b/app/src/main/java/uk/kagurach/android101/Page3.java
index de9fac9..b953519 100644
--- a/app/src/main/java/uk/kagurach/android101/Page3.java
+++ b/app/src/main/java/uk/kagurach/android101/Page3.java
@@ -9,7 +9,6 @@ import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
diff --git a/app/src/main/java/uk/kagurach/android101/Page4.java b/app/src/main/java/uk/kagurach/android101/Page4.java
index c890ec5..b9ab499 100644
--- a/app/src/main/java/uk/kagurach/android101/Page4.java
+++ b/app/src/main/java/uk/kagurach/android101/Page4.java
@@ -1,12 +1,9 @@
package uk.kagurach.android101;
import android.content.ComponentName;
-import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.view.MotionEvent;
import android.view.View;
-import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
@@ -14,7 +11,6 @@ import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
@@ -80,15 +76,6 @@ public class Page4 extends KaBaseActivity {
mLauncher.launch(intent);
}
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- if (getCurrentFocus() != null) {
- InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
- }
- return super.dispatchTouchEvent(ev);
- }
-
private final class ButtonHandler implements View.OnClickListener {
@Override
public void onClick(View v) {
@@ -101,7 +88,7 @@ public class Page4 extends KaBaseActivity {
public void onClick(View v) {
String receivierPath = "uk.kagurach.android101.vibrationBroadcastReceiver.vibrationBroadcastReceiver";
Intent intent = new Intent(vibrationBroadcastReceiver.VIBRATION_ACTION_NAME);
- ComponentName componentName = new ComponentName("uk.kagurach.android101",receivierPath);
+ ComponentName componentName = new ComponentName("uk.kagurach.android101", receivierPath);
intent.setComponent(componentName);
sendBroadcast(intent);
}
diff --git a/app/src/main/java/uk/kagurach/android101/Page5.java b/app/src/main/java/uk/kagurach/android101/Page5.java
index 4f7563a..ff53f19 100644
--- a/app/src/main/java/uk/kagurach/android101/Page5.java
+++ b/app/src/main/java/uk/kagurach/android101/Page5.java
@@ -1,18 +1,14 @@
package uk.kagurach.android101;
-import android.content.Context;
import android.os.Bundle;
import android.util.Log;
-import android.view.MotionEvent;
import android.view.View;
-import android.view.inputmethod.InputMethodManager;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
@@ -21,15 +17,16 @@ import java.io.IOException;
import java.util.Objects;
import chatgpt.AnimalDatabaseHelper;
+import uk.kagurach.android101.helper.AutoCompleHelper.AnimalTypeAutoCompleteHelper;
import uk.kagurach.android101.helper.PageHelper;
import uk.kagurach.android101.helper.ToastHelper;
-import uk.kagurach.android101.helper.AutoCompleHelper.AnimalTypeAutoCompleteHelper;
public class Page5 extends KaBaseActivity {
- AnimalTypeAutoCompleteHelper completeHelper = null;
final AnimalDatabaseHelper dbHelper = new AnimalDatabaseHelper(this);
+ AnimalTypeAutoCompleteHelper completeHelper = null;
PageHelper pageHelper;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -41,7 +38,7 @@ public class Page5 extends KaBaseActivity {
return insets;
});
- pageHelper = new PageHelper(this, Page4.class,Page6.class);
+ pageHelper = new PageHelper(this, Page4.class, Page6.class);
// Set auto-suggestions for animals
AutoCompleteTextView autoCompleteTextView = findViewById(R.id.AnimalTypeAutoCompleteInput);
@@ -50,9 +47,9 @@ public class Page5 extends KaBaseActivity {
completeHelper.Load();
autoCompleteTextView.setAdapter(
completeHelper.GetArrayAdapter(
- this,android.R.layout.simple_list_item_1
+ this, android.R.layout.simple_list_item_1
));
- } catch (IOException e){
+ } catch (IOException e) {
Log.e("P5IOException", Objects.requireNonNull(e.getMessage()));
}
@@ -83,18 +80,18 @@ public class Page5 extends KaBaseActivity {
String animal_name = name.getText().toString();
String animal_type = type.getText().toString();
- if (animal_name.isEmpty()||animal_type.isEmpty()){
- ToastHelper.SmartToast.ShowToast("Please input all fields",v.getContext());
+ if (animal_name.isEmpty() || animal_type.isEmpty()) {
+ ToastHelper.SmartToast.ShowToast("Please input all fields", v.getContext());
return;
}
// Add to database
- if (dbHelper.insertAnimalData(animal_name, animal_type.replace(" ","_"))) {
+ if (dbHelper.insertAnimalData(animal_name, animal_type.replace(" ", "_"))) {
// Insert was successful
- ToastHelper.SmartToast.ShowToast( "Animal added successfully!",v.getContext());
+ ToastHelper.SmartToast.ShowToast("Animal added successfully!", v.getContext());
} else {
// Name already exists
- ToastHelper.SmartToast.ShowToast( "Animal with this name already exists!",v.getContext());
+ ToastHelper.SmartToast.ShowToast("Animal with this name already exists!", v.getContext());
return;
}
try {
@@ -109,9 +106,9 @@ public class Page5 extends KaBaseActivity {
throw new RuntimeException(e);
}
type.setAdapter(
- completeHelper.GetArrayAdapter(
- v.getContext(),android.R.layout.simple_list_item_1
- ));
+ completeHelper.GetArrayAdapter(
+ v.getContext(), android.R.layout.simple_list_item_1
+ ));
}
}
@@ -126,18 +123,18 @@ public class Page5 extends KaBaseActivity {
}
_a.setAdapter(
completeHelper.GetArrayAdapter(
- v.getContext(),android.R.layout.simple_list_item_1
+ v.getContext(), android.R.layout.simple_list_item_1
));
- ToastHelper.SmartToast.ShowToast("Cleaned Data",v.getContext());
+ ToastHelper.SmartToast.ShowToast("Cleaned Data", v.getContext());
// Clean DataBase
dbHelper.clearTable();
- ToastHelper.SmartToast.ShowToast("Cleaned Database",v.getContext());
+ ToastHelper.SmartToast.ShowToast("Cleaned Database", v.getContext());
return true;
}
}
- class P5CloseQueryButtonHandler implements View.OnClickListener{
+ class P5CloseQueryButtonHandler implements View.OnClickListener {
@Override
public void onClick(View v) {
@@ -146,11 +143,11 @@ public class Page5 extends KaBaseActivity {
}
}
- class QueryButtonHandler implements View.OnClickListener{
+ class QueryButtonHandler implements View.OnClickListener {
@Override
public void onClick(View v) {
String res = dbHelper.getAllDataAsString();
- if (res.isEmpty()){
+ if (res.isEmpty()) {
res = "No animals qwq";
}
TextView tv = findViewById(R.id.P5QueryResult);
@@ -159,15 +156,5 @@ public class Page5 extends KaBaseActivity {
fl.setVisibility(View.VISIBLE);
}
}
-
-
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev) {
- if (getCurrentFocus() != null) {
- InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
- }
- return super.dispatchTouchEvent(ev);
- }
}
diff --git a/app/src/main/java/uk/kagurach/android101/Page6.kt b/app/src/main/java/uk/kagurach/android101/Page6.kt
index a70a32b..35a6c01 100644
--- a/app/src/main/java/uk/kagurach/android101/Page6.kt
+++ b/app/src/main/java/uk/kagurach/android101/Page6.kt
@@ -13,22 +13,29 @@ import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
-import androidx.compose.ui.platform.ComposeView
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.viewpager.widget.PagerAdapter
import androidx.viewpager.widget.ViewPager
import androidx.viewpager.widget.ViewPager.LayoutParams
import androidx.viewpager.widget.ViewPager.OnPageChangeListener
+import androidx.work.Constraints
+import androidx.work.Data
+import androidx.work.NetworkType
+import androidx.work.OneTimeWorkRequestBuilder
+import androidx.work.WorkManager
+import androidx.work.Worker
+import androidx.work.WorkerParameters
import uk.kagurach.android101.helper.PageHelper
import uk.kagurach.android101.helper.ToastHelper
+import kotlin.random.Random
class Page6 : KaBaseActivity(), OnPageChangeListener, OnClickListener {
- class Item(val name: String,val pic: Bitmap)
+ class Item(val name: String, val pic: Bitmap)
- private var mItemList : ArrayList- = arrayListOf()
- val pageHelper = PageHelper(this, Page5::class.java, null)
- lateinit var pager : ViewPager
+ private var mItemList: ArrayList
- = arrayListOf()
+ val pageHelper = PageHelper(this, Page5::class.java, Page7::class.java)
+ lateinit var pager: ViewPager
lateinit var idShower: TextView
@@ -43,12 +50,12 @@ class Page6 : KaBaseActivity(), OnPageChangeListener, OnClickListener {
}
val am = assets
- for (i in 1..4){
+ for (i in 1..4) {
val item = Item(i.toString(), BitmapFactory.decodeStream(am.open("CatPics/${i}.jpeg")))
mItemList.add(item)
}
- val adapter = Page6CatPics(this,mItemList)
+ val adapter = Page6CatPics(this, mItemList)
pager = findViewById(R.id.P6_vp_content)
pager.adapter = adapter
pager.currentItem = 0
@@ -60,13 +67,15 @@ class Page6 : KaBaseActivity(), OnPageChangeListener, OnClickListener {
findViewById