|
|
|
@ -0,0 +1,191 @@
|
|
|
|
|
package com.example.sixaunyi;
|
|
|
|
|
|
|
|
|
|
import static androidx.constraintlayout.motion.utils.Oscillator.TAG;
|
|
|
|
|
|
|
|
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
|
|
|
|
|
|
|
|
import android.content.Intent;
|
|
|
|
|
import android.graphics.Bitmap;
|
|
|
|
|
import android.graphics.BitmapFactory;
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
import android.os.Handler;
|
|
|
|
|
import android.os.Message;
|
|
|
|
|
import android.util.Log;
|
|
|
|
|
import android.view.View;
|
|
|
|
|
import android.widget.Button;
|
|
|
|
|
import android.widget.ImageButton;
|
|
|
|
|
import android.widget.ImageView;
|
|
|
|
|
import android.widget.TextView;
|
|
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
|
|
|
|
import java.io.ByteArrayInputStream;
|
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.net.DatagramPacket;
|
|
|
|
|
import java.net.DatagramSocket;
|
|
|
|
|
import java.net.InetAddress;
|
|
|
|
|
import java.net.*;
|
|
|
|
|
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
|
|
|
|
|
public class VideoActivity extends AppCompatActivity {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final static String SEND_to_IP = "192.168.43.165"; //填写接收方IP
|
|
|
|
|
private final static String Recieve_IP = "192.168.43.165";//填服务器IP
|
|
|
|
|
private final static int SEND_PORT = 8888; //发送端口号
|
|
|
|
|
private final static int RECEIVE_PORT = 9999; //接收端口号
|
|
|
|
|
|
|
|
|
|
private boolean listenStatus = true; //接收线程的循环标识
|
|
|
|
|
private byte[] buf;
|
|
|
|
|
Bitmap bp;
|
|
|
|
|
|
|
|
|
|
private DatagramSocket receiveSocket;
|
|
|
|
|
private DatagramSocket sendSocket;
|
|
|
|
|
private DatagramSocket reveSocket;
|
|
|
|
|
private InetAddress serverAddr;
|
|
|
|
|
private SendHandler sendHandler = new SendHandler();
|
|
|
|
|
private ReceiveHandler receiveHandler = new ReceiveHandler();
|
|
|
|
|
private Button Trans_to_Detect;
|
|
|
|
|
private ImageView imgShow;
|
|
|
|
|
private Button btn;
|
|
|
|
|
private ImageButton Forward_btn;
|
|
|
|
|
private ImageButton Back_btn;
|
|
|
|
|
private ImageButton Left_btn;
|
|
|
|
|
private ImageButton Right_btn;
|
|
|
|
|
private ImageButton Down_btn;
|
|
|
|
|
private ImageButton Up_btn;
|
|
|
|
|
private ImageButton TurnLeft_btn;
|
|
|
|
|
private ImageButton TurnRight_btn;
|
|
|
|
|
private ImageButton TakeOff_btn;
|
|
|
|
|
private Button Landing_btn;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
|
setContentView(R.layout.activity_control);
|
|
|
|
|
imgShow = findViewById(R.id.imageView);
|
|
|
|
|
Forward_btn = findViewById(R.id.forward_button);
|
|
|
|
|
Back_btn = findViewById(R.id.backward_button);
|
|
|
|
|
Left_btn = findViewById(R.id.left_button);
|
|
|
|
|
Right_btn = findViewById(R.id.right_button);
|
|
|
|
|
Down_btn = findViewById(R.id.down_button);
|
|
|
|
|
Up_btn = findViewById(R.id.up_button);
|
|
|
|
|
TurnLeft_btn = findViewById(R.id.rotate_left_button);
|
|
|
|
|
TurnRight_btn = findViewById(R.id.rotate_right_button);
|
|
|
|
|
TakeOff_btn = findViewById(R.id.takeoff_button);
|
|
|
|
|
//Trans_to_Detect = findViewById(R.id.transfer_to_detect);
|
|
|
|
|
TakeOff_btn.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
UdpSendThread udpSendThread = new UdpSendThread();
|
|
|
|
|
udpSendThread.start();
|
|
|
|
|
udpSendThread.Send("TakeOff");
|
|
|
|
|
UdpReceiveThread udpReceiveThread = new UdpReceiveThread();
|
|
|
|
|
udpReceiveThread.start();
|
|
|
|
|
Log.i(TAG, "onClick: 2222222222222222222222222");
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
/*Trans_to_Detect.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View view) {
|
|
|
|
|
Intent intent = new Intent(VideoActivity.this, DetectActivity.class);
|
|
|
|
|
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
|
|
|
|
|
startActivity(intent);
|
|
|
|
|
}
|
|
|
|
|
});*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class ReceiveHandler extends Handler{
|
|
|
|
|
@Override
|
|
|
|
|
public void handleMessage(Message msg) {
|
|
|
|
|
super.handleMessage(msg);
|
|
|
|
|
imgShow.setImageBitmap(bp);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class SendHandler extends Handler {
|
|
|
|
|
@Override
|
|
|
|
|
public void handleMessage(Message msg) {
|
|
|
|
|
super.handleMessage(msg);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* UDP数据接受线程
|
|
|
|
|
* */
|
|
|
|
|
public class UdpReceiveThread extends Thread
|
|
|
|
|
{
|
|
|
|
|
@Override
|
|
|
|
|
public void run()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
reveSocket = new DatagramSocket(RECEIVE_PORT);
|
|
|
|
|
serverAddr = InetAddress.getByName(Recieve_IP);
|
|
|
|
|
//ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
|
|
|
while(listenStatus)
|
|
|
|
|
{
|
|
|
|
|
byte[] inBuf= new byte[1024*1024];
|
|
|
|
|
DatagramPacket inPacket=new DatagramPacket(inBuf,inBuf.length);
|
|
|
|
|
//out.write(inPacket.getData());
|
|
|
|
|
reveSocket.receive(inPacket);
|
|
|
|
|
if(!inPacket.getAddress().equals(serverAddr)){
|
|
|
|
|
throw new IOException("未知名的报文");
|
|
|
|
|
}
|
|
|
|
|
ByteArrayInputStream in = new ByteArrayInputStream(inPacket.getData());
|
|
|
|
|
receiveHandler.sendEmptyMessage(1);
|
|
|
|
|
bp = BitmapFactory.decodeStream(in);
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}finally {
|
|
|
|
|
reveSocket.close();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* UDP数据发送线程
|
|
|
|
|
* */
|
|
|
|
|
public class UdpSendThread extends Thread {
|
|
|
|
|
@Override
|
|
|
|
|
public void run() {
|
|
|
|
|
try {
|
|
|
|
|
buf ="test".getBytes();
|
|
|
|
|
// 创建DatagramSocket对象,使用端口8888
|
|
|
|
|
sendSocket = new DatagramSocket(8888);
|
|
|
|
|
|
|
|
|
|
serverAddr = InetAddress.getByName(SEND_to_IP);
|
|
|
|
|
|
|
|
|
|
DatagramPacket outPacket = new DatagramPacket(buf, buf.length, serverAddr, SEND_PORT);
|
|
|
|
|
sendSocket.send(outPacket);
|
|
|
|
|
|
|
|
|
|
sendSocket.close();
|
|
|
|
|
sendHandler.sendEmptyMessage(1);
|
|
|
|
|
Log.i(TAG, "run: 111111111111111111111111111111111111111111111111");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public void Send(String str){
|
|
|
|
|
try {
|
|
|
|
|
buf =str.getBytes();
|
|
|
|
|
// 创建DatagramSocket对象,使用端口8888
|
|
|
|
|
sendSocket = new DatagramSocket(8888);
|
|
|
|
|
serverAddr = InetAddress.getByName(SEND_to_IP);
|
|
|
|
|
DatagramPacket outPacket = new DatagramPacket(buf, buf.length, serverAddr, SEND_PORT);
|
|
|
|
|
sendSocket.send(outPacket);
|
|
|
|
|
|
|
|
|
|
sendSocket.close();
|
|
|
|
|
sendHandler.sendEmptyMessage(1);
|
|
|
|
|
Log.i(TAG, "run: 111111111111111111111111111111111111111111111111");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|