From 1a6230570a8f1419173b2ecd22548cc01ab08195 Mon Sep 17 00:00:00 2001 From: whycq <913841844@qq.com> Date: 星期一, 20 一月 2025 16:44:42 +0800 Subject: [PATCH] # --- app/src/main/java/com/example/agvcontroller/StartActivity.java | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 102 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/example/agvcontroller/StartActivity.java b/app/src/main/java/com/example/agvcontroller/StartActivity.java index 5205f98..74142f4 100644 --- a/app/src/main/java/com/example/agvcontroller/StartActivity.java +++ b/app/src/main/java/com/example/agvcontroller/StartActivity.java @@ -1,10 +1,21 @@ package com.example.agvcontroller; +import android.content.Context; +import android.content.Intent; import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; + +import com.example.agvcontroller.socket.SocketManager; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.List; @@ -13,20 +24,104 @@ private RecyclerView recyclerView; private List<Item> items; + private ItemAdapter adapter; + private Button addItem; + SocketManager socketManager; + @Override protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); setContentView(R.layout.activity_start); + addItem = findViewById(R.id.addbtn); + addItem.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(StartActivity.this, EditeActivity.class); + startActivity(intent); + } + }); - //recyclerView = findViewById(R.id.recyclerView); - //recyclerView.setLayoutManager(new LinearLayoutManager(this)); - // - //items = new ArrayList<>(); - //items.add(new Item("192.168", "Item 1", "Description of Item 1")); - //items.add(new Item("192.168", "Item 2", "Description of Item 2")); - //items.add(new Item("192.168", "Item 3", "Description of Item 3")); + recyclerView = findViewById(R.id.recyclerView); + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + + items = new ArrayList<>(); + + adapter = new ItemAdapter(items); + recyclerView.setAdapter(adapter); + + EventBus.getDefault().register(this); + + adapter.setmOnItemClickListener(new ItemAdapter.OnItemClickListener() { + + @Override + public void onItemClick(View view, int position) { + Context context = view.getContext(); + Intent intent = new Intent(context,MainActivity.class); + String ip = items.get(position).getIp(); + String clientId = items.get(position).getClientId(); + String agvNo = items.get(position).getAgvNo(); + + + intent.putExtra("ip", ip); + intent.putExtra("agvNo", agvNo); + intent.putExtra("clientId", clientId); + startActivityForResult(intent,1); + } + }); + socketManager = new SocketManager(); + socketManager.startServer(8022); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onDeviceConnected(Item deviceAddress) { + Log.i("EventBus", "Received device connected: " + deviceAddress); + + + if (!items.isEmpty()) { + int sameIp = 0; + for (Item item : items) { + if (item.getIp().equals(deviceAddress.getIp())) { + item.setAgvNo(deviceAddress.getAgvNo()); + item.setPort(deviceAddress.getPort()); + item.setClientId(deviceAddress.getClientId()); + item.setStatus(deviceAddress.getStatus()); + adapter.notifyItemChanged(items.indexOf(item)); + MainActivity.upClient(deviceAddress.getClientId()); + sameIp++; + } + Log.i("Item",item.getIp()); + Log.i("Item",item.getClientId()); + } + if (sameIp == 0) { + items.add(new Item(deviceAddress.getClientId() + ,deviceAddress.getIp() + ,deviceAddress.getPort() + ,deviceAddress.getAgvNo() + ,deviceAddress.getStatus())); + } + } else { + items.add(new Item(deviceAddress.getClientId() + ,deviceAddress.getIp() + ,deviceAddress.getPort() + ,deviceAddress.getAgvNo() + ,deviceAddress.getStatus())); + } + adapter.notifyDataSetChanged(); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onDeviceDisconnected(String deviceIp) { + Log.i("EventBus", "Received device disconnected: " + deviceIp); + for (int i = 0; i < items.size(); i++) { + if (items.get(i).getIp().equals(deviceIp)) { + items.remove(i); + break; + } + } + adapter.notifyDataSetChanged(); } } \ No newline at end of file -- Gitblit v1.9.1