diff --git a/src/sixaunyi/.idea/deploymentTargetDropDown.xml b/src/sixaunyi/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 0000000..d776305
--- /dev/null
+++ b/src/sixaunyi/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/sixaunyi/.idea/sonarlint/issuestore/f/7/f7730cde41931660f06cfc32899edf44acf4d104 b/src/sixaunyi/.idea/sonarlint/issuestore/f/7/f7730cde41931660f06cfc32899edf44acf4d104
new file mode 100644
index 0000000..77f57c1
--- /dev/null
+++ b/src/sixaunyi/.idea/sonarlint/issuestore/f/7/f7730cde41931660f06cfc32899edf44acf4d104
@@ -0,0 +1,10 @@
+
+k java:S117'"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ß±÷üÿÿÿÿ
+q
+java:S1450"[Remove the "mLoginButton" field and declare it as a local variable in the relevant methods.(žÉÕ
+t
+java:S1171"YMove the contents of this initializer to a standard constructor or to field initializers.(ÒÌâ–øÿÿÿÿ
+G
+java:S1602 ",Remove useless curly braces around statement(òã‘õúÿÿÿÿ
+V
+java:S11263"AReplace this if-then-else statement by a single return statement.(Ö¼z
\ No newline at end of file
diff --git a/src/sixaunyi/.idea/sonarlint/issuestore/index.pb b/src/sixaunyi/.idea/sonarlint/issuestore/index.pb
index bd69223..00e75a7 100644
--- a/src/sixaunyi/.idea/sonarlint/issuestore/index.pb
+++ b/src/sixaunyi/.idea/sonarlint/issuestore/index.pb
@@ -22,4 +22,6 @@ j
j
:app/src/main/java/com/example/sixaunyi/DetectActivity.java,9\6\9668392b13e33166876f2a7d3f10eb5405e757ad
k
-;app/src/main/java/com/example/sixaunyi/ControlActivity.java,c\9\c99a584c2117ed2df42496451bb97ac1147f5ea0
\ No newline at end of file
+;app/src/main/java/com/example/sixaunyi/ControlActivity.java,c\9\c99a584c2117ed2df42496451bb97ac1147f5ea0
+i
+9app/src/main/java/com/example/sixaunyi/LoginActivity.java,f\7\f7730cde41931660f06cfc32899edf44acf4d104
\ No newline at end of file
diff --git a/src/sixaunyi/app/src/main/java/com/example/sixaunyi/MainActivity.java b/src/sixaunyi/app/src/main/java/com/example/sixaunyi/MainActivity.java
index a9ffef4..bbca317 100644
--- a/src/sixaunyi/app/src/main/java/com/example/sixaunyi/MainActivity.java
+++ b/src/sixaunyi/app/src/main/java/com/example/sixaunyi/MainActivity.java
@@ -52,8 +52,11 @@ import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
+import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.EasyPermissions;
@@ -107,6 +110,9 @@ public class MainActivity extends AppCompatActivity implements AMapLocationListe
private float distance;
private float MonitorDistance;
private UdpReceiveThread udpReceiveThread;
+ private ExecutorService mThreadPool = Executors.newCachedThreadPool();
+ private final static String SEND_to_IP = "192.168.39.47";
+ private final static int SEND_PORT = 8888;
@SuppressLint("MissingInflatedId")
@Override
@@ -117,6 +123,7 @@ public class MainActivity extends AppCompatActivity implements AMapLocationListe
ClearMarker_btn = findViewById(R.id.clearMarker_btn);
ChangeAct_btn = findViewById(R.id.change_btn);
ChangeAct_btn.show();
+
//tvContent = findViewById(R.id.tv_content);
/*åˆå§‹åŒ–定ä½,需è¦åœ¨æ£€æŸ¥ç‰ˆæœ¬ä¹‹å‰
*å› ä¸ºé…ç½®å¥½ä¹‹åŽæ‰èƒ½å¯åŠ¨å®šä½ï¼Œå¦åˆ™ä¼šæŠ¥é”™
@@ -397,9 +404,12 @@ public class MainActivity extends AppCompatActivity implements AMapLocationListe
public void changeAct(View view) {
udpReceiveThread.stopListening();
Intent intent = new Intent(MainActivity.this, VideoActivity.class);
+ Bundle b = new Bundle();
+ b.putString("Angle", MonitorAngle);
+ b.putFloat("Distance", MonitorDistance);
+ intent.putExtras(b);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
-
}
/**
@@ -490,8 +500,8 @@ public class MainActivity extends AppCompatActivity implements AMapLocationListe
private boolean mRunning;
private String mReceiveIp = Recieve_IP;
private String mExpectedData = "Motion detected!";
- private float mMonitorDistance = MonitorDistance;
- private String mMonitorAngle = MonitorAngle;
+ private float udpMonitorDistance = MonitorDistance;
+ private String udpMonitorAngle = MonitorAngle;
@Override
public void run() {
@@ -505,13 +515,7 @@ public class MainActivity extends AppCompatActivity implements AMapLocationListe
String receivedString = new String(data, 0, packet.getLength());
Log.d(TAG, "Received data: " + receivedString);
if (receivedString.equals(mExpectedData)) {
- Intent intent = new Intent(MainActivity.this, VideoActivity.class);
- Bundle b = new Bundle();
- b.putString("Angle", mMonitorAngle);
- b.putFloat("Distance", mMonitorDistance);
- intent.putExtras(b);
- intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
- startActivity(intent);
+ sendCommand("WARNING");
mRunning = false;
}
}
@@ -591,5 +595,40 @@ public class MainActivity extends AppCompatActivity implements AMapLocationListe
}
return String.valueOf(angle);
}
+ //UDPå‘é€çº¿ç¨‹
+ class SendRunnable implements Runnable {
+ byte[] mData;
+ InetAddress mAddress;
+ int mPort;
+
+ public SendRunnable(byte[] data, InetAddress address, int port) {
+ mData = data;
+ mAddress = address;
+ mPort = port;
+ }
+
+ @Override
+ public void run() {
+ try {
+ // 创建å‘逿•°æ®æŠ¥æ–‡
+ DatagramPacket packet = new DatagramPacket(mData, mData.length, mAddress, mPort);
+ // 创建 DatagramSocket 对象并å‘逿•°æ®æŠ¥æ–‡
+ DatagramSocket socket = new DatagramSocket();
+ socket.send(packet);
+
+ // å…³é— DatagramSocket 对象
+ socket.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ //å°è£…好的接å£å‡½æ•°
+ private void sendCommand(String str) throws UnknownHostException {
+ byte[] sendData = str.getBytes();
+ InetAddress address = InetAddress.getByName(SEND_to_IP);
+ SendRunnable sendRunnable1 = new SendRunnable(sendData, address, SEND_PORT);
+ mThreadPool.execute(sendRunnable1);
+ }
}
\ No newline at end of file
diff --git a/src/sixaunyi/app/src/main/java/com/example/sixaunyi/VideoActivity.java b/src/sixaunyi/app/src/main/java/com/example/sixaunyi/VideoActivity.java
index a10e82f..50b91af 100644
--- a/src/sixaunyi/app/src/main/java/com/example/sixaunyi/VideoActivity.java
+++ b/src/sixaunyi/app/src/main/java/com/example/sixaunyi/VideoActivity.java
@@ -27,6 +27,7 @@ import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.CompoundButton;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
@@ -43,6 +44,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import android.os.Bundle;
+import android.widget.ToggleButton;
public class VideoActivity extends AppCompatActivity {
private final static String SEND_to_IP = "192.168.39.47"; //填写接收方IP
@@ -71,6 +73,7 @@ public class VideoActivity extends AppCompatActivity {
private ImageButton Setting_btn;
private ImageButton TakeOff_btn;
private ImageButton Landing_btn;
+ private ToggleButton Mode_btn;
private String mangle;
private float mdistance;
// 创建一个å¯ç¼“å˜çš„线程æ±
@@ -85,7 +88,6 @@ public class VideoActivity extends AppCompatActivity {
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);
@@ -95,6 +97,19 @@ public class VideoActivity extends AppCompatActivity {
Landing_btn = findViewById(R.id.landing_button);
TurnRight_btn = findViewById(R.id.rotate_right_button);
TakeOff_btn = findViewById(R.id.takeoff_button);
+ Mode_btn = findViewById(R.id.toggleButton2);
+ Setting_btn = findViewById(R.id.setting_button);
+ Intent i = getIntent();
+ mdistance = i.getFloatExtra("Distance",0);
+ mangle = i.getStringExtra("Angle");
+ try {
+ Condition_Init();
+ } catch (UnknownHostException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ private void Control_Button_Init(){
+
TakeOff_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -109,25 +124,14 @@ public class VideoActivity extends AppCompatActivity {
Landing_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- ReceiveHandler receiveHandler = new ReceiveHandler();
- UdpReceiveThread StreamThread = new UdpReceiveThread(Recieve_IP,RECEIVE_PORT,receiveHandler);
-
-
try {
- StreamThread.startListen();
- StreamThread.start();
- } catch (SocketException | UnknownHostException e) {
- e.printStackTrace();
+ sendCommand("LAND");
+ } catch (UnknownHostException e) {
+ throw new RuntimeException(e);
}
+ Log.i(TAG, "onClick: LLLLLLLLLLLLLLLLLLand");
}
});
- Setting_btn = findViewById(R.id.setting_button);
- Button_Init();
- Intent i = getIntent();
- mdistance = i.getFloatExtra("Distance",0);
- mangle = i.getStringExtra("Angle");
- }
- private void Button_Init(){
Forward_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -224,6 +228,48 @@ public class VideoActivity extends AppCompatActivity {
}
});
}
+
+ private void Condition_Init() throws UnknownHostException {
+ sendCommand("AUTO");
+ ReceiveHandler receiveHandler = new ReceiveHandler();
+ UdpReceiveThread StreamThread = new UdpReceiveThread(Recieve_IP,RECEIVE_PORT,receiveHandler);
+ try {
+ StreamThread.startListen();
+ StreamThread.start();
+ } catch (SocketException | UnknownHostException e) {
+ e.printStackTrace();
+ }
+ Mode_btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+ if (isChecked) {
+ // 执行功能2
+ try {
+ changetoManual();
+ Control_Button_Init();
+ } catch (UnknownHostException e) {
+ throw new RuntimeException(e);
+ }
+ } else {
+ // 执行功能1
+ try {
+ changetoAuto();
+ } catch (UnknownHostException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ });
+ }
+
+ private void changetoAuto() throws UnknownHostException {
+ sendCommand("AUTO");
+ }
+
+ private void changetoManual() throws UnknownHostException {
+ sendCommand("MAN");
+ }
+
class ReceiveHandler extends Handler{
@Override
public void handleMessage(Message msg) {
@@ -280,11 +326,9 @@ public class VideoActivity extends AppCompatActivity {
byte[] inBuf = new byte[1024 * 1024];
DatagramPacket inPacket = new DatagramPacket(inBuf, inBuf.length);
reveSocket.receive(inPacket);
-
if (!inPacket.getAddress().equals(serverAddr)) {
throw new IOException("未知å的报文");
}
-
ByteArrayInputStream in = new ByteArrayInputStream(inPacket.getData());
receiveHandler.sendEmptyMessage(1);
bp = BitmapFactory.decodeStream(in);
@@ -333,34 +377,7 @@ public class VideoActivity extends AppCompatActivity {
SendRunnable sendRunnable1 = new SendRunnable(sendData, address, SEND_PORT);
mThreadPool.execute(sendRunnable1);
}
- /*
- * UDPæ•°æ®å‘é€çº¿ç¨‹
- * */
- public static class UdpSendThread extends Thread {
- private InetAddress sendToIP; // ç›®æ ‡ IP 地å€
- private int sendPort; // ç›®æ ‡ç«¯å£å·
- private byte[] sendData; // è¦å‘é€çš„æ•°æ®
-
- public UdpSendThread(InetAddress sendToIP, int sendPort, byte[] sendData) {
- this.sendToIP = sendToIP;
- this.sendPort = sendPort;
- this.sendData = sendData;
- }
-
- @Override
- public void run() {
- try {
- DatagramSocket sendSocket = new DatagramSocket(); // 创建一个新的 DatagramSocket 对象
- DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, sendToIP, sendPort); // å°†è¦å‘é€çš„æ•°æ®æ‰“包æˆä¸€ä¸ª DatagramPacket 对象
- sendSocket.send(sendPacket); // å‘é€ DatagramPacket
- sendSocket.close(); // å‘é€å®Œæ¯•åŽå…³é— DatagramSocket
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- }
//åˆå§‹åŒ–UDPå‘é€çº¿ç¨‹
// private static void sendCommand(String Sendstr) throws UnknownHostException {
// InetAddress sendIP = InetAddress.getByName(SEND_to_IP); // ç›®æ ‡ IP 地å€
diff --git a/src/sixaunyi/app/src/main/res/drawable-v24/auto.png b/src/sixaunyi/app/src/main/res/drawable-v24/auto.png
new file mode 100644
index 0000000..1a2d922
Binary files /dev/null and b/src/sixaunyi/app/src/main/res/drawable-v24/auto.png differ
diff --git a/src/sixaunyi/app/src/main/res/drawable-v24/manual.png b/src/sixaunyi/app/src/main/res/drawable-v24/manual.png
new file mode 100644
index 0000000..b4918b5
Binary files /dev/null and b/src/sixaunyi/app/src/main/res/drawable-v24/manual.png differ
diff --git a/src/sixaunyi/app/src/main/res/drawable-v24/shoudong.png b/src/sixaunyi/app/src/main/res/drawable-v24/shoudong.png
new file mode 100644
index 0000000..9d09198
Binary files /dev/null and b/src/sixaunyi/app/src/main/res/drawable-v24/shoudong.png differ
diff --git a/src/sixaunyi/app/src/main/res/drawable-v24/zidongkongzhi.png b/src/sixaunyi/app/src/main/res/drawable-v24/zidongkongzhi.png
new file mode 100644
index 0000000..479e8d1
Binary files /dev/null and b/src/sixaunyi/app/src/main/res/drawable-v24/zidongkongzhi.png differ
diff --git a/src/sixaunyi/app/src/main/res/drawable/selector_toggle_background.xml b/src/sixaunyi/app/src/main/res/drawable/selector_toggle_background.xml
new file mode 100644
index 0000000..d16fd9a
--- /dev/null
+++ b/src/sixaunyi/app/src/main/res/drawable/selector_toggle_background.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/sixaunyi/app/src/main/res/drawable/selector_toggle_icon.xml b/src/sixaunyi/app/src/main/res/drawable/selector_toggle_icon.xml
new file mode 100644
index 0000000..d1f3a63
--- /dev/null
+++ b/src/sixaunyi/app/src/main/res/drawable/selector_toggle_icon.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/sixaunyi/app/src/main/res/layout-land/activity_control.xml b/src/sixaunyi/app/src/main/res/layout-land/activity_control.xml
index 08c7341..f81124b 100644
--- a/src/sixaunyi/app/src/main/res/layout-land/activity_control.xml
+++ b/src/sixaunyi/app/src/main/res/layout-land/activity_control.xml
@@ -61,7 +61,7 @@
android:background="@null"
android:contentDescription="@string/turn_left_button"
android:src="@drawable/turnleft"
- android:scaleType="centerCrop"
+ android:scaleType="centerInside"
/>
@@ -230,6 +230,24 @@
/>
+
+
+
+