diff --git a/MobileApp/.idea/deploymentTargetDropDown.xml b/MobileApp/.idea/deploymentTargetDropDown.xml index 4e0641c..d713205 100644 --- a/MobileApp/.idea/deploymentTargetDropDown.xml +++ b/MobileApp/.idea/deploymentTargetDropDown.xml @@ -7,11 +7,11 @@ - + - + \ No newline at end of file diff --git a/MobileApp/.idea/misc.xml b/MobileApp/.idea/misc.xml index 16b4708..14c7056 100644 --- a/MobileApp/.idea/misc.xml +++ b/MobileApp/.idea/misc.xml @@ -5,11 +5,13 @@ + + diff --git a/MobileApp/PicturesCircles/back.png b/MobileApp/PicturesCircles/back.png new file mode 100644 index 0000000..9b50660 Binary files /dev/null and b/MobileApp/PicturesCircles/back.png differ diff --git a/MobileApp/PicturesCircles/blank.png b/MobileApp/PicturesCircles/blank.png new file mode 100644 index 0000000..1edc70a Binary files /dev/null and b/MobileApp/PicturesCircles/blank.png differ diff --git a/MobileApp/PicturesCircles/forward.png b/MobileApp/PicturesCircles/forward.png new file mode 100644 index 0000000..fea5354 Binary files /dev/null and b/MobileApp/PicturesCircles/forward.png differ diff --git a/MobileApp/PicturesCircles/left.png b/MobileApp/PicturesCircles/left.png new file mode 100644 index 0000000..8f3888c Binary files /dev/null and b/MobileApp/PicturesCircles/left.png differ diff --git a/MobileApp/PicturesCircles/left_back.png b/MobileApp/PicturesCircles/left_back.png new file mode 100644 index 0000000..e237ba1 Binary files /dev/null and b/MobileApp/PicturesCircles/left_back.png differ diff --git a/MobileApp/PicturesCircles/left_forward.png b/MobileApp/PicturesCircles/left_forward.png new file mode 100644 index 0000000..657f0e6 Binary files /dev/null and b/MobileApp/PicturesCircles/left_forward.png differ diff --git a/MobileApp/PicturesCircles/right.png b/MobileApp/PicturesCircles/right.png new file mode 100644 index 0000000..8b65be5 Binary files /dev/null and b/MobileApp/PicturesCircles/right.png differ diff --git a/MobileApp/PicturesCircles/right_back.png b/MobileApp/PicturesCircles/right_back.png new file mode 100644 index 0000000..c5a6c8b Binary files /dev/null and b/MobileApp/PicturesCircles/right_back.png differ diff --git a/MobileApp/PicturesCircles/right_forward.png b/MobileApp/PicturesCircles/right_forward.png new file mode 100644 index 0000000..7549d64 Binary files /dev/null and b/MobileApp/PicturesCircles/right_forward.png differ diff --git a/MobileApp/app/src/main/java/com/example/lfrmobileapp/Communication.java b/MobileApp/app/src/main/java/com/example/lfrmobileapp/Communication.java index f96ee32..7ce4cb2 100644 --- a/MobileApp/app/src/main/java/com/example/lfrmobileapp/Communication.java +++ b/MobileApp/app/src/main/java/com/example/lfrmobileapp/Communication.java @@ -7,14 +7,15 @@ import java.io.IOException; import java.net.Socket; public class Communication { - public boolean sendData(String data) { + public boolean sendData(String data, String ip, int port) { try { - Socket socket = new Socket("192.168.0.1", 1755); + Socket socket = new Socket(ip, port); DataOutputStream DOS = new DataOutputStream(socket.getOutputStream()); DOS.writeUTF(data); socket.close(); } catch (Exception e) { e.printStackTrace(); + return true; //ToDo: change to false to test connection - currently always true is delivered } return true; } diff --git a/MobileApp/app/src/main/java/com/example/lfrmobileapp/MainActivity.java b/MobileApp/app/src/main/java/com/example/lfrmobileapp/MainActivity.java index cc6b114..55d2ee2 100644 --- a/MobileApp/app/src/main/java/com/example/lfrmobileapp/MainActivity.java +++ b/MobileApp/app/src/main/java/com/example/lfrmobileapp/MainActivity.java @@ -1,5 +1,7 @@ package com.example.lfrmobileapp; +import android.content.Context; +import android.content.SharedPreferences; import android.os.Bundle; import com.google.android.material.bottomnavigation.BottomNavigationView; @@ -12,6 +14,8 @@ import androidx.navigation.ui.NavigationUI; import com.example.lfrmobileapp.databinding.ActivityMainBinding; + + public class MainActivity extends AppCompatActivity { private ActivityMainBinding binding; diff --git a/MobileApp/app/src/main/java/com/example/lfrmobileapp/ui/home/HomeFragment.java b/MobileApp/app/src/main/java/com/example/lfrmobileapp/ui/home/HomeFragment.java index 51f4845..4db5ca4 100644 --- a/MobileApp/app/src/main/java/com/example/lfrmobileapp/ui/home/HomeFragment.java +++ b/MobileApp/app/src/main/java/com/example/lfrmobileapp/ui/home/HomeFragment.java @@ -1,6 +1,7 @@ package com.example.lfrmobileapp.ui.home; import android.content.Context; +import android.content.SharedPreferences; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -14,12 +15,20 @@ import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; import com.example.lfrmobileapp.Communication; +import com.example.lfrmobileapp.R; import com.example.lfrmobileapp.databinding.FragmentManuellBinding; +import com.example.lfrmobileapp.ui.notifications.NotificationsFragment; import io.github.controlwear.virtual.joystick.android.JoystickView; public class HomeFragment extends Fragment { + String ipKey = "ipkey"; + String portKey = "portkey"; + + String ipAddress = "192.168.0.1"; + int port = 8000; + private FragmentManuellBinding binding; public View onCreateView(@NonNull LayoutInflater inflater, @@ -30,6 +39,12 @@ public class HomeFragment extends Fragment { binding = FragmentManuellBinding.inflate(inflater, container, false); View root = binding.getRoot(); + SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPref.edit(); + + ipAddress = sharedPref.getString(ipKey, ""); + port = sharedPref.getInt(portKey, 0); + final TextView textView = binding.textHome; homeViewModel.getText().observe(getViewLifecycleOwner(), textView::setText); @@ -39,7 +54,28 @@ public class HomeFragment extends Fragment { @Override public void onMove(int angle, int strength) { homeViewModel.setText(Integer.toString(angle), Integer.toString(strength)); - com.sendData("Vanessa stinkt, Baran nicht"); + if((angle >= 338 || angle < 22) && strength != 0){ + joystick.setBackgroundResource(R.mipmap.right); + }else if((angle >= 22 && angle < 67) && strength != 0){ + joystick.setBackgroundResource(R.mipmap.right_forward); + }else if((angle >=67 && angle < 112) && strength != 0){ + joystick.setBackgroundResource(R.mipmap.forward); + }else if((angle >=112 && angle < 157) && strength != 0){ + joystick.setBackgroundResource(R.mipmap.left_forward); + }else if((angle >=157 && angle < 202) && strength != 0){ + joystick.setBackgroundResource(R.mipmap.left); + }else if((angle >=202 && angle < 247) && strength != 0){ + joystick.setBackgroundResource(R.mipmap.left_back); + }else if((angle >=247 && angle < 292) && strength != 0){ + joystick.setBackgroundResource(R.mipmap.back); + }else if((angle >=292 && angle < 337) && strength != 0){ + joystick.setBackgroundResource(R.mipmap.right_back); + } + else{ + joystick.setBackgroundResource(R.mipmap.blank); + } + + com.sendData("Vanessa stinkt, Baran nicht", ipAddress, port); } }); diff --git a/MobileApp/app/src/main/java/com/example/lfrmobileapp/ui/notifications/NotificationsFragment.java b/MobileApp/app/src/main/java/com/example/lfrmobileapp/ui/notifications/NotificationsFragment.java index 1536bbd..8c5a9fe 100644 --- a/MobileApp/app/src/main/java/com/example/lfrmobileapp/ui/notifications/NotificationsFragment.java +++ b/MobileApp/app/src/main/java/com/example/lfrmobileapp/ui/notifications/NotificationsFragment.java @@ -1,19 +1,37 @@ package com.example.lfrmobileapp.ui.notifications; +import android.app.Activity; +import android.content.Context; +import android.content.SharedPreferences; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import android.widget.TextView; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import com.example.lfrmobileapp.Communication; +import com.example.lfrmobileapp.R; import com.example.lfrmobileapp.databinding.FragmentEinstellungenBinding; + public class NotificationsFragment extends Fragment { + String ipKey = "ipkey"; + String portKey = "portkey"; + String connectionFailed = "Verbindung fehlgeschlagen."; + String connectionSuccessful = "Verbindung erfolgreich."; + + String ipAddress = "192.168.0.1"; + int port = 8000; + + int duration = Toast.LENGTH_LONG; + private FragmentEinstellungenBinding binding; public View onCreateView(@NonNull LayoutInflater inflater, @@ -24,6 +42,40 @@ public class NotificationsFragment extends Fragment { binding = FragmentEinstellungenBinding.inflate(inflater, container, false); View root = binding.getRoot(); + Communication com = new Communication(); + + SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPref.edit(); + + ipAddress = sharedPref.getString(ipKey, ""); + binding.ipAdress.setText(ipAddress); + port = sharedPref.getInt(portKey, -1); + if(port != -1){ + binding.port.setText(Integer.toString(port)); + }else{ + binding.port.setText(""); + } + + + final Button button = binding.connect; + button.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + ipAddress = String.valueOf(binding.ipAdress.getText()); + port = Integer.parseInt(String.valueOf(binding.port.getText())); + if(com.sendData("", ipAddress, port)){ + editor.putString(ipKey, ipAddress); + editor.putInt(portKey, port); + editor.apply(); + Toast toast = Toast.makeText(v.getContext(), connectionSuccessful, duration); + toast.show(); + }else{ + Toast toast = Toast.makeText(v.getContext(), connectionFailed, duration); + toast.show(); + } + } + }); + + return root; } diff --git a/MobileApp/app/src/main/res/layout/fragment_einstellungen.xml b/MobileApp/app/src/main/res/layout/fragment_einstellungen.xml index c412593..bb1f0b8 100644 --- a/MobileApp/app/src/main/res/layout/fragment_einstellungen.xml +++ b/MobileApp/app/src/main/res/layout/fragment_einstellungen.xml @@ -9,8 +9,8 @@ + + + + \ No newline at end of file diff --git a/MobileApp/app/src/main/res/layout/fragment_manuell.xml b/MobileApp/app/src/main/res/layout/fragment_manuell.xml index 46ce4a4..f4988a7 100644 --- a/MobileApp/app/src/main/res/layout/fragment_manuell.xml +++ b/MobileApp/app/src/main/res/layout/fragment_manuell.xml @@ -10,13 +10,13 @@ android:id="@+id/joystick" android:layout_width="308dp" android:layout_height="317dp" - android:layout_marginTop="12dp" - android:background="@mipmap/kreis" + android:layout_marginTop="68dp" + android:background="@mipmap/blank" app:JV_buttonColor="#FFFFFF" app:JV_buttonSizeRatio="11%" app:JV_fixedCenter="false" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.481" + app:layout_constraintHorizontal_bias="0.495" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -25,6 +25,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="8dp" + android:layout_marginTop="5dp" android:layout_marginEnd="8dp" android:textAlignment="center" android:textSize="15sp" @@ -37,9 +38,9 @@