Compare commits

..

No commits in common. "e248dc3e0c92b6ee59953e7c97baaf2b6c61b47c" and "b361fad52d54ea189c197232f23474d4048faa81" have entirely different histories.

7 changed files with 65 additions and 102 deletions

View File

@ -25,7 +25,7 @@
</map>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

View File

@ -7,38 +7,39 @@ import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
public class DataTransferAsyncTask extends AsyncTask<Void, Void, Void> {
private static final double sendRatePerSecond = 4.0;
private static final int sendRatePerSecond = 4;
private String ipAdress;
private int portNumber;
private String telegram;
private boolean connected;
private final ExtendedSocket socket;
private BlockingQueue<String> blockingQueue;
public DataTransferAsyncTask(ExtendedSocket socket) {
this.socket = socket;
this.connected = true;
this.blockingQueue = new LinkedBlockingQueue<>();
public DataTransferAsyncTask(String ipAdress, int portNumber) {
this.ipAdress = ipAdress;
this.portNumber = portNumber;
this.telegram = "";
this.connected = false;
}
public void writeTelegram(String telegram) {
// Schau mal hier bei Fehler
blockingQueue.offer(telegram);
this.telegram = telegram;
}
@Override
protected Void doInBackground(Void... params) {
while(!isCancelled() && connected) {
while(!isCancelled()) {
try {
synchronized (socket) {
String message = blockingQueue.poll((long) (1000.0/sendRatePerSecond), TimeUnit.MILLISECONDS);
if(message != null){
Log.v("TAG", message + "\n");
socket.sendMessage(message);
}
Socket socket = new Socket(ipAdress, portNumber);
DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
connected = true;
while (!isCancelled() && telegram.length() > 0) {
Log.v("TAG", telegram + "\n");
outputStream.writeBytes(telegram);
outputStream.flush();
Thread.sleep(1000 / sendRatePerSecond);
}
socket.close();
} catch (Exception e) {
e.printStackTrace();
connected = false;
@ -46,4 +47,9 @@ public class DataTransferAsyncTask extends AsyncTask<Void, Void, Void> {
}
return null;
}
public boolean getConnectionState(){
return connected;
}
}

View File

@ -1,25 +0,0 @@
package com.example.lfrmobileapp;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
public class ExtendedSocket {
private final Socket socket;
public ExtendedSocket(Socket socket) {
this.socket = socket;
}
public void sendMessage(String message) throws IOException {
synchronized (socket){
DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
outputStream.writeBytes(message);
outputStream.flush();
}
}
public void closeSocket() throws IOException {
this.socket.close();
}
}

View File

@ -3,7 +3,6 @@ package com.example.lfrmobileapp;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.Toast;
import com.google.android.material.bottomnavigation.BottomNavigationView;
@ -15,17 +14,11 @@ import androidx.navigation.ui.NavigationUI;
import com.example.lfrmobileapp.databinding.ActivityMainBinding;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
private ExtendedSocket socket;
private DataOutputStream outputStream;
private DataTransferAsyncTask dataTransferAsyncTask;
Boolean connected = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -45,30 +38,5 @@ public class MainActivity extends AppCompatActivity {
NavigationUI.setupWithNavController(binding.navView, navController);
}
public boolean connectToWifi(String ipAddress, int port){
new Thread(new Runnable(){
public void run(){
try {
Socket tempSocket = new Socket(ipAddress, port);
socket = new ExtendedSocket(tempSocket);
socket.sendMessage("Verbindung aufbauen");
connected = true;
} catch (Exception e) {
e.printStackTrace();
connected = false;
}
}
}).start();
if(connected){
dataTransferAsyncTask = new DataTransferAsyncTask(socket);
dataTransferAsyncTask.execute();
return true;
}else{
return false;
}
}
}
}

View File

@ -29,6 +29,13 @@ import java.util.Arrays;
import kotlin.collections.UArraySortingKt;
public class DashboardFragment extends Fragment {
String ipKey = "ipkey";
String portKey = "portkey";
String ipAddress = "192.168.0.1";
int port = 8000;
Communication com = new Communication();
private FragmentAutomatikBinding binding;
@ -55,6 +62,12 @@ public class DashboardFragment extends Fragment {
//Get Arraylist from Shared Preferences String
ArrayList<String> autoList = stringToArraylist(sharedPref.getString(listKey, ""));
ipAddress = sharedPref.getString(ipKey, "");
port = sharedPref.getInt(portKey, -1);
dataTransferAsyncTask = new DataTransferAsyncTask(ipAddress, port);
dataTransferAsyncTask.execute();
binding.startAutomatic.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override

View File

@ -18,7 +18,6 @@ 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;
@ -35,19 +34,11 @@ public class HomeFragment extends Fragment {
String ipAddress = "192.168.0.1";
int port = 8000;
MainActivity mainActivity;
Communication com = new Communication();
DataTransferAsyncTask dataTransferAsyncTask;
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 =
@ -67,7 +58,8 @@ public class HomeFragment extends Fragment {
final TextView textView = binding.textHome;
homeViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
dataTransferAsyncTask = new DataTransferAsyncTask(ipAddress, port);
dataTransferAsyncTask.execute();
binding.rotateLeft.setOnTouchListener(new View.OnTouchListener(){
@SuppressLint("ClickableViewAccessibility")
@ -146,7 +138,7 @@ public class HomeFragment extends Fragment {
@Override
public void onDestroyView() {
super.onDestroyView();
// dataTransferAsyncTask.cancel(false);
dataTransferAsyncTask.cancel(false);
binding = null;
}
}

View File

@ -15,7 +15,6 @@ import androidx.lifecycle.ViewModelProvider;
import com.example.lfrmobileapp.Communication;
import com.example.lfrmobileapp.DataTransferAsyncTask;
import com.example.lfrmobileapp.MainActivity;
import com.example.lfrmobileapp.databinding.FragmentEinstellungenBinding;
import java.io.DataOutputStream;
@ -52,7 +51,6 @@ import java.net.Socket;
public class NotificationsFragment extends Fragment {
Boolean connected = false;
MainActivity mainActivity;
String ipKey = "ipkey";
String portKey = "portkey";
@ -67,12 +65,6 @@ public class NotificationsFragment extends Fragment {
private FragmentEinstellungenBinding binding;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mainActivity = (MainActivity) context;
}
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
NotificationsViewModel notificationsViewModel =
@ -95,7 +87,9 @@ public class NotificationsFragment extends Fragment {
binding.port.setText("");
}
// dataTransferAsyncTask = new DataTransferAsyncTask(ipAddress, port);
dataTransferAsyncTask = new DataTransferAsyncTask(ipAddress, port);
final Button button = binding.connect;
button.setOnClickListener(new View.OnClickListener() {
@ -103,7 +97,22 @@ public class NotificationsFragment extends Fragment {
ipAddress = String.valueOf(binding.ipAdress.getText());
port = Integer.parseInt(String.valueOf(binding.port.getText()));
connected = mainActivity.connectToWifi(ipAddress, port);
new Thread(new Runnable(){
public void run(){
try {
Socket socket = new Socket(ipAddress, port);
DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
outputStream.writeBytes("Verbindung aufbauen");
outputStream.flush();
socket.close();
connected = true;
} catch (Exception e) {
e.printStackTrace();
connected = false;
}
}
}).start();
if(connected){
editor.putString(ipKey, ipAddress);
@ -114,7 +123,7 @@ public class NotificationsFragment extends Fragment {
}else{
Toast toast = Toast.makeText(v.getContext(), connectionFailed, duration);
toast.show();
// dataTransferAsyncTask.cancel(true);
dataTransferAsyncTask.cancel(true);
}
}
});
@ -125,7 +134,7 @@ public class NotificationsFragment extends Fragment {
@Override
public void onDestroyView() {
super.onDestroyView();
// dataTransferAsyncTask.cancel(true);
dataTransferAsyncTask.cancel(true);
binding = null;
}
}