丰巢系统设计
apk部分
安卓开发版本AndroidStudio3.5.3
/*.xml 布局*/
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="43dp"
android:id="@+id/code_text"
android:layout_marginTop="20dp"
android:layout_gravity="center"
android:inputType="number"
android:maxLength="4"
android:hint="Please Input Code Number:"/>
<Button
android:layout_width="wrap_content"
android:layout_height="50dp"
android:text="发送验证码"
android:onClick="btn_send"
android:id="@+id/btn_send"
android:layout_gravity="center"
android:layout_marginTop="50dp"/>
<Button
android:id="@+id/Button"
style="@android:style/Widget.Material.Light.Button.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="200dp"
android:layout_centerHorizontal="true"
android:onClick="butten"
android:text="连接服务器"
tools:targetApi="lollipop" />
</LinearLayout>
/*.java主体部分*/
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class MainActivity extends AppCompatActivity {
Button button;
Button btn_send; //发送
EditText code_text;
java.net.Socket Socket = null;
boolean buttontitle = true;//用于判断按钮:连接服务器 状态
boolean RD = false;//用于控制读数据线程是否执行
java.io.OutputStream OutputStream = null;//输出流,用于发送数据
java.io.InputStream InputStream = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.Button);
btn_send = findViewById(R.id.btn_send);
code_text =findViewById(R.id.code_text);
}
//用线程创建socket连接
private class Connect_Thread extends Thread{
public void run() {
String ip = "192.168.137.111";
int port = 8080;
try {
Socket = new Socket(ip,port);
InputStream = Socket.getInputStream();
OutputStream = Socket.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//连接服务器按钮按下
public void butten(View view){
if(buttontitle==true)//如果按钮没有被按下,则按钮状态改为按下
{
buttontitle = false;
RD = true;//读数据线程可以执行
Connect_Thread Connect_thread = new Connect_Thread();//并创建一个新的线程,用于初始化socket
Connect_thread.start();
button.setText("断开连接"); //改变按钮标题
}
else
{
button.setText("连接服务器");//如果按钮已经被按下,则改变按钮标题
buttontitle = true; //储存状态的变量反转
try{
Socket.close(); //取消socket
Socket = null; //socket设置为空
RD = false; //读数据线程不执行
}catch (Exception e){
e.printStackTrace();
}
}
}
private class ThreadSendData extends Thread{
public void run(){
try {
OutputStream.write(code_text.getText().toString().getBytes());
}catch (Exception e){
e.printStackTrace();
}
}
}
public void btn_send(View view) {
ThreadSendData t = new ThreadSendData();
t.start();
}
}
注意:在AndroidMainfest.xml文件中加入:(用于获取手机网络和WiFi权限)
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />