123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- package com.example.lfrmobileapp.ui.home;
-
- import android.annotation.SuppressLint;
- import android.content.Context;
- import android.content.SharedPreferences;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.MotionEvent;
- 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.DataTransferAsyncTask;
- import com.example.lfrmobileapp.MainActivity;
- 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 {
-
- //Keys for Shared Preferences
- String ipKey = "ipkey";
- String portKey = "portkey";
-
- //Default Ip-Address and Port
- String ipAddress = "192.168.0.1";
- int port = 8000;
-
- MainActivity mainActivity;
-
- Communication com = new Communication();
- long lastOnMoveCall = System.currentTimeMillis();
-
-
- private FragmentManuellBinding binding;
-
- @Override
- public void onAttach(Context context) {
- super.onAttach(context);
- mainActivity = (MainActivity) context;
- }
-
- public View onCreateView(@NonNull LayoutInflater inflater,
- ViewGroup container, Bundle savedInstanceState) {
- HomeViewModel homeViewModel =
- new ViewModelProvider(this).get(HomeViewModel.class);
-
- binding = FragmentManuellBinding.inflate(inflater, container, false);
- View root = binding.getRoot();
-
- SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
- SharedPreferences.Editor editor = sharedPref.edit();
-
- //Get saved Ip-Adress and Port from Shared Preferences
- ipAddress = sharedPref.getString(ipKey, "");
- port = sharedPref.getInt(portKey, 0);
-
- //Set text from Textview
- final TextView textView = binding.textHome;
- homeViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
-
-
-
- binding.rotateLeft.setOnTouchListener(new View.OnTouchListener(){
- @SuppressLint("ClickableViewAccessibility")
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if (mainActivity.connected) {
- if (event.getAction() == MotionEvent.ACTION_UP) {
- binding.rotateLeft.performClick();
- mainActivity.sendTelegram(com.telegram(new int[]{0, 0, 0, 0}, 0));
- return true;
- } else {
- mainActivity.sendTelegram(com.telegram(new int[]{-1, 1, -1, 1}, 50));
- }
- }
- return false;
- }
- });
-
- binding.rotateRight.setOnTouchListener(new View.OnTouchListener(){
- @SuppressLint("ClickableViewAccessibility")
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if (mainActivity.connected){
- if(event.getAction() == MotionEvent.ACTION_UP){
- binding.rotateRight.performClick();
- mainActivity.sendTelegram(com.telegram(new int[]{0, 0, 0, 0}, 0));
- return true;
- }else{
- mainActivity.sendTelegram(com.telegram(new int[]{1, -1, 1, -1}, 50));
- }
- }
- return false;
- }
- });
-
-
- JoystickView joystick = (JoystickView) binding.joystick;
- joystick.setOnMoveListener(new JoystickView.OnMoveListener() {
- @Override
- public void onMove(int angle, int strength) {
- boolean send = false;
- if (System.currentTimeMillis() - lastOnMoveCall > 250){
- send = true;
- lastOnMoveCall = System.currentTimeMillis();
- }
- String telegram = "";
-
- homeViewModel.setText(Integer.toString(angle), Integer.toString(strength));
- //8 segments of the joystick
- if((angle >= 338 || angle < 22) && strength != 0){
- joystick.setBackgroundResource(R.mipmap.right);
- telegram = com.telegram(new int[]{1, -1, -1, 1}, strength);
- }else if((angle >= 22 && angle < 67) && strength != 0){
- joystick.setBackgroundResource(R.mipmap.right_forward);
- telegram = com.telegram(new int[]{1, 0, 0, 1}, strength);
- }else if((angle >=67 && angle < 112) && strength != 0){
- joystick.setBackgroundResource(R.mipmap.forward);
- telegram = com.telegram(new int[]{1, 1, 1, 1}, strength);
- }else if((angle >=112 && angle < 157) && strength != 0){
- joystick.setBackgroundResource(R.mipmap.left_forward);
- telegram = com.telegram(new int[]{0, 1, 1, 0}, strength);
- }else if((angle >=157 && angle < 202) && strength != 0){
- joystick.setBackgroundResource(R.mipmap.left);
- telegram = com.telegram(new int[]{-1, 1, 1, -1}, strength);
- }else if((angle >=202 && angle < 247) && strength != 0){
- joystick.setBackgroundResource(R.mipmap.left_back);
- telegram = com.telegram(new int[]{-1, 0, 0, -1}, strength);
- }else if((angle >=247 && angle < 292) && strength != 0){
- joystick.setBackgroundResource(R.mipmap.back);
- telegram = com.telegram(new int[]{-1, -1, -1, -1}, strength);
- }else if((angle >=292 && angle < 337) && strength != 0){
- joystick.setBackgroundResource(R.mipmap.right_back);
- telegram = com.telegram(new int[]{0, -1, -1, 0}, strength);
- }
- else{
- joystick.setBackgroundResource(R.mipmap.blank);
- telegram = com.telegram(new int[]{0, 0, 0, 0}, strength);
- send=true;
- }
- if (send && mainActivity.connected)
- {
- mainActivity.sendTelegram(telegram);
- // Log.v("TAG", telegram + "\n");
- }
- }
- });
-
- return root;
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- // dataTransferAsyncTask.cancel(false);
- binding = null;
- }
- }
|