Merge remote-tracking branch 'origin/main'

This commit is contained in:
Luca Warmenhoven
2024-06-03 13:41:59 +02:00
18 changed files with 360 additions and 31 deletions

View File

@@ -10,13 +10,15 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-feature
android:name="android.hardware.bluetooth"
android:required="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"

View File

@@ -86,7 +86,7 @@ public class FitnessActivity extends RobotActivity implements RobotLifecycleCall
int randomMessageIndex = (int) Math.floor(Math.random() * EXERCISE_NOT_FOUND_MESSAGES.length);
Pepper.say(EXERCISE_NOT_FOUND_MESSAGES[randomMessageIndex]);
Pepper.say(EXERCISE_NOT_FOUND_SEEK_HELP_MESSAGE);
NavigationManager.navigateToActivity(this, MainActivity.class);
NavigationManager.navigateToActivity(this, EndScreenActivity.class);
});
});

View File

@@ -1,5 +1,6 @@
package com.example.fitbot.ui.activities;
import static com.example.fitbot.util.Networking.sendIpAddress;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.net.Uri;
@@ -17,6 +18,10 @@ import android.widget.Button;
import com.example.fitbot.R;
import com.example.fitbot.util.NavigationManager;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
// Variables
@@ -30,7 +35,6 @@ public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Set full screen mode to hide status bar
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
@@ -49,6 +53,7 @@ public class MainActivity extends AppCompatActivity {
// Hide system UI
NavigationManager.hideSystemUI(this);
sendIpAddress(this);
}
private void setUpUi() {
@@ -106,4 +111,8 @@ public class MainActivity extends AppCompatActivity {
super.onBackPressed();
}
}
}

View File

@@ -0,0 +1,76 @@
package com.example.fitbot.util;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.AsyncTask;
import android.util.Log;
import java.io.OutputStream;
import java.math.BigInteger;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.URL;
import java.net.UnknownHostException;
import java.nio.ByteOrder;
import java.nio.charset.StandardCharsets;
public class Networking {
public static void sendIpAddress(final Context context) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
String ipAddress = getIPAddress(context);
String jsonInputString = "{\"ip\":\"" +
ipAddress +
"\"}";
byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
HttpURLConnection conn = null;
try {
URL url = new URL("http://145.92.8.132:443/set-ip"); // Replace with your Node server URL
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
os.write(input, 0, input.length);
os.close();
int responseCode = conn.getResponseCode();
Log.i("NetworkUtils", "Response Code: " + responseCode);
} catch (Exception e) {
Log.e("NetworkUtils", "Error sending IP address", e);
} finally {
if (conn != null) {
conn.disconnect();
}
}
return null;
}
}.execute();
}
private static String getIPAddress(Context context) {
WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
int ipAddress = wifiManager.getConnectionInfo().getIpAddress();
// Convert little-endian to big-endian if needed
if (ByteOrder.nativeOrder().equals(ByteOrder.LITTLE_ENDIAN)) {
ipAddress = Integer.reverseBytes(ipAddress);
}
byte[] ipByteArray = BigInteger.valueOf(ipAddress).toByteArray();
String ip = "";
try {
ip = InetAddress.getByAddress(ipByteArray).getHostAddress();
} catch (UnknownHostException ex) {
Log.e("WIFIIP", "Unable to get host address.");
}
return ip;
}
}

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:height="40dp" android:tint="?attr/colorControlNormal"
android:viewportHeight="24" android:viewportWidth="24"
android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z"/>
</vector>

View File

@@ -0,0 +1,5 @@
<vector android:height="48dp" android:tint="?attr/colorControlNormal"
android:viewportHeight="24" android:viewportWidth="24"
android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z"/>
</vector>

View File

@@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
android:radius="25dp"
android:radius="30dp"
/>
<gradient

View File

@@ -17,34 +17,47 @@
android:layout_marginTop="20dp"
android:background="@drawable/border_background_2"
android:orientation="horizontal"
android:padding="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.505"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<RelativeLayout
android:layout_width="400dp"
android:layout_height="400dp"
android:layout_marginRight="20dp"
android:layout_width="410dp"
android:layout_height="410dp"
android:layout_marginVertical="20dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="15dp"
android:background="@drawable/border_background"
android:layout_gravity="center"
android:gravity="center_horizontal">
android:layout_gravity="center">
<Button
android:id="@+id/infoButtonFitness"
android:layout_width="45dp"
android:layout_height="45dp"
android:background="@drawable/red_button_gradient"
android:drawableTop="@drawable/ic_baseline_info_40"
android:drawableTint="@color/white"
android:padding="2.5dp"
android:layout_margin="10dp"
tools:ignore="SpeakableTextPresentCheck" />
<VideoView
android:id="@+id/videoView"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_centerInParent="true" />
android:layout_centerInParent="true"
android:layout_margin="50dp" />
</RelativeLayout>
<LinearLayout
android:layout_width="400dp"
android:layout_height="400dp"
android:layout_width="410dp"
android:layout_height="410dp"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:layout_marginVertical="20dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="30dp"
android:background="@drawable/border_background"
android:orientation="vertical"
android:padding="20dp"