PC与Android设备通过USB建立通信连接
16lz
2021-01-23
通过adb的adb forward指令可以方便的通过USB连接建立PC端与Android的连接。
1. Android设备通过USB连接到计算机上,android手机打开开发者选项;
2. 确保手机连接到计算机的情况下,计算机上运行adb forward tcp:8000 tcp:9000,将PC端8000端口的数据, 转发到Android端的9000端口上;
3. Android设备上编写APP,作为网络通信的Server端,建立ServerSocket,打开端口9000;
4. PC机上编写程序,作为网络通信的Client端,打开端口8000;
5. PC端与Android端即可建立Socket连接进行数据通信。
Android端程序
public class MainActivity extends Activity { private static final String TAG = "ServerThread"; ServerThread serverThread; Handler handler = new Handler() { @SuppressLint("NewApi") @Override public void handleMessage(Message msg) { Toast.makeText(getApplicationContext(), msg.getData().getString("MSG", "Toast"), Toast.LENGTH_SHORT).show(); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); serverThread = new ServerThread(); serverThread.start(); } @Override protected void onDestroy() { super.onDestroy(); serverThread.setIsLoop(false); } class ServerThread extends Thread { boolean isLoop = true; public void setIsLoop(boolean isLoop) { this.isLoop = isLoop; } @Override public void run() { Log.d(TAG, "running"); ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(9000); while (isLoop) { Socket socket = serverSocket.accept(); Log.d(TAG, "accept"); DataInputStream inputStream = new DataInputStream(socket.getInputStream()); DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream()); while(isLoop){ outputStream.writeUTF("test data"); Log.w("johnny","send data"); Thread.sleep(1000); } socket.close(); } } catch (Exception e) { e.printStackTrace(); } finally { Log.d(TAG, "destory"); if (serverSocket != null) { try { serverSocket.close(); } catch (Exception e) { e.printStackTrace(); } } } } }}
PC端程序
import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.Socket;import java.net.UnknownHostException;import java.util.Scanner;public class PCClient { public static boolean isLoop=true; public static void main(String[] args) throws IOException { showRecv(); } public static void showRecv() throws UnknownHostException, IOException{ Socket socket = new Socket("127.0.0.1", 8000); DataInputStream dis = new DataInputStream(socket.getInputStream()); DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); while(isLoop){ String textShow=dis.readUTF(); System.out.println(textShow); } socket.close(); }}
工程源码下载:http://download.csdn.net/detail/guokehello/9498050
参考文章:
http://gavinliu.cn/2016/01/19/Android-adb-forward%E5%AE%9E%E7%8E%B0PC%E5%92%8CAndroid%E7%9A%84Socket%E9%80%9A%E8%AE%AF/
更多相关文章
- Android程序库
- 让Qt应用程序跑在Android上
- 应用程序基础知识:activity和intent——Android开发秘籍
- Android系统源码阅读(10):Android 应用程序的消息处理机制
- 在 Android 上使用 XML 传输数据(附例子程序)
- 关于 Android 程序使用 Support Library 属性的几点说明
- Android:从程序员到架构师之路