From e5a791765b24f2a9a4d1462770f2d52bbb81579b Mon Sep 17 00:00:00 2001
From: CYZ <2782394648@qq.com>
Date: Wed, 28 Jun 2023 12:21:15 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E8=AF=95=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...“软件系统软件规格说明书.docx | Bin 0 -> 162 bytes
...件系统软件设计规格说明书.doc | Bin 0 -> 162 bytes
.../.idea/deploymentTargetDropDown.xml | 12 +--
.../0336633037f72ee431c162e8d6cbc29d1cd6fa5d | 5 --
.../12963d86ac5c2888cc2a9ae459de5665bc06b01f | 5 --
.../f4a01d6a4fcb971362ec00a83903fd3902f52164} | 0
.../.idea/sonarlint/issuestore/index.pb | 8 +-
src/sixaunyi/app/src/main/AndroidManifest.xml | 6 +-
.../com/example/sixaunyi/MainActivity.java | 75 ++++++++++++------
.../com/example/sixaunyi/SettingActivity.java | 63 +++++++++------
.../com/example/sixaunyi/VideoActivity.java | 4 +-
.../app/src/main/res/drawable-v24/app.png | Bin 0 -> 2491 bytes
.../app/src/main/res/drawable-v24/weizhi.png | Bin 0 -> 1840 bytes
.../src/main/res/layout/activity_setting.xml | 35 ++++++--
14 files changed, 130 insertions(+), 83 deletions(-)
create mode 100644 doc/~$兵“软件系统软件规格说明书.docx
create mode 100644 doc/~$兵”软件系统软件设计规格说明书.doc
delete mode 100644 src/sixaunyi/.idea/sonarlint/issuestore/0/3/0336633037f72ee431c162e8d6cbc29d1cd6fa5d
delete mode 100644 src/sixaunyi/.idea/sonarlint/issuestore/1/2/12963d86ac5c2888cc2a9ae459de5665bc06b01f
rename src/sixaunyi/.idea/sonarlint/issuestore/{7/7/776a4b5f215e52628a4164ac15ef90fa338360ce => f/4/f4a01d6a4fcb971362ec00a83903fd3902f52164} (100%)
create mode 100644 src/sixaunyi/app/src/main/res/drawable-v24/app.png
create mode 100644 src/sixaunyi/app/src/main/res/drawable-v24/weizhi.png
diff --git a/doc/~$兵“软件系统软件规格说明书.docx b/doc/~$兵“软件系统软件规格说明书.docx
new file mode 100644
index 0000000000000000000000000000000000000000..5d5e6423879131cd85bf3d8e00357024dbb7eb10
GIT binary patch
literal 162
gcmZRrDy%dxVIUE(GE^}XGE_1cFp#X3M4K2G0NF+Zn*aa+
literal 0
HcmV?d00001
diff --git a/doc/~$兵”软件系统软件设计规格说明书.doc b/doc/~$兵”软件系统软件设计规格说明书.doc
new file mode 100644
index 0000000000000000000000000000000000000000..5d5e6423879131cd85bf3d8e00357024dbb7eb10
GIT binary patch
literal 162
gcmZRrDy%dxVIUE(GE^}XGE_1cFp#X3M4K2G0NF+Zn*aa+
literal 0
HcmV?d00001
diff --git a/src/sixaunyi/.idea/deploymentTargetDropDown.xml b/src/sixaunyi/.idea/deploymentTargetDropDown.xml
index d776305..abf0e34 100644
--- a/src/sixaunyi/.idea/deploymentTargetDropDown.xml
+++ b/src/sixaunyi/.idea/deploymentTargetDropDown.xml
@@ -1,17 +1,17 @@
-
+
-
+
-
-
+
+
-
-
+
+
\ No newline at end of file
diff --git a/src/sixaunyi/.idea/sonarlint/issuestore/0/3/0336633037f72ee431c162e8d6cbc29d1cd6fa5d b/src/sixaunyi/.idea/sonarlint/issuestore/0/3/0336633037f72ee431c162e8d6cbc29d1cd6fa5d
deleted file mode 100644
index 9fac4f7..0000000
--- a/src/sixaunyi/.idea/sonarlint/issuestore/0/3/0336633037f72ee431c162e8d6cbc29d1cd6fa5d
+++ /dev/null
@@ -1,5 +0,0 @@
-
-C
-java:S1604"(Make this anonymous inner class a lambda(
-P
-java:S1161":Add the "@Override" annotation above this method signature(
\ No newline at end of file
diff --git a/src/sixaunyi/.idea/sonarlint/issuestore/1/2/12963d86ac5c2888cc2a9ae459de5665bc06b01f b/src/sixaunyi/.idea/sonarlint/issuestore/1/2/12963d86ac5c2888cc2a9ae459de5665bc06b01f
deleted file mode 100644
index 5d32c84..0000000
--- a/src/sixaunyi/.idea/sonarlint/issuestore/1/2/12963d86ac5c2888cc2a9ae459de5665bc06b01f
+++ /dev/null
@@ -1,5 +0,0 @@
-
->
-java:S1604"(Make this anonymous inner class a lambda(ʆ
-P
-java:S1161":Add the "@Override" annotation above this method signature(
\ No newline at end of file
diff --git a/src/sixaunyi/.idea/sonarlint/issuestore/7/7/776a4b5f215e52628a4164ac15ef90fa338360ce b/src/sixaunyi/.idea/sonarlint/issuestore/f/4/f4a01d6a4fcb971362ec00a83903fd3902f52164
similarity index 100%
rename from src/sixaunyi/.idea/sonarlint/issuestore/7/7/776a4b5f215e52628a4164ac15ef90fa338360ce
rename to src/sixaunyi/.idea/sonarlint/issuestore/f/4/f4a01d6a4fcb971362ec00a83903fd3902f52164
diff --git a/src/sixaunyi/.idea/sonarlint/issuestore/index.pb b/src/sixaunyi/.idea/sonarlint/issuestore/index.pb
index bfc72ba..a4dfd94 100644
--- a/src/sixaunyi/.idea/sonarlint/issuestore/index.pb
+++ b/src/sixaunyi/.idea/sonarlint/issuestore/index.pb
@@ -9,11 +9,7 @@ A
gradle.properties,2\a\2afbb999f001938c88fa43fc2ef52abf0f8213e4
k
;app/src/test/java/com/example/sixaunyi/ExampleUnitTest.java,8\9\892f839083a73d776402535dde27e522288853c9
-i
-9app/src/main/java/com/example/sixaunyi/FirstFragment.java,0\3\0336633037f72ee431c162e8d6cbc29d1cd6fa5d
?
settings.gradle,0\5\05efc8b1657769a27696d478ded1e95f38737233
-j
-:app/src/main/java/com/example/sixaunyi/SecondFragment.java,1\2\12963d86ac5c2888cc2a9ae459de5665bc06b01f
-j
-:app/src/main/java/com/example/sixaunyi/MapApplication.java,7\7\776a4b5f215e52628a4164ac15ef90fa338360ce
\ No newline at end of file
+@
+app/build.gradle,f\4\f4a01d6a4fcb971362ec00a83903fd3902f52164
\ No newline at end of file
diff --git a/src/sixaunyi/app/src/main/AndroidManifest.xml b/src/sixaunyi/app/src/main/AndroidManifest.xml
index fa4c93f..ef152a4 100644
--- a/src/sixaunyi/app/src/main/AndroidManifest.xml
+++ b/src/sixaunyi/app/src/main/AndroidManifest.xml
@@ -18,9 +18,9 @@
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
- android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
- android:roundIcon="@mipmap/ic_launcher_round"
+ android:icon="@drawable/app"
+ android:label="哨兵"
+ android:roundIcon="@drawable/app"
android:supportsRtl="true"
android:theme="@style/Theme.Sixaunyi.NoActionBar"
tools:targetApi="31">
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 87953a6..2655826 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
@@ -13,6 +13,7 @@ import android.content.Context;
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Intent;
+import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.location.Location;
import android.nfc.Tag;
@@ -108,10 +109,11 @@ public class MainActivity extends AppCompatActivity implements AMapLocationList
//private ActivityResultLauncher launcher;
////////////////////////////可修改部分/////////////////////////////
- private final LatLng Monitorlatlng = new LatLng(28.258348849051746,113.04552182879037);
+ private final LatLng Monitorlatlng = new LatLng(28.257553,113.0417);
+
private final static String Recieve_IP = "192.168.39.46";
- private final static int RECEIVE_PORT = 9987;
- private final static String SEND_to_IP = "192.168.39.47";
+ private final static int RECEIVE_PORT = 9975;
+ private final static String SEND_to_IP = "192.168.39.195";
private final static int SEND_PORT = 8888;
/////////////////////////////////////////////////////////////////
private InetAddress serverAddr;
@@ -126,6 +128,7 @@ public class MainActivity extends AppCompatActivity implements AMapLocationList
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
+
if (savedInstanceState != null) {
// 从保存的状态数据中恢复状态
value = savedInstanceState.getString("key");
@@ -145,9 +148,10 @@ public class MainActivity extends AppCompatActivity implements AMapLocationList
//检查安卓版本
checkingAndroidVersion();
- udpReceiveThread = new UdpReceiveThread();
- udpReceiveThread.startListening();
+
addSensorMarker(Monitorlatlng);
+
+
}
/**
* 检查Android版本
@@ -248,7 +252,7 @@ public class MainActivity extends AppCompatActivity implements AMapLocationList
// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false
aMap.setMyLocationEnabled(true);
//设置最小缩放等级为16 ,缩放级别范围为[3, 20]
- aMap.setMinZoomLevel(18);
+ aMap.setMinZoomLevel(14);
//设置地图标志点击事件
aMap.setOnMarkerClickListener(this);
//设置地图标志拖拽事件
@@ -302,7 +306,10 @@ public class MainActivity extends AppCompatActivity implements AMapLocationList
city = aMapLocation.getCity();
//当前位置经纬度坐标
Current_latlng = new LatLng(aMapLocation.getLatitude(), aMapLocation.getLongitude());
-
+ MonitorDistance = AMapUtils.calculateLineDistance(Current_latlng,Monitorlatlng);
+ Log.i(TAG, String.valueOf(Current_latlng.longitude));
+ Log.i(TAG, String.valueOf(Current_latlng.latitude));
+//
//获取纬度
double latitude = aMapLocation.getLatitude();
//获取经度
@@ -310,6 +317,8 @@ public class MainActivity extends AppCompatActivity implements AMapLocationList
Log.d("MainActivity", aMapLocation.getCity());
showMsg(address);
+ udpReceiveThread = new UdpReceiveThread();
+ udpReceiveThread.startListening();
//停止定位后,本地定位服务并不会被销毁
mLocationClient.stopLocation();
if (mListener != null) {
@@ -391,7 +400,7 @@ public class MainActivity extends AppCompatActivity implements AMapLocationList
.draggable(true)
//标点图标
.icon(BitmapDescriptorFactory.
- fromBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.img)))
+ fromBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.weizhi)))
//备注
.title("路径点")
.snippet("距离:")
@@ -435,7 +444,7 @@ public class MainActivity extends AppCompatActivity implements AMapLocationList
fromBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.drone)))
// 备注
.title("无人机")
- .snippet("距离:")
+
);
droneMarker.showInfoWindow();
}
@@ -631,14 +640,32 @@ public class MainActivity extends AppCompatActivity implements AMapLocationList
}
+ class ReceiveHandler extends Handler{
+ @Override
+ public void handleMessage(Message msg) {
+ if (msg.what == 1) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Context context = MainActivity.this;
+ showAlert(context,"传感器报警");
+ addDroneMarker();
+ moveDrone();
+ }
+ });
+ }
+ }
+ }
+
public class UdpReceiveThread extends Thread {
private static final String TAG = "UdpReceiveThread";
private static final int mRECEIVE_PORT = RECEIVE_PORT;
- private boolean mRunning;
+ private boolean mRunning = true;
private String mReceiveIp = Recieve_IP;
private String mExpectedData = "Motion detected!";
private float udpMonitorDistance = MonitorDistance;
private String udpMonitorAngle = MonitorAngle;
+ private Handler receiveHandler = new ReceiveHandler();
@Override
public void run() {
@@ -654,11 +681,9 @@ public class MainActivity extends AppCompatActivity implements AMapLocationList
Log.d(TAG, "Received data: " + receivedString);
if (receivedString.equals(mExpectedData)) {
Log.i(TAG, "run: 222222222222222222222222222");
+ receiveHandler.sendEmptyMessage(1);
sendCommand("WARNING "+String.valueOf(udpMonitorDistance)+" "+udpMonitorAngle);
- Context context = MainActivity.this;
- showAlert(context,"传感器报警");
- addDroneMarker();
- moveDrone();
+
mRunning = false;
@@ -672,17 +697,6 @@ public class MainActivity extends AppCompatActivity implements AMapLocationList
e.printStackTrace();
}
}
- public void showAlert(Context context, String message) {
- AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setTitle("警告");
- builder.setMessage(message);
- builder.setIcon(R.drawable.warning);
- builder.setPositiveButton("确定", null);
-
- AlertDialog dialog = builder.create();
- dialog.show();
- }
-
public void startListening() {
mRunning = true;
start();
@@ -693,6 +707,17 @@ public class MainActivity extends AppCompatActivity implements AMapLocationList
}
}
+ public void showAlert(Context context, String message) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ builder.setTitle("警告");
+ builder.setMessage(message);
+ builder.setIcon(R.drawable.warning);
+ builder.setPositiveButton("确定", null);
+
+ AlertDialog dialog = builder.create();
+ dialog.show();
+ }
+
//以北为0度
public static String calcAngle(Double centerLat, Double centerLon, Double anotherLat, Double anotherLon) {
//差值
diff --git a/src/sixaunyi/app/src/main/java/com/example/sixaunyi/SettingActivity.java b/src/sixaunyi/app/src/main/java/com/example/sixaunyi/SettingActivity.java
index fc201aa..2297d5b 100644
--- a/src/sixaunyi/app/src/main/java/com/example/sixaunyi/SettingActivity.java
+++ b/src/sixaunyi/app/src/main/java/com/example/sixaunyi/SettingActivity.java
@@ -37,13 +37,15 @@ public class SettingActivity extends AppCompatActivity {
private final static String SEND_to_IP = "192.168.39.47";
private SeekBar Speed_btn;
- private Switch Battery_btn;
+ private SeekBar Battery_btn;
private ImageButton return_btn;
private final static int SEND_PORT = 8888;
private ExecutorService mThreadPool = Executors.newCachedThreadPool();
private Switch photo_btn;
private Context context;
private SharedPreferences sharedPreferences;
+ private TextView tvProgress;
+ private TextView Battery_warning;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -51,8 +53,9 @@ public class SettingActivity extends AppCompatActivity {
Speed_btn= findViewById(R.id.speed);
return_btn=findViewById(R.id.returns);
photo_btn = findViewById(R.id.photo);
- Battery_btn = findViewById(R.id.Battery_warning);
- TextView tvProgress = (TextView) findViewById(R.id.tvProgress);
+ Battery_btn = findViewById(R.id.warning_num);
+ tvProgress = findViewById(R.id.tvProgress);
+ Battery_warning=findViewById(R.id.Battery_warning);
sharedPreferences = getSharedPreferences("control_state", MODE_PRIVATE);
boolean photo_btn_state= sharedPreferences.getBoolean("photo_btn_state", false);
photo_btn.setChecked(photo_btn_state);
@@ -60,6 +63,9 @@ public class SettingActivity extends AppCompatActivity {
int speedProgress = sharedPreferences.getInt("speed_progress", 0);
Speed_btn.setProgress(speedProgress);
tvProgress.setText(String.valueOf(speedProgress+10));
+ int warning_num= sharedPreferences.getInt("battery_num", 0);
+ Battery_btn.setProgress(warning_num);
+ Battery_warning.setText(String.valueOf(warning_num));
photo_btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
@@ -80,11 +86,9 @@ public class SettingActivity extends AppCompatActivity {
} catch (UnknownHostException e) {
e.printStackTrace();
}
-
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("speed_progress", progress);
editor.apply();
-
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@@ -93,30 +97,25 @@ public class SettingActivity extends AppCompatActivity {
public void onStopTrackingTouch(SeekBar seekBar) {}
});
- Battery_btn.setOnClickListener(new View.OnClickListener() {
+ Battery_btn.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
- public void onClick(View v) {
- if (Battery_btn.isChecked()) {
- try {
- sendCommand("battery_warning");
- } catch (UnknownHostException e) {
- e.printStackTrace();
- }
- }else
- {
- try {
- sendCommand("warning_cancel");
- } catch (UnknownHostException e) {
- e.printStackTrace();
- }
- }
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+ Battery_warning.setText(String.valueOf(progress));
+ SharedPreferences.Editor editor = sharedPreferences.edit();
+ editor.putInt("battery_num", progress);
+ editor.apply();
}
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {}
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {}
+
});
return_btn.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
- Intent intent = new Intent(SettingActivity.this, VideoActivity.class);
// 启动目标 Activity
- finish();
+ passingParameters();
}
});
photo_btn.setOnClickListener(new View.OnClickListener() {
@@ -124,14 +123,14 @@ public class SettingActivity extends AppCompatActivity {
public void onClick(View v) {
if (photo_btn.isChecked()) {
try {
- sendCommand("photo_high");
+ sendCommand("PHOTO_HIGH");
} catch (UnknownHostException e) {
e.printStackTrace();
}
}else
{
try {
- sendCommand("photo_low");
+ sendCommand("PHOTO_LOW");
} catch (UnknownHostException e) {
e.printStackTrace();
}
@@ -177,5 +176,19 @@ public class SettingActivity extends AppCompatActivity {
mThreadPool.execute(sendRunnable1);
}
+ @Override
+ public void onBackPressed() {
+ // 在这里处理返回事件的逻辑
+ super.onBackPressed(); // 调用父类的方法,执行默认的返回操作
+ passingParameters();
+ }
+ private void passingParameters(){
+ int warning_num= sharedPreferences.getInt("battery_num", 0);
+ Log.i(TAG, "111111111111111111111"+String.valueOf(warning_num));
+ Intent intent = new Intent(SettingActivity.this,VideoActivity.class);
+ intent.putExtra("BATTERY_NUM", warning_num); // 设置要传递的参数
+ setResult(RESULT_OK, intent);
+ finish();
+ }
}
\ 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 88c0ab5..77be7b4 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
@@ -64,8 +64,8 @@ import android.widget.ToggleButton;
public class VideoActivity extends AppCompatActivity {
- private final static String SEND_to_IP = "192.168.39.47"; //填写接收方IP
- private final static String Recieve_IP = "192.168.39.47";//填服务器IP,与send_to_IP为同一个
+ private final static String SEND_to_IP = "192.168.39.195"; //填写接收方IP
+ private final static String Recieve_IP = "192.168.39.195";//填服务器IP,与send_to_IP为同一个
private final static int SEND_PORT = 8888; //发送端口号
private final static int RECEIVE_PORT = 9999; //接收端口号
private static boolean listenStatus = true; //接收线程的循环标识
diff --git a/src/sixaunyi/app/src/main/res/drawable-v24/app.png b/src/sixaunyi/app/src/main/res/drawable-v24/app.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad0cd4310627b4c7ddb291df826a1784f967b197
GIT binary patch
literal 2491
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
-
+ android:layout_marginTop="10dp"
+ android:orientation="horizontal"
+ android:background="@drawable/txt_radiuborder">
+
+
+
+
+
+
+
+