From 6ee087d628cb1107e1f741d15281ccd4c4dcc838 Mon Sep 17 00:00:00 2001 From: endian11 <Dana_Lee1016@126.com> Date: 星期一, 25 十一月 2019 10:29:51 +0800 Subject: [PATCH] 加入简单tcp连接,增加internet权限和tcp调试界面 --- app/src/main/AndroidManifest.xml | 2 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java | 4 app/src/main/java/safeluck/drive/evaluation/tcp/ConnectThread.java | 88 ++++++++++++++++++++++ app/src/main/res/layout/layout_tcpclient.xml | 68 +++++++++++++++++ app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java | 75 ++++++++++++++++++ 5 files changed, 235 insertions(+), 2 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1390cee..d9e4c84 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,6 +5,8 @@ <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.INTERNET"/> + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java new file mode 100644 index 0000000..95683d9 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java @@ -0,0 +1,75 @@ +package safeluck.drive.evaluation.fragment; + +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.design.widget.TextInputEditText; +import android.support.v7.widget.AppCompatEditText; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; + +import me.yokeyword.fragmentation.SupportFragment; +import safeluck.drive.evaluation.R; +import safeluck.drive.evaluation.tcp.ConnectThread; + +/** + * MyApplication2 + * Created by lzw on 2019/10/21. 17:56:51 + * 閭锛�632393724@qq.com + * All Rights Saved! Chongqing AnYun Tech co. LTD + */ +public class TcpFragment extends SupportFragment implements View.OnClickListener { + + + private TextInputEditText ip; + private TextInputEditText port; + private Button btn_connect; + private Button btn_send; + private ConnectThread connectThread; + private AppCompatEditText sendEditText; + + public static TcpFragment newInstance() { + return new TcpFragment(); + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.layout_tcpclient, container, false); + initView(view); + return view; + } + + private void initView(View view) { + ip = view.findViewById(R.id.input_ip); + port = view.findViewById(R.id.input_port); + sendEditText = view.findViewById(R.id.sendtxt); + + btn_connect = view.findViewById(R.id.btn_connect); + btn_send = view.findViewById(R.id.btn_send); + + btn_send.setOnClickListener(this); + btn_connect.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + switch (v.getId()){ + case R.id.btn_connect: + String serverIp = ip.getText().toString().trim(); + String serverPort = port.getText().toString().trim(); + connectThread = new ConnectThread(serverIp,Integer.parseInt(serverPort)); + connectThread.start(); + + break; + case R.id.btn_send: + if (connectThread != null){ + connectThread.sendMessage(sendEditText.getText().toString().trim()); + sendEditText.getText().clear(); + } + break; + } + } +} diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java index 1bf216c..2da9ffb 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java @@ -57,9 +57,9 @@ public void onClick(View v) { switch (v.getId()){ case R.id.view_map: - MapFragment passwordFragment = findFragment(MapFragment.class); + TcpFragment passwordFragment = findFragment(TcpFragment.class); if (passwordFragment == null) { - passwordFragment = (MapFragment) MapFragment.newInstance(); + passwordFragment = (TcpFragment) TcpFragment.newInstance(); start(passwordFragment); } else { start(passwordFragment); diff --git a/app/src/main/java/safeluck/drive/evaluation/tcp/ConnectThread.java b/app/src/main/java/safeluck/drive/evaluation/tcp/ConnectThread.java new file mode 100644 index 0000000..558efd8 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/tcp/ConnectThread.java @@ -0,0 +1,88 @@ +package safeluck.drive.evaluation.tcp; + +import android.provider.ContactsContract; +import android.util.Log; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; + + +/** + * MyApplication2 + * Created by lzw on 2019/10/21. 14:14:30 + * 閭锛�632393724@qq.com + * All Rights Saved! Chongqing AnYun Tech co. LTD + */ +public class ConnectThread extends Thread { + + private static final String TAG = "TCPClient"; + private Socket mSocket = null; + private boolean isConnected = false; + private byte[] revBytes = new byte[1024]; + private String ip; + private int port; + private InputStream inputStream ; + private OutputStream mOutputStream; + + public ConnectThread(String ip,int port){ + this.ip = ip; + this.port = port; + } + + @Override + public void run() { + super.run(); + try { + Log.i(TAG, "寮�濮嬪缓绔婼ocket"+ip+":"+port); + mSocket = new Socket(ip,port); + + mOutputStream = mSocket.getOutputStream(); + inputStream = mSocket.getInputStream(); + isConnected = true; + while (isConnected){ + int length = 0; + while ((length=(inputStream.read(revBytes))) != -1){ + + String str= new String(revBytes,"GBK"); + Log.i(TAG, "鏀跺埌娑堟伅: "+str.trim()); + + } + } + } catch (IOException e) { + Log.i(TAG, "Socket寤虹珛澶辫触"); + isConnected = false; + e.printStackTrace(); + } + } + + public void sendMessage(String lzw) { + if (mOutputStream == null){ + Log.i(TAG, "sendMessage fail锛宲lease create socket first锛侊紒锛�"); + }else{ + + new Thread(new SendRunnable(lzw)).start(); + } + } + + class SendRunnable implements Runnable{ + private String message ; + public SendRunnable(String s) { + this.message = s; + } + + @Override + public void run() { + try { + Log.i(TAG, "鍙戦��: "+message); + mSocket.sendUrgentData(0xff); + mOutputStream.write(message.getBytes("GBK")); + } catch (IOException e) { + Log.i(TAG, "鍙戦�佸け璐�"); + e.printStackTrace(); + } + } + } +} diff --git a/app/src/main/res/layout/layout_tcpclient.xml b/app/src/main/res/layout/layout_tcpclient.xml new file mode 100644 index 0000000..180f331 --- /dev/null +++ b/app/src/main/res/layout/layout_tcpclient.xml @@ -0,0 +1,68 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:padding="10dp" + android:background="@android:color/white" + android:orientation="vertical"> +<LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingLeft="10dp" + android:paddingRight="10dp" + android:orientation="horizontal"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + + android:text="鏈嶅姟鍣↖P鍦板潃:"/> + <android.support.design.widget.TextInputEditText + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/input_ip" + android:text="192.168.10.234" + /> + +</LinearLayout> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingLeft="10dp" + android:paddingRight="10dp" + android:orientation="horizontal"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鏈嶅姟鍣ㄧ鍙e彿锛�:"/> + <android.support.design.widget.TextInputEditText + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/input_port" + android:text="60000" + /> + +</LinearLayout> + <Button + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/btn_connect" + android:text="杩炴帴"/> + <android.support.v7.widget.AppCompatEditText + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:id="@+id/sendtxt"/> + <Button + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="10dp" + android:layout_gravity="end" + android:id="@+id/btn_send" + android:text="鍙戦��"/> + <TextView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@android:color/darker_gray" + android:textSize="19sp" + android:id="@+id/content" + android:text="flskajf"/> +</LinearLayout> -- Gitblit v1.8.0