From 7d2b776cafd45562278263320d8de0b2ed1087c4 Mon Sep 17 00:00:00 2001 From: wildercayden Date: Fri, 14 Feb 2025 14:17:52 -0500 Subject: [PATCH 1/2] Added radio buttions and checks for wifi in submit --- .../com/example/scoutingapp/AutoActivity.java | 5 +- .../com/example/scoutingapp/MainActivity.java | 57 +++++++++++++++++-- .../java/com/example/scoutingapp/Submit.java | 53 ++++++++++++----- .../com/example/scoutingapp/TeleActivity.java | 10 +++- 4 files changed, 104 insertions(+), 21 deletions(-) diff --git a/ScoutingApp/app/src/main/java/com/example/scoutingapp/AutoActivity.java b/ScoutingApp/app/src/main/java/com/example/scoutingapp/AutoActivity.java index be998b0..a77e2b9 100644 --- a/ScoutingApp/app/src/main/java/com/example/scoutingapp/AutoActivity.java +++ b/ScoutingApp/app/src/main/java/com/example/scoutingapp/AutoActivity.java @@ -36,10 +36,11 @@ public class AutoActivity extends AppCompatActivity { private Button l1Button; private Button processorButton; private Button netButton; - private String eventString, matchString, TeamString; + private String eventString, matchString, TeamString, startingPostionString; public static final String Event_Key = "EVENTCONFIRM"; public static final String Match_key = "MATCHCONFIRM"; public static final String Team_key = "TEAMCONFIRM"; + public static final String Postion_key = "POSTIONKEY"; @Override protected void onCreate(Bundle savedInstanceState) { @@ -55,6 +56,7 @@ public class AutoActivity extends AppCompatActivity { eventString = intentinput.getStringExtra(MainActivity.Event_Key); matchString = intentinput.getStringExtra(MainActivity.Match_key); TeamString = intentinput.getStringExtra(MainActivity.Team_key); + startingPostionString = intentinput.getStringExtra(MainActivity.Postion_key); l4Button = (Button) findViewById(R.id.button_L4); @@ -144,6 +146,7 @@ public class AutoActivity extends AppCompatActivity { intent.putExtra(Event_Key, eventString); intent.putExtra(Match_key, matchString); intent.putExtra(Team_key, TeamString); + intent.putExtra(Postion_key, startingPostionString); startActivity(intent); return true; }); diff --git a/ScoutingApp/app/src/main/java/com/example/scoutingapp/MainActivity.java b/ScoutingApp/app/src/main/java/com/example/scoutingapp/MainActivity.java index 1039e46..0e90e71 100644 --- a/ScoutingApp/app/src/main/java/com/example/scoutingapp/MainActivity.java +++ b/ScoutingApp/app/src/main/java/com/example/scoutingapp/MainActivity.java @@ -7,7 +7,9 @@ import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; +import android.widget.RadioButton; import android.widget.TextView; +import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.annotation.NonNull; @@ -36,6 +38,8 @@ public class MainActivity extends AppCompatActivity { private String Match_numberString; private String EventString; private String TeamString; + private String startingPostionString; + public static final String Postion_key = "POSTIONKEY"; public static final String Event_Key = "EVENTCONFIRM"; public static final String Match_key = "MATCHCONFIRM"; public static final String Team_key = "TEAMCONFIRM"; @@ -61,12 +65,17 @@ public class MainActivity extends AppCompatActivity { nextButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - Submit submit = new Submit(); - submit.renameFileagain(MainActivity.this, "unuploaded.csv"); Match_numberString = Match_number.getText().toString(); EventString = Event.getText().toString(); TeamString = Team.getText().toString(); - makeIntent(); + if ((Match_numberString == null || Match_numberString.isEmpty()) || + (EventString == null || EventString.isEmpty()) || + (TeamString == null || TeamString.isEmpty()) || + (startingPostionString == null || startingPostionString.isEmpty())){ + Toast.makeText(getApplicationContext(), "Fill in EVERYTHING", Toast.LENGTH_SHORT).show(); + }else { + makeIntent(); + } } }); @@ -75,7 +84,43 @@ public class MainActivity extends AppCompatActivity { public void onClick(View view) { Submit submit = new Submit(); - submit.uploadSheets(MainActivity.this, "unuploaded.csv"); + submit.uploadSheets(MainActivity.this, EventString+Match_number+TeamString+".csv"); + } + }); + + RadioButton Rbutton1 = findViewById(R.id.Rbutton1); + Rbutton1.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startingPostionString = "1"; + } + }); + RadioButton Rbutton2 = findViewById(R.id.Rbutton2); + Rbutton2.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startingPostionString = "2"; + } + }); + RadioButton Rbutton3 = findViewById(R.id.Rbutton3); + Rbutton3.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startingPostionString = "3"; + } + }); + RadioButton Rbutton4 = findViewById(R.id.Rbutton4); + Rbutton4.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startingPostionString = "4"; + } + }); + RadioButton Rbutton5 = findViewById(R.id.Rbutton5); + Rbutton5.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + startingPostionString = "5"; } }); @@ -154,14 +199,18 @@ public class MainActivity extends AppCompatActivity { } + + } + private void makeIntent() { Intent intent = new Intent(this, AutoActivity.class); intent.putExtra(Event_Key, EventString); intent.putExtra(Match_key, Match_numberString); intent.putExtra(Team_key, TeamString); + intent.putExtra(Postion_key, startingPostionString); startActivity(intent); } } \ No newline at end of file diff --git a/ScoutingApp/app/src/main/java/com/example/scoutingapp/Submit.java b/ScoutingApp/app/src/main/java/com/example/scoutingapp/Submit.java index 824621a..224be2d 100644 --- a/ScoutingApp/app/src/main/java/com/example/scoutingapp/Submit.java +++ b/ScoutingApp/app/src/main/java/com/example/scoutingapp/Submit.java @@ -2,7 +2,12 @@ package com.example.scoutingapp; import android.content.Context; import android.content.Intent; +import android.net.ConnectivityManager; +import android.net.NetworkCapabilities; +import android.net.NetworkInfo; +import android.os.Build; import android.util.Log; +import android.widget.Toast; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.json.gson.GsonFactory; @@ -24,6 +29,13 @@ import java.util.List; public class Submit { void uploadSheets(Context context, String csvFileString) { + if (!isWifiConnected(context)) { + Log.e("NetworkError", "No Wi-Fi connection. Cannot upload."); + Toast.makeText(context, "upload failed, Upload later", Toast.LENGTH_SHORT).show(); + return; + + } + new Thread(() -> { try { //adds account info @@ -52,16 +64,15 @@ public class Submit { String range = "Data!a2:O2"; //inserts data to the sheet sheetsService.spreadsheets().values() - .append(spreadsheetId, range, body) + .append(spreadsheetId, range, body) .setValueInputOption("USER_ENTERED") .setInsertDataOption("INSERT_ROWS") .execute(); Log.d("GoogleSheets", "Data uploaded to Google Sheets successfully."); - deleteCSVFile(context); + deleteCSVFile(context, csvFileString); } catch (Exception e) { - Log.d("GoogleSheets", "Error uploading data", e); - renameFile(context, csvFileString); + Log.e("GoogleSheetFailed", "Failed to upload"); } }).start(); } @@ -81,7 +92,7 @@ public class Submit { } - public void deleteCSVFile(Context context) { + public void deleteCSVFile(Context context, String csvFileString) { // Get the directory containing the files File directory = context.getFilesDir(); @@ -89,20 +100,24 @@ public class Submit { File[] files = directory.listFiles(); if (files != null) { - // Iterate through each file in the directory for (File file : files) { - // Deletes the file - if (file.delete()) { - Log.d("CSVDelete", file.getName() + " deleted successfully."); - } else { - Log.d("CSVDelete", "Failed to delete " + file.getName()); + // Check if the file name matches the given string + if (file.getName().equals(csvFileString)) { + if (file.delete()) { + Log.d("CSVDelete", file.getName() + " deleted successfully."); + } else { + Log.d("CSVDelete", "Failed to delete " + file.getName()); + } + return; // Exit after deleting the file } } + Log.d("CSVDelete", "File " + csvFileString + " not found."); } else { Log.d("CSVDelete", "No files found in the directory."); } } + public void renameFile(Context context, String csvFileString) { File csvFile = new File(context.getFilesDir(), csvFileString); @@ -111,7 +126,7 @@ public class Submit { return; } - File renamedFile = new File(context.getFilesDir(), "unuploaded.csv"); + File renamedFile = new File(context.getFilesDir(), csvFileString); if (csvFile.renameTo(renamedFile)) { Log.d("CSVRename", "File renamed successfully to: " + renamedFile.getAbsolutePath()); @@ -136,4 +151,16 @@ public class Submit { Log.d("CSVRenameFail", "File renaming failed. Possible reasons: file is in use, permission issue, or incorrect file path."); } } -} + + public boolean isWifiConnected(Context context) { + ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + + if (cm != null) { + android.net.Network network = cm.getActiveNetwork(); + if (network == null) return false; + NetworkCapabilities capabilities = cm.getNetworkCapabilities(network); + return capabilities != null && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI); + } + return false; + } +} \ No newline at end of file diff --git a/ScoutingApp/app/src/main/java/com/example/scoutingapp/TeleActivity.java b/ScoutingApp/app/src/main/java/com/example/scoutingapp/TeleActivity.java index 152e6eb..ea29b32 100644 --- a/ScoutingApp/app/src/main/java/com/example/scoutingapp/TeleActivity.java +++ b/ScoutingApp/app/src/main/java/com/example/scoutingapp/TeleActivity.java @@ -36,10 +36,11 @@ public class TeleActivity extends AppCompatActivity { private Button l1Button; private Button processorButton; private Button netButton; - private String eventString, matchString, TeamString; + private String eventString, matchString, TeamString, startingPostionString; public static final String Event_Key = "EVENTCONFIRM"; public static final String Match_key = "MATCHCONFIRM"; public static final String Team_key = "TEAMCONFIRM"; + public static final String Postion_key = "POSTIONKEY"; @Override protected void onCreate(Bundle savedInstanceState) { @@ -55,6 +56,8 @@ public class TeleActivity extends AppCompatActivity { eventString = intentinput.getStringExtra(AutoActivity.Event_Key); matchString = intentinput.getStringExtra(AutoActivity.Match_key); TeamString = intentinput.getStringExtra(AutoActivity.Team_key); + startingPostionString = intentinput.getStringExtra(AutoActivity.Postion_key); + l4Button = (Button) findViewById(R.id.button_L4); l3Button = (Button) findViewById(R.id.button_L3); @@ -184,7 +187,7 @@ public class TeleActivity extends AppCompatActivity { public void csvMake() { //adds the strings String CSVLine = String.format( - "Tele,%s,%s,%s,%s,%s,%s,%s,%s,%s", + "Tele,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s", l4Scored, l3Scored, l2Scored, @@ -193,7 +196,8 @@ public class TeleActivity extends AppCompatActivity { netScored, reefPickup, canLeave, - coralPickup + coralPickup, + startingPostionString ); //makes the file From 05e2a5375bfb514d6dc25296b0eb6752f5fbd955 Mon Sep 17 00:00:00 2001 From: wildercayden Date: Fri, 14 Feb 2025 14:18:46 -0500 Subject: [PATCH 2/2] Added radio buttons and instructions --- .../app/src/main/res/layout/activity_main.xml | 56 +++++++++++++++++-- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/ScoutingApp/app/src/main/res/layout/activity_main.xml b/ScoutingApp/app/src/main/res/layout/activity_main.xml index 77bc37f..4b2d7ba 100644 --- a/ScoutingApp/app/src/main/res/layout/activity_main.xml +++ b/ScoutingApp/app/src/main/res/layout/activity_main.xml @@ -89,17 +89,65 @@ android:layout_height="wrap_content" android:hint="Team number" app:layout_constraintBottom_toTopOf="@+id/textInputLayout2" - app:layout_constraintTop_toBottomOf="@+id/textInputLayout3" - tools:layout_editor_absoluteX="-16dp" /> + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@+id/textInputLayout" />