diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 828dc84..e0bb9b3 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -22,7 +22,20 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index c9cdc78..bfcb44d 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -11,8 +11,8 @@ android {
applicationId = "uk.kagurach.android101"
minSdk = 31
targetSdk = 34
- versionCode = 151
- versionName = "1.5.1"
+ versionCode = 153
+ versionName = "1.5.3"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d2713c5..7ec36ca 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,9 +1,10 @@
-
+
+
+
+ android:theme="@style/Theme.Android101">
+
+
+
+
+
+
+
diff --git a/app/src/main/java/uk/kagurach/android101/Kaculate.kt b/app/src/main/java/uk/kagurach/android101/Kaculate.kt
index ee93aa5..de3d0aa 100644
--- a/app/src/main/java/uk/kagurach/android101/Kaculate.kt
+++ b/app/src/main/java/uk/kagurach/android101/Kaculate.kt
@@ -3,84 +3,82 @@ package uk.kagurach.android101
import android.content.Context
import kotlin.math.pow
-fun Kaculate(src: String,ctx :Context) : String{
- if (src.isBlank()){
+fun Kaculate(src: String, ctx: Context): String {
+ if (src.isBlank()) {
return src
}
- val OpList = charArrayOf('+','-','x','/','^')
+ val OpList = charArrayOf('+', '-', 'x', '/', '^')
var numStack = floatArrayOf()
- var opStack = charArrayOf()
+ var opStack = charArrayOf()
var _curnum = ""
- for (i in src.indices){
- if (src[i] in '0'..'9' || src[i] == '.'){
+ for (i in src.indices) {
+ if (src[i] in '0'..'9' || src[i] == '.') {
_curnum += src[i]
- }
- else if (src[i] in OpList){
+ } else if (src[i] in OpList) {
try {
numStack += _curnum.toFloat()
_curnum = ""
- }catch (e:Exception){
- ToastHelper.ShowToast(e.toString(),ctx)
+ } catch (e: Exception) {
+ ToastHelper.ShowToast(e.toString(), ctx)
return src
}
- opStack += src[i]
- }
- else{
- ToastHelper.ShowToast("Unknown input char:" + src[i].toString(),ctx)
+ opStack += src[i]
+ } else {
+ ToastHelper.ShowToast("Unknown input char:" + src[i].toString(), ctx)
return src
}
}
- if (_curnum.isNotEmpty()){
+ if (_curnum.isNotEmpty()) {
try {
numStack += _curnum.toFloat()
- }catch (e:Exception){
- ToastHelper.ShowToast(e.toString(),ctx)
+ } catch (e: Exception) {
+ ToastHelper.ShowToast(e.toString(), ctx)
return src
}
}
- if (numStack.size != opStack.size+1 ){
- ToastHelper.ShowToast("Ops and nums Not Match!",ctx)
+ if (numStack.size != opStack.size + 1) {
+ ToastHelper.ShowToast("Ops and nums Not Match!", ctx)
return src
}
// ^
- if ('^' in opStack){
+ if ('^' in opStack) {
var intStackCurr = 0
- for (i in opStack.indices){
- if (opStack[i]!='^'){
- intStackCurr ++
+ for (i in opStack.indices) {
+ if (opStack[i] != '^') {
+ intStackCurr++
continue
}
val a = numStack[intStackCurr]
- val b = numStack[intStackCurr+1]
+ val b = numStack[intStackCurr + 1]
numStack[intStackCurr] = a.pow(b)
- numStack = dropAtIdx(numStack,intStackCurr+1)
+ numStack = dropAtIdx(numStack, intStackCurr + 1)
}
}
// x and /
var intStackCurr = 0
- for (i in opStack.indices){
- if (opStack[i]!='x'&&opStack[i]!='/'){
- intStackCurr ++
+ for (i in opStack.indices) {
+ if (opStack[i] != 'x' && opStack[i] != '/') {
+ intStackCurr++
continue
}
val a = numStack[intStackCurr]
- val b = numStack[intStackCurr+1]
+ val b = numStack[intStackCurr + 1]
- if (opStack[i] == 'x'){
- numStack[intStackCurr] = a*b
- }else{
- numStack[intStackCurr] = a/b
+ if (opStack[i] == 'x') {
+ numStack[intStackCurr] = a * b
+ } else {
+ numStack[intStackCurr] = a / b
}
- numStack = dropAtIdx(numStack,intStackCurr+1)
+ numStack = dropAtIdx(numStack, intStackCurr + 1)
}
// + and -
@@ -88,10 +86,10 @@ fun Kaculate(src: String,ctx :Context) : String{
for (i in opStack) {
if (i == '+') {
numStack[0] += numStack[1]
- numStack = dropAtIdx(numStack,1)
- } else if (i=='-') {
+ numStack = dropAtIdx(numStack, 1)
+ } else if (i == '-') {
numStack[0] -= numStack[1]
- numStack = dropAtIdx(numStack,1)
+ numStack = dropAtIdx(numStack, 1)
}
}
}
@@ -99,14 +97,14 @@ fun Kaculate(src: String,ctx :Context) : String{
return numStack[0].toString()
}
-private fun dropAtIdx(array: FloatArray, idx:Int): FloatArray{
- if (idx>array.size){
+private fun dropAtIdx(array: FloatArray, idx: Int): FloatArray {
+ if (idx > array.size) {
throw IndexOutOfBoundsException()
}
var newArray = floatArrayOf()
- for (i in array.indices){
- if (i!=idx){
+ for (i in array.indices) {
+ if (i != idx) {
newArray += array[i]
}
}
diff --git a/app/src/main/java/uk/kagurach/android101/MainActivity.java b/app/src/main/java/uk/kagurach/android101/MainActivity.java
index a9c83c7..3801f3f 100644
--- a/app/src/main/java/uk/kagurach/android101/MainActivity.java
+++ b/app/src/main/java/uk/kagurach/android101/MainActivity.java
@@ -27,6 +27,7 @@ import java.util.Arrays;
public class MainActivity extends AppCompatActivity {
PageHelper pageHelper;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -41,30 +42,30 @@ public class MainActivity extends AppCompatActivity {
}
@Override
- protected void onResume(){
+ protected void onResume() {
super.onResume();
TextView tv = findViewById(R.id.tv_hello);
- textViewAppendString(tv,"Starting Initialize");
+ textViewAppendString(tv, "Starting Initialize");
if (Build.VERSION.SDK_INT >= 33) {
- textViewAppendString(tv,"Find api > 33, checking permission");
+ textViewAppendString(tv, "Find api > 33, checking permission");
if (ContextCompat
.checkSelfPermission
- (MainActivity.this, Manifest.permission.POST_NOTIFICATIONS)
- != PackageManager.PERMISSION_GRANTED) {
- textViewAppendString(tv,"Acquiring POST_NOTIFICATIONS");
+ (MainActivity.this, Manifest.permission.POST_NOTIFICATIONS)
+ != PackageManager.PERMISSION_GRANTED) {
+ textViewAppendString(tv, "Acquiring POST_NOTIFICATIONS");
ActivityCompat.requestPermissions
(MainActivity.this,
new String[]{Manifest.permission.POST_NOTIFICATIONS},
101);
}
- textViewAppendString(tv,"Check Finished");
- textViewAppendString(tv,"提示:常桉有惊喜");
+ textViewAppendString(tv, "Check Finished");
+ textViewAppendString(tv, "提示:常桉有惊喜");
}
- textViewAppendString(tv,"*************************\nfinished");
+ textViewAppendString(tv, "*************************\nfinished");
// Initialize Page Helper
- pageHelper = new PageHelper(this,null,MainActivity2.class,this);
+ pageHelper = new PageHelper(this, null, MainActivity2.class, this);
Button button = findViewById(R.id.Page1NextPage);
button.setEnabled(true);
@@ -72,28 +73,15 @@ public class MainActivity extends AppCompatActivity {
button.setOnLongClickListener(new LongClickHandler(this));
}
- private void textViewAppendString(@NonNull TextView tv, String s){
+ private void textViewAppendString(@NonNull TextView tv, String s) {
String last = tv.getText().toString();
- if (!last.endsWith("\n")){
+ if (!last.endsWith("\n")) {
last += "\n";
}
last += s;
tv.setText(last);
}
- private final class LongClickHandler implements View.OnLongClickListener
- {
- LongClickHandler(Context ctx){
- context = ctx;
- }
- Context context;
-
- @Override
- public boolean onLongClick(View v){
- CreateShortcut(context);
- return false;
- }
- }
private void CreateShortcut(Context context) {
ShortcutManager shortcutManager =
this.getSystemService(ShortcutManager.class);
@@ -102,7 +90,7 @@ public class MainActivity extends AppCompatActivity {
try {
pinShortcutInfo =
new ShortcutInfo.Builder(context, "start_TODO").build();
- }catch (Exception e){
+ } catch (Exception e) {
Log.e("ShortCutManager", Arrays.toString(e.getStackTrace()));
return;
}
@@ -117,4 +105,18 @@ public class MainActivity extends AppCompatActivity {
successCallback.getIntentSender());
}
}
+
+ private final class LongClickHandler implements View.OnLongClickListener {
+ Context context;
+
+ LongClickHandler(Context ctx) {
+ context = ctx;
+ }
+
+ @Override
+ public boolean onLongClick(View v) {
+ CreateShortcut(context);
+ return false;
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/uk/kagurach/android101/MainActivity2.java b/app/src/main/java/uk/kagurach/android101/MainActivity2.java
index f4b4ae7..60d0231 100644
--- a/app/src/main/java/uk/kagurach/android101/MainActivity2.java
+++ b/app/src/main/java/uk/kagurach/android101/MainActivity2.java
@@ -23,6 +23,7 @@ public class MainActivity2 extends AppCompatActivity {
PageHelper pageHelper;
int _text_size = 70;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -33,11 +34,11 @@ public class MainActivity2 extends AppCompatActivity {
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
- pageHelper = new PageHelper(this,MainActivity.class,Page3.class);
+ pageHelper = new PageHelper(this, MainActivity.class, Page3.class);
}
@Override
- protected void onResume(){
+ protected void onResume() {
super.onResume();
Button button = findViewById(R.id.next_page_nav_2);
button.setOnClickListener(pageHelper.pageButtonHandler);
@@ -47,17 +48,17 @@ public class MainActivity2 extends AppCompatActivity {
public void set70sp(View view) {
TextView t = findViewById(R.id.test2strview);
- t.setTextSize(TypedValue.COMPLEX_UNIT_SP,_text_size);
+ t.setTextSize(TypedValue.COMPLEX_UNIT_SP, _text_size);
}
public void set70dp(View view) {
TextView t = findViewById(R.id.test2strview);
- t.setTextSize(TypedValue.COMPLEX_UNIT_DIP,_text_size);
+ t.setTextSize(TypedValue.COMPLEX_UNIT_DIP, _text_size);
}
public void set70px(View view) {
TextView t = findViewById(R.id.test2strview);
- t.setTextSize(TypedValue.COMPLEX_UNIT_PX,_text_size);
+ t.setTextSize(TypedValue.COMPLEX_UNIT_PX, _text_size);
}
public void setColor(View view) {
@@ -66,11 +67,11 @@ public class MainActivity2 extends AppCompatActivity {
EditText g_edit = findViewById(R.id.G);
EditText b_edit = findViewById(R.id.B);
- int _r,_g,_b;
+ int _r, _g, _b;
// Here we are testing toast
- if( r_edit.getText().toString().isEmpty() ||
- g_edit.getText().toString().isEmpty()||
- b_edit.getText().toString().isEmpty() ){
+ if (r_edit.getText().toString().isEmpty() ||
+ g_edit.getText().toString().isEmpty() ||
+ b_edit.getText().toString().isEmpty()) {
ToastHelper.SmartToast.ShowToast("""
Please input R,G,B within 0-255
请在大小选择下方输入0-255的RGB""",
@@ -81,26 +82,27 @@ public class MainActivity2 extends AppCompatActivity {
_r = Integer.parseInt(r_edit.getText().toString());
_g = Integer.parseInt(g_edit.getText().toString());
_b = Integer.parseInt(b_edit.getText().toString());
- } catch (NumberFormatException e){
- ToastHelper.SmartToast.ShowToast(e.toString(),this);
+ } catch (NumberFormatException e) {
+ ToastHelper.SmartToast.ShowToast(e.toString(), this);
return;
}
- if (_r>=0&&_g>=0&&_b>=0&&_r<=255&&_g<=255&&_b<=255){
- t.setTextColor(Color.rgb(_r,_g,_b));
- }else{
+ if (_r >= 0 && _g >= 0 && _b >= 0 && _r <= 255 && _g <= 255 && _b <= 255) {
+ t.setTextColor(Color.rgb(_r, _g, _b));
+ } else {
ToastHelper.SmartToast.ShowToast(
- "The color: R="+_r+" G="+_g+" B="+_b+" is invalid!",this);
+ "The color: R=" + _r + " G=" + _g + " B=" + _b + " is invalid!", this);
}
}
+
public void setText(View view) {
TextView textView = findViewById(R.id.test2strview);
EditText editText = findViewById(R.id.Page2SetTestText);
String s;
try {
s = editText.getText().toString();
- }catch (Exception e){
- ToastHelper.SmartToast.ShowToast(e.toString(),this);
+ } catch (Exception e) {
+ ToastHelper.SmartToast.ShowToast(e.toString(), this);
return;
}
textView.setText(s);
@@ -116,14 +118,14 @@ public class MainActivity2 extends AppCompatActivity {
int size;
try {
size = Integer.parseInt(ed.getText().toString());
- }catch (Exception e){
- ToastHelper.SmartToast.ShowToast(e.toString(),this);
+ } catch (Exception e) {
+ ToastHelper.SmartToast.ShowToast(e.toString(), this);
return;
}
_text_size = size;
- sp.setText(size +"SP");
- dp.setText(size +"DP");
- px.setText(size +"PX");
+ sp.setText(size + "SP");
+ dp.setText(size + "DP");
+ px.setText(size + "PX");
}
diff --git a/app/src/main/java/uk/kagurach/android101/NotificationHelper.kt b/app/src/main/java/uk/kagurach/android101/NotificationHelper.kt
index f165f92..5049ce9 100644
--- a/app/src/main/java/uk/kagurach/android101/NotificationHelper.kt
+++ b/app/src/main/java/uk/kagurach/android101/NotificationHelper.kt
@@ -9,28 +9,30 @@ import androidx.core.app.ActivityCompat
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat.getSystemService
-import kotlin.random.Random
class NotificationHelper(_ctx: Context) {
val CHANNEL_ID = "DBG_PUSHER"
val name = "Debug Pusher"
var ctx: Context = _ctx
+
companion object { // Make notify id always increase
var notifyID = 1
}
private val notificationManager =
- getSystemService(ctx,NotificationManager::class.java) as NotificationManager
+ getSystemService(ctx, NotificationManager::class.java) as NotificationManager
- fun pushNotification(title:String,content:String) {
+ fun pushNotification(title: String, content: String) {
val builder = NotificationCompat.Builder(ctx, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_launcher_foreground)
.setContentTitle(title)
.setContentText(content)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setAutoCancel(true)
- .setStyle(NotificationCompat.BigTextStyle()
- .bigText(content))
+ .setStyle(
+ NotificationCompat.BigTextStyle()
+ .bigText(content)
+ )
with(NotificationManagerCompat.from(ctx)) {
if (ActivityCompat.checkSelfPermission(
@@ -55,7 +57,7 @@ class NotificationHelper(_ctx: Context) {
notificationManager.createNotificationChannel(channel)
}
- protected fun deleteNotificationChannel(){
+ protected fun deleteNotificationChannel() {
notificationManager.deleteNotificationChannel(CHANNEL_ID)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/uk/kagurach/android101/Page3.java b/app/src/main/java/uk/kagurach/android101/Page3.java
index b16350c..098c32b 100644
--- a/app/src/main/java/uk/kagurach/android101/Page3.java
+++ b/app/src/main/java/uk/kagurach/android101/Page3.java
@@ -14,11 +14,10 @@ import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
-import java.util.List;
-
public class Page3 extends AppCompatActivity {
PageHelper pageHelper;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -30,7 +29,7 @@ public class Page3 extends AppCompatActivity {
return insets;
});
- pageHelper = new PageHelper(this,MainActivity2.class,Page4.class);
+ pageHelper = new PageHelper(this, MainActivity2.class, Page4.class);
findViewById(R.id.P3_0).setOnClickListener(new CalculateOnClickListener());
findViewById(R.id.P3_1).setOnClickListener(new CalculateOnClickListener());
@@ -59,62 +58,7 @@ public class Page3 extends AppCompatActivity {
findViewById(R.id.P3Nextpage).setOnLongClickListener(pageHelper.longClickHandler);
}
-
-
- class CalculateOnClickListener implements View.OnClickListener{
- @Override
- public void onClick(View v){
- TextView tv = findViewById(R.id.P3CalcResult);
- String s = tv.getText().toString();
- String o = ((Button)v).getText().toString();
- Button dot = findViewById(R.id.P3Dot);
- switch (o){
- case "退格":
- if (!s.isEmpty()){
- if (s.length()==1){
- s = "";
- dot.setEnabled(true);
- setOpButton(true);
- findViewById(R.id.P3EqualButton).setEnabled(true);
- }else {
- s = s.substring(0, s.length() - 1);
- dot.setEnabled(!isNumberWithDot(s));
- setOpButton(s.substring(s.length()-1).matches("\\d|\\."));
- }
- }
- break;
- case "CE":
- s = "";
- dot.setEnabled(true);
- setOpButton(true);
- findViewById(R.id.P3EqualButton).setEnabled(true);
- break;
- case "=":
- calc();
- s = tv.getText().toString();
- dot.setEnabled(!s.contains("."));
- setOpButton(true);
- findViewById(R.id.P3EqualButton).setEnabled(
- !s.toLowerCase().contains("n")); // For Inf & NaN
- return;
- case ".":
- dot.setEnabled(false);
- s+='.';
- break;
- default:
- s += o;
- if (o.matches("\\d")) { // If inputted a number
- setOpButton(true);
- }else{ // Else an operator
- dot.setEnabled(true);
- setOpButton(false);
- }
- }
- tv.setText(s);
- }
- }
-
- private void setOpButton(boolean state){
+ private void setOpButton(boolean state) {
findViewById(R.id.P3X).setEnabled(state);
findViewById(R.id.P3Plus).setEnabled(state);
findViewById(R.id.P3Minus).setEnabled(state);
@@ -122,25 +66,25 @@ public class Page3 extends AppCompatActivity {
findViewById(R.id.P3ChengFang).setEnabled(state);
}
- private boolean isNumberWithDot(@NonNull String s){
- if (!s.contains(".")){
+ private boolean isNumberWithDot(@NonNull String s) {
+ if (!s.contains(".")) {
return false;
}
boolean hasDot = false;
- for (int i = s.length()-1; i >= 0; i--) {
+ for (int i = s.length() - 1; i >= 0; i--) {
char c = s.charAt(i);
- if (c=='+'||c=='-'||c=='x'||c=='/'||c=='^'){
+ if (c == '+' || c == '-' || c == 'x' || c == '/' || c == '^') {
return hasDot;
- }else if (c=='.'){
+ } else if (c == '.') {
hasDot = true;
}
}
return hasDot;
}
- private void calc(){
+ private void calc() {
TextView textView = findViewById(R.id.P3CalcResult);
- String result = Kaculate(textView.getText().toString(),this);
+ String result = Kaculate(textView.getText().toString(), this);
if (result.contains(".")) { // In case of Infinity or NaN as a result
int i = 0;
@@ -162,4 +106,57 @@ public class Page3 extends AppCompatActivity {
textView.setText(result);
}
+
+ class CalculateOnClickListener implements View.OnClickListener {
+ @Override
+ public void onClick(View v) {
+ TextView tv = findViewById(R.id.P3CalcResult);
+ String s = tv.getText().toString();
+ String o = ((Button) v).getText().toString();
+ Button dot = findViewById(R.id.P3Dot);
+ switch (o) {
+ case "退格":
+ if (!s.isEmpty()) {
+ if (s.length() == 1) {
+ s = "";
+ dot.setEnabled(true);
+ setOpButton(true);
+ findViewById(R.id.P3EqualButton).setEnabled(true);
+ } else {
+ s = s.substring(0, s.length() - 1);
+ dot.setEnabled(!isNumberWithDot(s));
+ setOpButton(s.substring(s.length() - 1).matches("\\d|\\."));
+ }
+ }
+ break;
+ case "CE":
+ s = "";
+ dot.setEnabled(true);
+ setOpButton(true);
+ findViewById(R.id.P3EqualButton).setEnabled(true);
+ break;
+ case "=":
+ calc();
+ s = tv.getText().toString();
+ dot.setEnabled(!s.contains("."));
+ setOpButton(true);
+ findViewById(R.id.P3EqualButton).setEnabled(
+ !s.toLowerCase().contains("n")); // For Inf & NaN
+ return;
+ case ".":
+ dot.setEnabled(false);
+ s += '.';
+ break;
+ default:
+ s += o;
+ if (o.matches("\\d")) { // If inputted a number
+ setOpButton(true);
+ } else { // Else an operator
+ dot.setEnabled(true);
+ setOpButton(false);
+ }
+ }
+ tv.setText(s);
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/uk/kagurach/android101/Page4.java b/app/src/main/java/uk/kagurach/android101/Page4.java
index 90d8f61..2f49b8b 100644
--- a/app/src/main/java/uk/kagurach/android101/Page4.java
+++ b/app/src/main/java/uk/kagurach/android101/Page4.java
@@ -1,6 +1,6 @@
package uk.kagurach.android101;
-import android.app.Activity;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
@@ -14,16 +14,19 @@ import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
-import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
+import uk.kagurach.android101.vibrationBroadcastReceiver.vibrationBroadcastReceiver;
+
public class Page4 extends AppCompatActivity {
PageHelper pageHelper;
ActivityResultLauncher mLauncher;
+ long startTime = 0;
+ long endTime = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -35,49 +38,47 @@ public class Page4 extends AppCompatActivity {
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
- pageHelper = new PageHelper(this, Page3.class,Page5.class);
+ pageHelper = new PageHelper(this, Page3.class, Page5.class);
Button askAI = findViewById(R.id.P4AskAI);
askAI.setOnClickListener(new ButtonHandler());
Button nextPage = findViewById(R.id.P4PageButton);
nextPage.setOnClickListener(pageHelper.pageButtonHandler);
nextPage.setOnLongClickListener(pageHelper.longClickHandler);
- mLauncher = registerForActivityResult(
- new ActivityResultContracts.StartActivityForResult(),
- result -> {
- if (result!=null && result.getResultCode() == RESULT_OK ){
- assert result.getData() != null;
- Bundle bundle = result.getData().getExtras();
- if (bundle!=null) {
- String response = bundle.getString("reply");
- TextView tv = findViewById(R.id.P4Result);
- tv.setText(response);
- }
+ Button vibrate = findViewById(R.id.P4Vibrate);
+ vibrate.setOnClickListener(new VibrateButtonHandler());
+
+ mLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
+ if (result != null && result.getResultCode() == RESULT_OK) {
+ assert result.getData() != null;
+ Bundle bundle = result.getData().getExtras();
+ if (bundle != null) {
+ String response = bundle.getString("reply");
+ TextView tv = findViewById(R.id.P4Result);
+ tv.setText(response);
}
+ endTime = System.currentTimeMillis();
+ TextView timetv = findViewById(R.id.P4AIRuntime);
+ timetv.setText("使用了" + (endTime - startTime) + "毫秒");
}
- );
+ });
}
- private void callOtherActivity(){
+ private void callOtherActivity() {
EditText editText = findViewById(R.id.P4Ask);
String request = editText.getText().toString();
- Intent intent = new Intent(this,Page4OtherActivity.class);
+ Intent intent = new Intent(this, Page4OtherActivity.class);
Bundle bundle = new Bundle();
- bundle.putString("request_content",request);
+ bundle.putString("request_content", request);
intent.putExtras(bundle);
+ TextView tv = findViewById(R.id.P4Result);
+ tv.setText("正在询问AI");
+ startTime = System.currentTimeMillis();
mLauncher.launch(intent);
}
- private final class ButtonHandler implements View.OnClickListener
- {
- @Override
- public void onClick(View v){
- callOtherActivity();
- }
- }
-
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (getCurrentFocus() != null) {
@@ -87,5 +88,24 @@ public class Page4 extends AppCompatActivity {
return super.dispatchTouchEvent(ev);
}
+ private final class ButtonHandler implements View.OnClickListener {
+ @Override
+ public void onClick(View v) {
+ callOtherActivity();
+ }
+ }
+
+ private final class VibrateButtonHandler implements View.OnClickListener {
+ @Override
+ 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);
+ intent.setComponent(componentName);
+ sendBroadcast(intent);
+ }
+
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/uk/kagurach/android101/Page4OtherActivity.java b/app/src/main/java/uk/kagurach/android101/Page4OtherActivity.java
index 810e16b..4ae1e59 100644
--- a/app/src/main/java/uk/kagurach/android101/Page4OtherActivity.java
+++ b/app/src/main/java/uk/kagurach/android101/Page4OtherActivity.java
@@ -16,30 +16,30 @@ public class Page4OtherActivity extends AppCompatActivity {
Bundle bundle = getIntent().getExtras();
if (bundle == null) throw new NullPointerException();
String content = bundle.getString("request_content");
- if (content!=null){
- if (content.contains("想似")||
- content.contains("相似")||
- content.contains("相死")||
- content.contains("想死")){
+ if (content != null) {
+ if (content.contains("想似") ||
+ content.contains("相似") ||
+ content.contains("相死") ||
+ content.contains("想死")) {
- ToastHelper.SmartToast.ShowToast("不可以!",this);
+ ToastHelper.SmartToast.ShowToast("不可以!", this);
- Log.wtf("呜呜","要好好活着");
+ Log.wtf("呜呜", "要好好活着");
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(-1);
}
content = AIAnswerService(content);
- }else {
+ } else {
content = "对不起坏掉了";
}
Intent intent = new Intent();
Bundle bundle1 = new Bundle();
- bundle1.putString("reply",content);
+ bundle1.putString("reply", content);
intent.putExtras(bundle1);
- setResult(RESULT_OK,intent);
+ setResult(RESULT_OK, intent);
finish();
}
}
\ No newline at end of file
diff --git a/app/src/main/java/uk/kagurach/android101/PageHelper.java b/app/src/main/java/uk/kagurach/android101/PageHelper.java
index 4086fde..e365a7a 100644
--- a/app/src/main/java/uk/kagurach/android101/PageHelper.java
+++ b/app/src/main/java/uk/kagurach/android101/PageHelper.java
@@ -8,73 +8,70 @@ import android.content.Intent;
import android.view.View;
public class PageHelper {
+ public final LongClickHandler longClickHandler = new LongClickHandler();
+ public final PageButtonHandler pageButtonHandler = new PageButtonHandler();
private final Context _curr;
private final Class> _prev;
private final Class> _next;
-
private Activity _activity = null;
- public final LongClickHandler longClickHandler = new LongClickHandler();
- public final PageButtonHandler pageButtonHandler = new PageButtonHandler();
-
- PageHelper(Context curr, Class> prev, Class> next){
+ PageHelper(Context curr, Class> prev, Class> next) {
_curr = curr;
_prev = prev;
_next = next;
}
- PageHelper(Context curr, Class> prev, Class> next,Activity activity){
+ PageHelper(Context curr, Class> prev, Class> next, Activity activity) {
_curr = curr;
_prev = prev;
_next = next;
_activity = activity;
}
- void goPrev(){
- if (_prev==null){
+ void goPrev() {
+ if (_prev == null) {
return;
}
Intent myIntent = new Intent(_curr, _prev);
- startActivity(_curr,myIntent,null);
+ startActivity(_curr, myIntent, null);
}
- void goNext(){
- if (_next==null){
+ void goNext() {
+ if (_next == null) {
return;
}
Intent myIntent = new Intent(_curr, _next);
- startActivity(_curr,myIntent,null);
+ startActivity(_curr, myIntent, null);
}
- void goNextFinish(){
- if (_activity == null){
+ void goNextFinish() {
+ if (_activity == null) {
throw new IllegalStateException("activity is null, cannot finish the activity");
}
- if (_next==null){
+ if (_next == null) {
return;
}
Intent myIntent = new Intent(_curr, _next);
- startActivity(_curr,myIntent,null);
+ startActivity(_curr, myIntent, null);
_activity.finish();
}
- private final class LongClickHandler implements View.OnLongClickListener
- {
+ private final class LongClickHandler implements View.OnLongClickListener {
@Override
- public boolean onLongClick(View v){
+ public boolean onLongClick(View v) {
goPrev();
return false;
}
}
- private final class PageButtonHandler implements View.OnClickListener
- {
+
+ private final class PageButtonHandler implements View.OnClickListener {
@Override
- public void onClick(View v){
+ public void onClick(View v) {
if (_activity == null) {
goNext();
- }else {
+ } else {
goNextFinish();
}
}
diff --git a/app/src/main/java/uk/kagurach/android101/ToastHelper.kt b/app/src/main/java/uk/kagurach/android101/ToastHelper.kt
index 782ccea..6d9ca6b 100644
--- a/app/src/main/java/uk/kagurach/android101/ToastHelper.kt
+++ b/app/src/main/java/uk/kagurach/android101/ToastHelper.kt
@@ -3,24 +3,25 @@ package uk.kagurach.android101
import android.content.Context
import android.widget.Toast
-class ToastHelper(text: String,ctx: Context) {
+class ToastHelper(text: String, ctx: Context) {
val _text = text
- val _ctx = ctx
+ val _ctx = ctx
companion object SmartToast {
- fun ShowToast(text: String,ctx: Context){
- val helper = ToastHelper(text,ctx)
+ fun ShowToast(text: String, ctx: Context) {
+ val helper = ToastHelper(text, ctx)
helper.autoShow()
}
}
- fun autoShow(){
- if (_text.contains('\n')){
- for (line in _text.split('\n')){
- Toast.makeText(_ctx,line,Toast.LENGTH_SHORT).show()
- Thread.sleep(Toast.LENGTH_SHORT.toLong()+5)
+
+ fun autoShow() {
+ if (_text.contains('\n')) {
+ for (line in _text.split('\n')) {
+ Toast.makeText(_ctx, line, Toast.LENGTH_SHORT).show()
+ Thread.sleep(Toast.LENGTH_SHORT.toLong() + 5)
}
- }else{
- Toast.makeText(_ctx,_text,Toast.LENGTH_LONG).show()
+ } else {
+ Toast.makeText(_ctx, _text, Toast.LENGTH_LONG).show()
}
}
diff --git a/app/src/main/java/uk/kagurach/android101/todoList/AddPage.kt b/app/src/main/java/uk/kagurach/android101/todoList/AddPage.kt
index 3fe7918..f8169ae 100644
--- a/app/src/main/java/uk/kagurach/android101/todoList/AddPage.kt
+++ b/app/src/main/java/uk/kagurach/android101/todoList/AddPage.kt
@@ -45,6 +45,7 @@ import androidx.core.content.ContextCompat
import uk.kagurach.android101.R
import uk.kagurach.android101.todoList.ui.theme.LightBlue100
import java.text.SimpleDateFormat
+import java.util.Locale
class AddPage() : ComponentActivity() {
@@ -73,12 +74,12 @@ class AddPage() : ComponentActivity() {
@OptIn(ExperimentalMaterial3Api::class)
@Composable
- fun AddPageLayout(){
+ fun AddPageLayout() {
val context = LocalContext.current
var title by remember {
mutableStateOf(
- when (item){
+ when (item) {
null -> ""
else -> item!!.title
}
@@ -88,8 +89,13 @@ class AddPage() : ComponentActivity() {
val timePickerState by remember {
mutableStateOf(
- when (item){
- null -> TimePickerState(c.get(Calendar.HOUR_OF_DAY),c.get(Calendar.MINUTE),true)
+ when (item) {
+ null -> TimePickerState(
+ c.get(Calendar.HOUR_OF_DAY),
+ c.get(Calendar.MINUTE),
+ true
+ )
+
else -> TimePickerState(
item!!.dueDate.split(" ")[1].split(":")[0].toInt(),
item!!.dueDate.split(" ")[1].split(":")[1].toInt(),
@@ -103,7 +109,7 @@ class AddPage() : ComponentActivity() {
initialDisplayedMonthMillis = System.currentTimeMillis(),
yearRange = 2024..2099
)
- Scaffold (
+ Scaffold(
topBar = {
Surface(
modifier = Modifier
@@ -148,22 +154,22 @@ class AddPage() : ComponentActivity() {
floatingActionButtonPosition = FabPosition.End,
floatingActionButton = {
Submit {
- if (title.isBlank()||datePickerState.selectedDateMillis==null){
- Toast.makeText(context,"Please Fill Every field",Toast.LENGTH_SHORT)
+ if (title.isBlank() || datePickerState.selectedDateMillis == null) {
+ Toast.makeText(context, "Please Fill Every field", Toast.LENGTH_SHORT)
.show()
return@Submit
}
val loader = TodoItemLoader(context)
- val sdf = SimpleDateFormat("yyyy-MM-dd")
+ val sdf = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
val todoItem = TodoItem(
- loader.getLastId()+1,
- title.replace("\t"," "),
- sdf.format(datePickerState.selectedDateMillis) + " " +
+ loader.getLastId() + 1,
+ title.replace("\t", " "),
+ sdf.format(datePickerState.selectedDateMillis) + " " +
timePickerState.hour.toString() + ":" +
timePickerState.minute.toString()
- )
+ )
loader.changeItem(todoItem)
val myIntent = Intent(context, MainActivity::class.java)
ContextCompat.startActivity(context, myIntent, null)
diff --git a/app/src/main/java/uk/kagurach/android101/todoList/MainActivity.kt b/app/src/main/java/uk/kagurach/android101/todoList/MainActivity.kt
index e351f27..898e5dc 100644
--- a/app/src/main/java/uk/kagurach/android101/todoList/MainActivity.kt
+++ b/app/src/main/java/uk/kagurach/android101/todoList/MainActivity.kt
@@ -35,51 +35,51 @@ class MainActivity : ComponentActivity() {
}
}
- @OptIn(ExperimentalMaterial3Api::class)
- @Composable
- fun LayOut(tmpList : List?) {
- val context = LocalContext.current
+@OptIn(ExperimentalMaterial3Api::class)
+@Composable
+fun LayOut(tmpList: List?) {
+ val context = LocalContext.current
- Scaffold (
- topBar = {
- TopAppBar(
- title = { Text("Simple TODO ^_^") }
- )
- },
- content = {
- padding ->
- Surface(
- modifier = Modifier.padding(padding)
- .verticalScroll(rememberScrollState())
- ) {
- if (tmpList != null) {
- Column {
- for (i in tmpList) {
- TodoItemView(todoItem = i)
- }
- }
+ Scaffold(
+ topBar = {
+ TopAppBar(
+ title = { Text("Simple TODO ^_^") }
+ )
+ },
+ content = { padding ->
+ Surface(
+ modifier = Modifier
+ .padding(padding)
+ .verticalScroll(rememberScrollState())
+ ) {
+ if (tmpList != null) {
+ Column {
+ for (i in tmpList) {
+ TodoItemView(todoItem = i)
}
}
- },
- floatingActionButtonPosition = FabPosition.End,
- floatingActionButton = {
- NextPage {
- val myIntent = Intent(context, AddPage::class.java)
- ContextCompat.startActivity(context, myIntent, null)
}
- },
- )
+ }
+ },
+ floatingActionButtonPosition = FabPosition.End,
+ floatingActionButton = {
+ NextPage {
+ val myIntent = Intent(context, AddPage::class.java)
+ ContextCompat.startActivity(context, myIntent, null)
+ }
+ },
+ )
+}
+
+@Composable
+fun NextPage(onClick: () -> Unit) {
+ FloatingActionButton(
+ onClick = { onClick() },
+ containerColor = LightBlue100
+ ) {
+ Icon(Icons.Filled.Add, "Floating action button.")
}
-
- @Composable
- fun NextPage(onClick: () -> Unit) {
- FloatingActionButton(
- onClick = { onClick() },
- containerColor = LightBlue100
- ) {
- Icon(Icons.Filled.Add, "Floating action button.")
- }
- }
+}
diff --git a/app/src/main/java/uk/kagurach/android101/todoList/TodoItem.kt b/app/src/main/java/uk/kagurach/android101/todoList/TodoItem.kt
index 7c6776b..22b084e 100644
--- a/app/src/main/java/uk/kagurach/android101/todoList/TodoItem.kt
+++ b/app/src/main/java/uk/kagurach/android101/todoList/TodoItem.kt
@@ -11,7 +11,7 @@ data class TodoItem(
var title: String,
var dueDate: String,
- var isCompleted:Boolean = false,
+ var isCompleted: Boolean = false,
- var MarkDeleted:Boolean = false
+ var MarkDeleted: Boolean = false
)
diff --git a/app/src/main/java/uk/kagurach/android101/todoList/TodoItemLoader.kt b/app/src/main/java/uk/kagurach/android101/todoList/TodoItemLoader.kt
index 650fc94..99682ad 100644
--- a/app/src/main/java/uk/kagurach/android101/todoList/TodoItemLoader.kt
+++ b/app/src/main/java/uk/kagurach/android101/todoList/TodoItemLoader.kt
@@ -6,38 +6,38 @@ import java.io.File
import java.io.FileWriter
class TodoItemLoader(private val context: Context) {
- private val db = File(context.filesDir,"db")
+ private val db = File(context.filesDir, "db")
- public fun getTodoItems(): List?{
- if (!db.exists()){
+ public fun getTodoItems(): List? {
+ if (!db.exists()) {
return null
}
val lines = db.readLines()
- if (lines.isEmpty()){
+ if (lines.isEmpty()) {
return null
}
var list: List = listOf()
- for (line in lines){
+ for (line in lines) {
val split = line.split("\t")
val item: TodoItem
try {
- item = TodoItem(split[0].toInt(),split[1],split[2], split[3].toBooleanStrict())
+ item = TodoItem(split[0].toInt(), split[1], split[2], split[3].toBooleanStrict())
list = list + item
- } catch (e: Exception){
+ } catch (e: Exception) {
Log.e("DB Error", e.printStackTrace().toString())
}
}
- if (list.isNotEmpty()){
+ if (list.isNotEmpty()) {
return list
}
return null
}
- public fun saveTodoItems(list:List){
+ public fun saveTodoItems(list: List) {
var result = ""
- for (i in list){
- if(!i.MarkDeleted) {
+ for (i in list) {
+ if (!i.MarkDeleted) {
result += "%s\t%s\t%s\t%s\n".format(
i.id.toString(),
i.title,
@@ -51,14 +51,14 @@ class TodoItemLoader(private val context: Context) {
fileWriter.close()
}
- public fun getLastId():Int{
+ public fun getLastId(): Int {
val items = getTodoItems();
- return if (items==null){
+ return if (items == null) {
0
- }else{
+ } else {
var max = 0
- for (i in items){
- if (i.id>max){
+ for (i in items) {
+ if (i.id > max) {
max = i.id
}
}
@@ -66,12 +66,12 @@ class TodoItemLoader(private val context: Context) {
}
}
- public fun changeItem(todoItem: TodoItem){
+ public fun changeItem(todoItem: TodoItem) {
var items = getTodoItems()
var changeFlag = false
if (items != null) {
- for (i in items){
- if (i.id==todoItem.id){
+ for (i in items) {
+ if (i.id == todoItem.id) {
i.title = todoItem.title
i.dueDate = todoItem.dueDate
i.MarkDeleted = todoItem.MarkDeleted
@@ -80,22 +80,22 @@ class TodoItemLoader(private val context: Context) {
break
}
}
- if (!changeFlag){
+ if (!changeFlag) {
items = items + todoItem
}
- }else{
+ } else {
items = listOf(todoItem)
}
saveTodoItems(items)
}
- public fun searchItem(id:Int): TodoItem?{
+ public fun searchItem(id: Int): TodoItem? {
val items = getTodoItems();
- return if (items==null){
+ return if (items == null) {
null
- }else{
- for (i in items){
- if (i.id>id){
+ } else {
+ for (i in items) {
+ if (i.id > id) {
return i
}
}
diff --git a/app/src/main/java/uk/kagurach/android101/todoList/TodoListView.kt b/app/src/main/java/uk/kagurach/android101/todoList/TodoListView.kt
index d32cac8..55af405 100644
--- a/app/src/main/java/uk/kagurach/android101/todoList/TodoListView.kt
+++ b/app/src/main/java/uk/kagurach/android101/todoList/TodoListView.kt
@@ -42,7 +42,7 @@ fun TodoItemView(todoItem: TodoItem) {
}
var bgColor by remember {
mutableStateOf(
- when (todoItem.isCompleted){
+ when (todoItem.isCompleted) {
true -> Green100
false -> Blue100
}
@@ -51,7 +51,7 @@ fun TodoItemView(todoItem: TodoItem) {
var needShow by remember {
mutableStateOf(true)
}
- if (!needShow){
+ if (!needShow) {
return
}
@@ -68,14 +68,14 @@ fun TodoItemView(todoItem: TodoItem) {
start = 10.dp,
end = 10.dp
)
- ){
+ ) {
Text(
text = todoItem.title,
color = Color.Black,
fontSize = 30.sp,
fontFamily = FontFamily.Monospace
)
- Row{
+ Row {
Spacer(modifier = Modifier.weight(1f))
Text(
text = todoItem.dueDate,
@@ -87,11 +87,12 @@ fun TodoItemView(todoItem: TodoItem) {
Row {
TextButton(
onClick = {
- if (!todoItem.isCompleted){
- Toast.makeText( context,
- context.getText(R.string.yes_not_finish)
- ,Toast.LENGTH_SHORT).show()
- }else{
+ if (!todoItem.isCompleted) {
+ Toast.makeText(
+ context,
+ context.getText(R.string.yes_not_finish), Toast.LENGTH_SHORT
+ ).show()
+ } else {
todoItem.isCompleted = false
loader.changeItem(todoItem)
bgColor = Blue100
@@ -105,11 +106,12 @@ fun TodoItemView(todoItem: TodoItem) {
Spacer(modifier = Modifier.width(20.dp))
TextButton(
onClick = {
- if (todoItem.isCompleted){
- Toast.makeText( context,
- context.getText(R.string.already_finish)
- ,Toast.LENGTH_SHORT).show()
- }else{
+ if (todoItem.isCompleted) {
+ Toast.makeText(
+ context,
+ context.getText(R.string.already_finish), Toast.LENGTH_SHORT
+ ).show()
+ } else {
todoItem.isCompleted = true
loader.changeItem(todoItem)
bgColor = Green100
@@ -123,9 +125,10 @@ fun TodoItemView(todoItem: TodoItem) {
Spacer(modifier = Modifier.width(20.dp))
TextButton(
onClick = {
- when (deleteText){
+ when (deleteText) {
context.getText(R.string.first_delete).toString() ->
- deleteText=context.getText(R.string.second_delete).toString()
+ deleteText = context.getText(R.string.second_delete).toString()
+
else -> {
needShow = false
todoItem.MarkDeleted = true
@@ -147,12 +150,12 @@ fun TodoItemView(todoItem: TodoItem) {
@Preview(showBackground = true)
@Composable
-fun TodoItemPreview(){
+fun TodoItemPreview() {
val todoItem = TodoItem(
- 0,"Test TODO Item","2024-04-30 11:45",
+ 0, "Test TODO Item", "2024-04-30 11:45",
)
val todoItem2 = TodoItem(
- 1,"测试喵","2024-11-01 22:33",true
+ 1, "测试喵", "2024-11-01 22:33", true
)
Column {
TodoItemView(todoItem)
@@ -160,8 +163,8 @@ fun TodoItemPreview(){
}
}
-fun NextPage(context:Context,item: TodoItem) {
+fun NextPage(context: Context, item: TodoItem) {
val myIntent = Intent(context, AddPage::class.java)
- myIntent.putExtra("ITEM",item.id)
+ myIntent.putExtra("ITEM", item.id)
ContextCompat.startActivity(context, myIntent, null)
}
\ No newline at end of file
diff --git a/app/src/main/java/uk/kagurach/android101/vibrationBroadcastReceiver/vibrationBroadcastReceiver.java b/app/src/main/java/uk/kagurach/android101/vibrationBroadcastReceiver/vibrationBroadcastReceiver.java
new file mode 100644
index 0000000..9330be8
--- /dev/null
+++ b/app/src/main/java/uk/kagurach/android101/vibrationBroadcastReceiver/vibrationBroadcastReceiver.java
@@ -0,0 +1,30 @@
+package uk.kagurach.android101.vibrationBroadcastReceiver;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.CombinedVibration;
+import android.os.VibrationEffect;
+import android.os.VibratorManager;
+import android.util.Log;
+
+import java.util.Objects;
+
+public class vibrationBroadcastReceiver extends BroadcastReceiver {
+
+ public static final String VIBRATION_ACTION_NAME = "uk.kagurach.android101.vibrationBroadcastReceiver";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Objects.equals(intent.getAction(), VIBRATION_ACTION_NAME)) {
+ VibratorManager vibrator = (VibratorManager) context.getSystemService(
+ Context.VIBRATOR_MANAGER_SERVICE
+ );
+ vibrator.vibrate(
+ CombinedVibration.createParallel(
+ VibrationEffect.createOneShot(1500,VibrationEffect.DEFAULT_AMPLITUDE)
+ ));
+ Log.d("Debug","Vibrate!");
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/uk/kagurach/misc/AIAnswerService.kt b/app/src/main/java/uk/kagurach/misc/AIAnswerService.kt
index 5494c34..df754ff 100644
--- a/app/src/main/java/uk/kagurach/misc/AIAnswerService.kt
+++ b/app/src/main/java/uk/kagurach/misc/AIAnswerService.kt
@@ -4,58 +4,60 @@ import java.time.Instant
import java.util.Date
import kotlin.random.Random
-fun AIAnswerService(s: String):String {
+fun AIAnswerService(s: String): String {
val rng = Random(Date.from(Instant.now()).time)
var result = s
- result = result.replace("?","?")
+ result = result.replace("?", "?")
val isMoral = s.contains("您")
- val needAI = s.contains("你")
+ val needAI = s.contains("你")
- result = result.replace("我","^")
- result = result.replace("喵","")
- result = result.replace("咱","@")
+ result = result.replace("我", "^")
+ result = result.replace("喵", "")
+ result = result.replace("咱", "@")
- if (isMoral){
+ if (isMoral) {
result = if (rng.nextBoolean()) {
"谢谢@的提问,$result"
- } else{
- if (result.endsWith(".")||
- result.endsWith("。")||
- result.endsWith("?")){
+ } else {
+ if (result.endsWith(".") ||
+ result.endsWith("。") ||
+ result.endsWith("?")
+ ) {
result = result.dropLast(1);
}
"$result,谢谢。"
}
- result = result.replace("您","我")
+ result = result.replace("您", "我")
}
- if (needAI){
- result = result.replace("你","我")
+ if (needAI) {
+ result = result.replace("你", "我")
}
- result = result.replace("想",
- if (rng.nextBoolean()){
+ result = result.replace(
+ "想",
+ if (rng.nextBoolean()) {
"可以"
- }else{
+ } else {
"不可以"
}
)
- result = result.replace("什么","很多")
- result = result.replace("吗","")
- result = result.replace("?","。")
- result = result.replace("^","你")
- result = result.replace("@","您")
+ result = result.replace("什么", "很多")
+ result = result.replace("吗", "")
+ result = result.replace("?", "。")
+ result = result.replace("^", "你")
+ result = result.replace("@", "您")
return result
}
-fun main(){
+fun main() {
println(AIAnswerService("我想吃饭"))
println(AIAnswerService("咱可以吃饭吗"))
println(AIAnswerService("您可以做什么?"))
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index a0a7698..80020c9 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -31,7 +31,6 @@
android:layout_height="0dp"
android:layout_weight="1"
android:text="@string/next_page"
- android:onClick="jumpToNext"
android:enabled="false"
/>
diff --git a/app/src/main/res/layout/activity_page4.xml b/app/src/main/res/layout/activity_page4.xml
index 567e301..01e4a05 100644
--- a/app/src/main/res/layout/activity_page4.xml
+++ b/app/src/main/res/layout/activity_page4.xml
@@ -20,15 +20,18 @@
android:layout_height="wrap_content"
android:textSize="40sp"
android:text="@string/user"/>
+
+
@@ -38,14 +41,23 @@
android:textSize="40sp"
android:text="@string/ai"/>
+
+
+
-
+ android:layout_height="wrap_content"
+ android:textSize="25sp"
+ android:id="@+id/P4AIRuntime"
+ android:text="@string/ai_ready"/>
+
+
+