diff --git a/doc/~$兵“软件系统软件规格说明书.docx b/doc/~$兵“软件系统软件规格说明书.docx new file mode 100644 index 0000000..5d5e642 Binary files /dev/null and b/doc/~$兵“软件系统软件规格说明书.docx differ diff --git a/doc/~$兵”软件系统软件设计规格说明书.doc b/doc/~$兵”软件系统软件设计规格说明书.doc new file mode 100644 index 0000000..5d5e642 Binary files /dev/null and b/doc/~$兵”软件系统软件设计规格说明书.doc differ 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 0000000..ad0cd43 Binary files /dev/null and b/src/sixaunyi/app/src/main/res/drawable-v24/app.png differ diff --git a/src/sixaunyi/app/src/main/res/drawable-v24/weizhi.png b/src/sixaunyi/app/src/main/res/drawable-v24/weizhi.png new file mode 100644 index 0000000..8122374 Binary files /dev/null and b/src/sixaunyi/app/src/main/res/drawable-v24/weizhi.png differ diff --git a/src/sixaunyi/app/src/main/res/layout/activity_setting.xml b/src/sixaunyi/app/src/main/res/layout/activity_setting.xml index fa7367f..e680393 100644 --- a/src/sixaunyi/app/src/main/res/layout/activity_setting.xml +++ b/src/sixaunyi/app/src/main/res/layout/activity_setting.xml @@ -26,14 +26,37 @@ android:scaleType="centerInside" app:srcCompat="@drawable/returns" /> - + android:layout_marginTop="10dp" + android:orientation="horizontal" + android:background="@drawable/txt_radiuborder"> + + + + + + + +