app/src/main/java/com/example/agvcontroller/Item.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/example/agvcontroller/ItemAdapter.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/example/agvcontroller/MainActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/example/agvcontroller/StartActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/example/agvcontroller/socket/SocketManager.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/com/example/agvcontroller/Item.java
@@ -5,6 +5,7 @@ private String text; private String ip; private String agvNo; private int id; public Item(String text,String ip,String agvNo) { this.text = text; @@ -23,4 +24,8 @@ public String getAgvNo() { return agvNo; } public int getId() { return id; } } app/src/main/java/com/example/agvcontroller/ItemAdapter.java
@@ -3,6 +3,7 @@ import static androidx.core.content.ContextCompat.startActivity; import android.content.Intent; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -29,8 +30,18 @@ super(itemView); title = itemView.findViewById(R.id.item_title); ip = itemView.findViewById(R.id.item_ip); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.i("List","123"); } }); } } @Override public int getItemViewType(int position) { @@ -45,7 +56,25 @@ @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false); return new ViewHolder(view); ViewHolder viewHolder = new ItemAdapter.ViewHolder(view); view.setOnClickListener(this::onClick); return viewHolder; } private void onClick(View view) { if (mOnItemClickListener != null) { mOnItemClickListener.onItemClick(view,(int)view.getTag()); } } private OnItemClickListener mOnItemClickListener = null; public static interface OnItemClickListener { void onItemClick(View view,int position); } public void setmOnItemClickListener(OnItemClickListener listener) { this.mOnItemClickListener = listener; } @Override @@ -61,6 +90,8 @@ Item item = itemList.get(position); holder.ip.setText("设备IP: " + item.getIp()); holder.title.setText("设备编号: " + item.getText()); holder.itemView.setTag(position); } } app/src/main/java/com/example/agvcontroller/MainActivity.java
@@ -4,16 +4,19 @@ import androidx.recyclerview.widget.RecyclerView; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Vibrator; import android.util.Log; import android.view.View; import android.widget.Button; import com.example.agvcontroller.socket.NettyServerHandler; import com.example.agvcontroller.socket.SocketManager; import com.example.agvcontroller.socket.SocketTask; import java.net.Socket; import java.util.Arrays; import java.util.List; import io.netty.buffer.ByteBuf; @@ -29,6 +32,7 @@ private Button vibrateButton; private Socket socket; SocketManager socketManager; NettyServerHandler nettyServerHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -43,8 +47,8 @@ // 设置端口号并启动服务端 //SocketManager.getInstance().setPort(8080); socketManager = new SocketManager(); socketManager.startServer(8080); //socketManager = new SocketManager(); //socketManager.startServer(8080); // 启动服务端 //new Thread(() -> { @@ -54,21 +58,23 @@ vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); vibrateButton = findViewById(R.id.btn_stop); Intent intent = getIntent(); String clientId = intent.getStringExtra("message"); Log.i("message1",clientId); vibrateButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (vibrator != null && vibrator.hasVibrator()) { vibrator.vibrate(500); //vibrator.vibrate(500); } //socket = new Socket(); //new SocketTask().execute("192.168.4.188", 802); //ByteBuf message = Unpooled.copiedBuffer("Hello, Netty!", CharsetUtil.UTF_8); //SocketManager.getInstance().sendMessage(message); //String clientId = "/192.168.4.188:63160"; byte[] message1 = new byte[]{0x01, 0x02, 0x03, 0x04}; // 示例消息 Log.i("message2",clientId); Log.i("message3", Arrays.toString(message1)); String clientId = "/192.168.4.188:63160"; byte[] message = new byte[]{0x01, 0x02, 0x03, 0x04}; // 示例消息 socketManager.sendMessage(clientId, message); // 发送消息到客户端 nettyServerHandler.sendMessageToClient(clientId, message1); // 发送消息到客户端 } }); @@ -80,6 +86,6 @@ //SocketManager.getInstance().disconnect(); //SocketManager.getInstance().stopServer(); socketManager.stopServer(); // 停止服务器 //socketManager.stopServer(); // 停止服务器 } } app/src/main/java/com/example/agvcontroller/StartActivity.java
@@ -1,7 +1,10 @@ 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 androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; @@ -24,6 +27,7 @@ SocketManager socketManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_start); @@ -37,8 +41,18 @@ 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); intent.putExtra("message", items.get(position).getIp()); startActivityForResult(intent,1); } }); socketManager = new SocketManager(); socketManager.startServer(8080); socketManager.startServer(8022); } @Subscribe(threadMode = ThreadMode.MAIN) app/src/main/java/com/example/agvcontroller/socket/NettyServerHandler.java
@@ -16,6 +16,7 @@ import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.Arrays; import java.util.concurrent.ConcurrentHashMap; public class NettyServerHandler extends ChannelInboundHandlerAdapter { @@ -89,13 +90,7 @@ } public static void sendMessageToClient(String clientId, byte[] message) { Channel channel = channelMap.get(clientId); if (channel != null && channel.isActive()) { ByteBuf buf = Unpooled.wrappedBuffer(message); channel.writeAndFlush(buf); } else { Log.d(TAG, "Client " + clientId + " is not connected"); } } @Override app/src/main/java/com/example/agvcontroller/socket/SocketManager.java
@@ -1,6 +1,10 @@ package com.example.agvcontroller.socket; import android.util.Log; import java.io.Serializable; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelInitializer; @@ -44,6 +48,7 @@ } public void sendMessage(String clientId, byte[] message) { Log.i("Socket Manager",clientId); NettyServerHandler.sendMessageToClient(clientId, message); }