Compare commits

...

4 Commits

@ -52,6 +52,7 @@ android {
} }
dependencies { dependencies {
implementation 'io.github.litao0621:nifty-slider:1.4.6'
implementation fileTree(dir: 'libs', include: ['*.jar']) implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0' implementation 'com.google.android.material:material:1.8.0'

@ -7,12 +7,14 @@
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="adnroid.permission.CHANGE_WIFI_STATE" /> <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="adnroid.permission.CHANGE_WIFI_STATE" /> <!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" /> <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> <!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application <application
android:icon="@drawable/icon" android:icon="@drawable/icon"

@ -0,0 +1,37 @@
package wificar;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
public class Configuration {
public String videoUrl = "http://192.168.1.1:8080/?action=stream";
public String controlIp = "192.168.1.1";
public String controlPort = "2001";
public final List<String> suggestions = new ArrayList<>();
public boolean poseCheck = true;
public boolean needSaveScreenShot = false;
ThreadLocalRandom random;
private Configuration(){
random = ThreadLocalRandom.current();
suggestions.add("优先确认安全: 在搜救任务开始前,请确保救援队员和机器人的安全。评估搜救区域的潜在风险,并采取必要的安全措施。");
suggestions.add("建立通讯联系: 与被救援者建立有效的通讯联系,了解他们的状况、位置和任何紧急情况。稳定的通讯有助于更好地协调救援行动。");
suggestions.add("分析搜救区域: 对搜救区域进行细致的分析,了解可能的藏匿点和障碍物。这有助于制定更有效的搜救策略。");
suggestions.add("协同工作: 救援机器人应与救援队协同工作,相互支持。机器人可以用于进入危险区域,而救援队员则可以提供更多的人工智能无法覆盖的人文关怀。");
suggestions.add("紧急医疗救援: 如果搜救现场有伤者,立即调配医疗救援人员,优先进行紧急医疗救援。");
suggestions.add("数据采集: 利用机器人的传感器和摄像头收集详细的现场信息,有助于更准确地定位和救援被困者。");
}
public String getRandomSuggestion() {
return suggestions.get(random.nextInt(suggestions.size()));
}
private static Configuration INSTANCE;
public static Configuration getInstance() {
if(INSTANCE == null) INSTANCE = new Configuration();
return INSTANCE;
}
}

@ -27,7 +27,7 @@ import my.wificar.R;
public class MyMainFrm extends Activity { public class MyMainFrm extends Activity {
EditText CameraIP, ControlIP, Port; // EditText CameraIP, ControlIP, Port;
LinearLayout Button_go; LinearLayout Button_go;
LinearLayout Button_set; LinearLayout Button_set;
String videoUrl, controlUrl, port; String videoUrl, controlUrl, port;
@ -55,16 +55,12 @@ public class MyMainFrm extends Activity {
setContentView(R.layout.mymainfrm); setContentView(R.layout.mymainfrm);
CameraIP = findViewById(R.id.editIP);
ControlIP = findViewById(R.id.ip);
Port = findViewById(R.id.port);
Button_go = findViewById(R.id.button_go); Button_go = findViewById(R.id.button_go);
Button_set = findViewById(R.id.button_set); Button_set = findViewById(R.id.button_set);
videoUrl = CameraIP.getText().toString(); videoUrl = Configuration.getInstance().videoUrl;
controlUrl = ControlIP.getText().toString(); controlUrl = Configuration.getInstance().controlIp;
port = Port.getText().toString(); port = Configuration.getInstance().controlPort;
Button_go.requestFocusFromTouch(); Button_go.requestFocusFromTouch();
Button_set.requestFocusFromTouch(); Button_set.requestFocusFromTouch();

@ -19,8 +19,10 @@ import android.graphics.Matrix;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.YuvImage; import android.graphics.YuvImage;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.util.AttributeSet; import android.util.AttributeSet;
@ -45,6 +47,7 @@ import java.io.FileNotFoundException;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
@ -72,7 +75,7 @@ public class MySurfaceView extends SurfaceView implements Callback {
private boolean isThreadRunning = true; private boolean isThreadRunning = true;
private MyVideo activity; private MyVideo activity;
private ImageView floatingView; private MySurfaceView floatingView;
public MySurfaceView(Context context, AttributeSet attrs) { public MySurfaceView(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
@ -377,6 +380,10 @@ public class MySurfaceView extends SurfaceView implements Callback {
false); false);
//TODO »ñÈ¡µ½ bitmap ÁË //TODO »ñÈ¡µ½ bitmap ÁË
if(Configuration.getInstance().needSaveScreenShot) {
saveBitmap(mBitmap);
Configuration.getInstance().needSaveScreenShot = false;
}
detectOnModel(mBitmap); detectOnModel(mBitmap);
canvas.drawBitmap( canvas.drawBitmap(
mBitmap, mBitmap,
@ -457,6 +464,17 @@ public class MySurfaceView extends SurfaceView implements Callback {
private static boolean useCamera = true; private static boolean useCamera = true;
private void saveBitmap(Bitmap bmp) throws IOException {
File childFolder = Environment.getExternalStoragePublicDirectory(Environment
.DIRECTORY_PICTURES);
File imageFile = new File(childFolder.getAbsolutePath() + "/" + System.currentTimeMillis
() + ".jpg");
OutputStream fOut = new FileOutputStream(imageFile);
bmp.compress(Bitmap.CompressFormat.JPEG, 60, fOut);//½«bgÊä³öÖÁÎļþ
fOut.flush();
fOut.close(); // do not forget to close the stream
activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imageFile)));
}
private void detectOnModel(Bitmap image) { private void detectOnModel(Bitmap image) {
startTime = System.currentTimeMillis(); startTime = System.currentTimeMillis();
detectService.execute(() -> { detectService.execute(() -> {
@ -467,15 +485,15 @@ public class MySurfaceView extends SurfaceView implements Callback {
protected void showResultOnUI() { protected void showResultOnUI() {
if(floatingView == null) { if(floatingView == null) {
floatingView = activity.findViewById(R.id.floatingView); floatingView = activity.findViewById(R.id.mySurfaceViewVideo);
} }
activity.runOnUiThread(() -> { activity.runOnUiThread(() -> {
if(mutableBitmap == null)return; if(mutableBitmap == null)return;
floatingView.setImageBitmap(mutableBitmap); floatingView.setBackground(new BitmapDrawable(getResources(),mutableBitmap));
}); });
} }
protected Bitmap drawPersonPose(Bitmap mutableBitmap, KeyPoint[] keyPoints) { protected Bitmap drawPersonPose(Bitmap mutableBitmap, KeyPoint[] keyPoints) {
if (keyPoints == null || keyPoints.length <= 0) { if (keyPoints == null || keyPoints.length <= 0 || !Configuration.getInstance().poseCheck) {
return mutableBitmap; return mutableBitmap;
} }
int[][] joint_pairs = {{0, 1}, {1, 3}, {0, 2}, {2, 4}, {5, 6}, {5, 7}, {7, 9}, {6, 8}, {8, 10}, {5, 11}, {6, 12}, {11, 12}, {11, 13}, {12, 14}, {13, 15}, {14, 16}}; int[][] joint_pairs = {{0, 1}, {1, 3}, {0, 2}, {2, 4}, {5, 6}, {5, 7}, {7, 9}, {6, 8}, {8, 10}, {5, 11}, {6, 12}, {11, 12}, {11, 13}, {12, 14}, {13, 15}, {14, 16}};
@ -520,11 +538,14 @@ public class MySurfaceView extends SurfaceView implements Callback {
protected Bitmap detectAndDraw(Bitmap image) { protected Bitmap detectAndDraw(Bitmap image) {
Box[] result = null; Box[] result = null;
KeyPoint[] keyPoints = null; KeyPoint[] keyPoints;
if (USE_MODEL == YOLOV5S) { if (USE_MODEL == YOLOV5S) {
keyPoints = null;
result = YOLOv5.detect(image, threshold, nms_threshold); result = YOLOv5.detect(image, threshold, nms_threshold);
} else if (USE_MODEL == SIMPLE_POSE) { } else if (USE_MODEL == SIMPLE_POSE) {
keyPoints = SimplePose.detect(image); keyPoints = SimplePose.detect(image);
} else {
keyPoints = null;
} }
if (result == null && keyPoints == null) { if (result == null && keyPoints == null) {
detectCamera.set(false); detectCamera.set(false);

@ -2,29 +2,29 @@ package wificar;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.os.Message;
import android.os.StrictMode; import android.os.StrictMode;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window; import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.Button; import android.widget.Button;
import android.widget.ImageButton; import android.widget.CheckBox;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.RelativeLayout; import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.BinderThread; import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.Socket; import java.net.Socket;
import java.net.URL;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.sql.Time; import java.util.ArrayList;
import java.util.List;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
@ -34,28 +34,181 @@ public class MyVideo extends Activity {
public static String CameraIp; public static String CameraIp;
public static String CtrlIp; public static String CtrlIp;
public static String CtrlPort; public static String CtrlPort;
URL videoUrl;
MySurfaceView r; MySurfaceView r;
OutputStream socketWriter; OutputStream socketWriter;
private ImageButton TakePhotos; InputStream socketReader;
private ImageButton ViewPhotos; SocketListener socketListener2001;
SoundSocketListener socketListener2002;
SeekBar xSeekbar;
Button menuIcon;
TextView distanceText,lifeCheckText,poseCheckText,suggestionText,avoidText;
CheckBox distanceBtn,lifeCheckBtn,poseCheckBtn,suggestionBtn,avoidBtn;
private Socket socket; private Socket socket;
private Socket soundSocket;
private RockerView rockerView; private RockerView rockerView;
LinearLayout menu;
private long exitTime = 0; private long exitTime = 0;
Timer timer = new Timer();
private boolean btnEnabled = false;
private List<View> menuContent = new ArrayList<>();
private void showMenuContent() {
for (View view : menuContent) {
view.setVisibility(View.VISIBLE);
}
}
private void hideMenuContent() {
for (View view : menuContent) {
view.setVisibility(View.GONE);
}
}
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);//隐去标题应用的名字必须要写在setContentView之前否则会有异常 this.requestWindowFeature(Window.FEATURE_NO_TITLE);//隐去标题应用的名字必须要写在setContentView之前否则会有异常
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.myvideo); setContentView(R.layout.myvideo);
timer.schedule(new TimerTask() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(6000);
runOnUiThread(()->{
TextView textView = findViewById(R.id.suggestion);
textView.setText(Configuration.getInstance().getRandomSuggestion());
});
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}, 1000L, 1000L);
distanceText = findViewById(R.id.distanceText);
distanceBtn = findViewById(R.id.distanceBtn);
distanceBtn.setChecked(true);
distanceBtn.setOnClickListener(view -> {
CheckBox checkBox = (CheckBox) view;
LinearLayout layout = findViewById(R.id.distanceLayout);
if(checkBox.isChecked()) {
layout.setVisibility(View.VISIBLE);
} else layout.setVisibility(View.GONE);
});
lifeCheckText = findViewById(R.id.lifeCheckText);
lifeCheckBtn = findViewById(R.id.lifeCheckBtn);
lifeCheckBtn.setChecked(true);
lifeCheckBtn.setOnClickListener(view -> {
CheckBox checkBox = (CheckBox) view;
LinearLayout layout = findViewById(R.id.lifeCheckLayout);
if(checkBox.isChecked()) {
layout.setVisibility(View.VISIBLE);
} else layout.setVisibility(View.GONE);
});
poseCheckText = findViewById(R.id.poseCheckText);
poseCheckBtn = findViewById(R.id.poseCheckBtn);
poseCheckBtn.setChecked(true);
poseCheckBtn.setOnClickListener(view -> {
CheckBox checkBox = (CheckBox) view;
LinearLayout layout = findViewById(R.id.poseCheckLayout);
if(checkBox.isChecked()) {
layout.setVisibility(View.VISIBLE);
} else layout.setVisibility(View.GONE);
Configuration.getInstance().poseCheck = checkBox.isChecked();
});
suggestionText = findViewById(R.id.suggestionText);
suggestionBtn = findViewById(R.id.suggestionBtn);
suggestionBtn.setChecked(false);
suggestionBtn.setOnClickListener(view -> {
CheckBox checkBox = (CheckBox) view;
TextView textView = findViewById(R.id.suggestion);
if(checkBox.isChecked()) {
textView.setVisibility(View.VISIBLE);
} else textView.setVisibility(View.GONE);
});
avoidBtn = findViewById(R.id.avoidBtn);
avoidText = findViewById(R.id.avoidText);
avoidBtn.setOnClickListener(view -> {
CheckBox checkBox = (CheckBox) view;
if(checkBox.isChecked()) {
try {
socketWriter.write(new byte[]{(byte) 0xff, (byte) 0x13, (byte) 0x04, (byte)0x00, (byte) 0xff});
socketWriter.flush();
} catch (IOException e) {
runOnUiThread(()-> Toast.makeText(this,"网络异常!",Toast.LENGTH_SHORT).show());
throw new RuntimeException(e);
}
} else {
try {
socketWriter.write(new byte[]{(byte) 0xff, (byte) 0x13, (byte) 0x00, (byte)0x00, (byte) 0xff});
socketWriter.flush();
} catch (IOException e) {
runOnUiThread(()-> Toast.makeText(this,"网络异常!",Toast.LENGTH_SHORT).show());
throw new RuntimeException(e);
}
}
});
menuContent.add(distanceText);
menuContent.add(lifeCheckText);
menuContent.add(poseCheckText);
menuContent.add(suggestionText);
menuContent.add(distanceBtn);
menuContent.add(lifeCheckBtn);
menuContent.add(poseCheckBtn);
menuContent.add(suggestionBtn);
menuContent.add(avoidBtn);
menuContent.add(avoidText);
hideMenuContent();
menu = findViewById(R.id.droppedMenu);
xSeekbar = findViewById(R.id.xSeekbar);
menuIcon = findViewById(R.id.menuIcon);
menuIcon.setOnClickListener(view -> {
btnEnabled = !btnEnabled;
if(btnEnabled) {
showMenuContent();
} else hideMenuContent();
});
xSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
try {
if(socketWriter == null) return;
socketWriter.write(new byte[]{(byte) 0xff, (byte) 0x01, (byte) 0x08, (byte)((int)(progress * 0.9)+45), (byte) 0xff});
socketWriter.flush();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
if (android.os.Build.VERSION.SDK_INT > 9) { if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy); StrictMode.setThreadPolicy(policy);
} }
r = findViewById(R.id.mySurfaceViewVideo); r = findViewById(R.id.mySurfaceViewVideo);
TakePhotos = findViewById(R.id.TakePhoto);
ViewPhotos = findViewById(R.id.ViewPhoto);
Intent intent = getIntent(); Intent intent = getIntent();
//从Intent当中根据key取得value //从Intent当中根据key取得value
@ -65,31 +218,14 @@ public class MyVideo extends Activity {
Log.d("wifirobot", "control is :++++" + CtrlIp); Log.d("wifirobot", "control is :++++" + CtrlIp);
Log.d("wifirobot", "CtrlPort is :++++" + CtrlPort); Log.d("wifirobot", "CtrlPort is :++++" + CtrlPort);
r.GetCameraIP(CameraIp); r.GetCameraIP(CameraIp);
InitSocket(this);
TakePhotos.setOnClickListener(arg0 -> {
// TODO Auto-generated method stub
if (null != Constant.handler) {
Message message = new Message();
message.what = 1;
Constant.handler.sendMessage(message);
} }
}); public void InitSocket(Activity activity) {
ViewPhotos.setOnClickListener(arg0 -> {
// TODO Auto-generated method stub
Intent intent1 = new Intent();
intent1.setClass(MyVideo.this, BgPictureShowActivity.class);
//ͨ¹ýIntent¶ÔÏóÆô¶¯ÁíÍâÒ»¸öActivity
MyVideo.this.startActivity(intent1);
});
new Thread(()->InitSocket()).run();
}
public void InitSocket() {
// TODO 测试
try { try {
socket = new Socket(InetAddress.getByName(CtrlIp), Integer.parseInt(CtrlPort)); socket = new Socket(InetAddress.getByName(CtrlIp), Integer.parseInt(CtrlPort));
soundSocket = new Socket(InetAddress.getByName(CtrlIp), 2002);
} catch (UnknownHostException e) { } catch (UnknownHostException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
@ -99,19 +235,21 @@ public class MyVideo extends Activity {
} }
try { try {
socketWriter = socket.getOutputStream(); socketWriter = socket.getOutputStream();
socketReader = socket.getInputStream();
socketListener2001 = new SocketListener(activity,socketReader);
socketListener2002 = new SoundSocketListener(activity,soundSocket.getInputStream());
} catch (Exception e) { } catch (Exception e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
LinearLayout rockerLayout = findViewById(R.id.rocketLayout);
rockerView = new RockerView(this,socketWriter,this.getApplicationContext(),null); rockerView = new RockerView(this,socketWriter,this.getApplicationContext(),null);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(1000,1000); rockerLayout.addView(rockerView);
addContentView(rockerView,params);
//Toast.makeText(this,"初始化网络失败!"+e.getMessage(),Toast.LENGTH_LONG).show(); //Toast.makeText(this,"初始化网络失败!"+e.getMessage(),Toast.LENGTH_LONG).show();
} }
public void onDestroy() { public void onDestroy() {
super.onDestroy(); super.onDestroy();
} }
@Override @Override

@ -23,14 +23,17 @@ public class RockerView extends View{
Paint backPaint = new Paint(); // 背景画笔 Paint backPaint = new Paint(); // 背景画笔
Paint bubblePaint = new Paint(); // 气泡画笔 Paint bubblePaint = new Paint(); // 气泡画笔
Paint rectfPaint = new Paint(); Paint rectfPaint = new Paint();
float bubbleX = 300, bubbleY = 700; // 定义气泡的位置 float bubbleX = 200, bubbleY = 200; // 定义气泡的位置
float backX = 300, backY = 700; // 背景圆的位置 float backX = 200, backY = 200; // 背景圆的位置
int radiusBack = 200, radiusBubble = 100; // 定义背景圆以及气泡的半径 int radiusBack = 200, radiusBubble = 100; // 定义背景圆以及气泡的半径
RectF mRectF = new RectF(backX-radiusBack,backY-radiusBack,backX+radiusBack,backY+radiusBack); RectF mRectF = new RectF(backX-radiusBack,backY-radiusBack,backX+radiusBack,backY+radiusBack);
Context mContext; Context mContext;
OutputStream socketWriter; OutputStream socketWriter;
String status = "STOP"; String status = "STOP";
private Activity activity; Activity activity;
public RockerView(Context context) {
super(context);
}
public RockerView(Activity activity,OutputStream socketWriter,Context context, @Nullable AttributeSet attrs) { public RockerView(Activity activity,OutputStream socketWriter,Context context, @Nullable AttributeSet attrs) {
super(context, attrs); super(context, attrs);
this.activity = activity; this.activity = activity;

@ -0,0 +1,89 @@
package wificar;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Environment;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.loader.content.AsyncTaskLoader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import my.wificar.R;
public class SocketListener {
private Activity activity;
private InputStream inputStream;
public SocketListener(Activity activity,InputStream inputStream) {
this.activity = activity;
this.inputStream = inputStream;
AsyncTask.execute(()->{
while (true) {
try {
if (inputStream.available() != 0) {
int value = inputStream.read();
int input1 = value % 2;
int input2 = value >> 1;
onMessage1(input1);
onMessage2(input2);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
AsyncTask.execute(()->{
while(true) {
try {
Thread.sleep(1000);
onMessage1(0);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
});
}
int count = 0;
private void onMessage1(int inputValue) {
//TODO
activity.runOnUiThread(()->{
TextView textComponent = activity.findViewById(R.id.showLive);
ImageView redCircle = activity.findViewById(R.id.redCircle);
ImageView greenCircle = activity.findViewById(R.id.greenCircle);
if(inputValue == 1) {
textComponent.setText("画面中存在生命体");
greenCircle.setVisibility(View.VISIBLE);
redCircle.setVisibility(View.GONE);
count++;
if(count >= 60) {
count = 0;
Configuration.getInstance().needSaveScreenShot = true;
}
} else {
textComponent.setText("画面中未检测到生命体");
greenCircle.setVisibility(View.GONE);
redCircle.setVisibility(View.VISIBLE);
}
});
}
private void onMessage2(int inputValue) {
activity.runOnUiThread(()->{
TextView textView = activity.findViewById(R.id.distance);
textView.setText(inputValue+"");
});
}
}

@ -0,0 +1,54 @@
package wificar;
import android.app.Activity;
import android.os.AsyncTask;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.IOException;
import java.io.InputStream;
import my.wificar.R;
public class SoundSocketListener {
private Activity activity;
private InputStream inputStream;
public SoundSocketListener(Activity activity, InputStream inputStream) {
this.activity = activity;
this.inputStream = inputStream;
AsyncTask.execute(()->{
while (true) {
try {
if (inputStream.available() != 0) {
if(inputStream.read() == 255) {
int value = inputStream.read();
if(inputStream.read() == 255) {
onMessage(value);
}
}
if(inputStream.read() == 254) {
int value = inputStream.read();
if(inputStream.read() == 254) {
activity.runOnUiThread(()->{
Toast.makeText(activity,"³¬Éù²¨Êý¾Ý£º"+value,Toast.LENGTH_SHORT).show();
});
}
}
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
});
}
private void onMessage(int inputValue) {
//TODO
activity.runOnUiThread(()->{
Toast.makeText(activity, inputValue, Toast.LENGTH_SHORT).show();
});
}
}

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="60dp" />
<gradient
android:angle="0"
android:centerColor="#F39801"
android:centerY="0.20"
android:endColor="#F39801"
android:startColor="#F39801" />
</shape>
</item>
</layer-list>

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
>
<corners
android:radius="100dp"
/>
<solid
android:color="#B2FF0000"
/>
<size
android:width="100dp"
android:height="100dp"
/>
</shape>

@ -32,7 +32,7 @@
android:id="@+id/button6" android:id="@+id/button6"
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="35dp" android:layout_height="35dp"
android:layout_marginStart="144dp" android:layout_marginStart="130dp"
android:text="绝对位置模式" android:text="绝对位置模式"
android:textSize="12sp" android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@+id/textView" app:layout_constraintBottom_toBottomOf="@+id/textView"
@ -40,10 +40,10 @@
app:layout_constraintTop_toTopOf="@+id/textView" /> app:layout_constraintTop_toTopOf="@+id/textView" />
<LinearLayout <LinearLayout
android:id="@+id/linearLayout2" android:id="@+id/poseCheckLayout"
android:layout_width="312dp" android:layout_width="270dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="50dp" android:layout_marginStart="5dp"
android:orientation="horizontal" android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="@+id/button7" app:layout_constraintBottom_toBottomOf="@+id/button7"
app:layout_constraintStart_toEndOf="@+id/button7" app:layout_constraintStart_toEndOf="@+id/button7"
@ -62,7 +62,7 @@
android:id="@+id/defaultsetting" android:id="@+id/defaultsetting"
android:layout_width="135dp" android:layout_width="135dp"
android:layout_height="40dp" android:layout_height="40dp"
android:layout_marginStart="49dp" android:layout_marginStart="5dp"
android:layout_marginEnd="50dp" android:layout_marginEnd="50dp"
android:text="恢复默认设置" android:text="恢复默认设置"
android:textSize="15sp" android:textSize="15sp"
@ -94,7 +94,7 @@
android:id="@+id/button7" android:id="@+id/button7"
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="35dp" android:layout_height="35dp"
android:layout_marginStart="32dp" android:layout_marginStart="5dp"
android:text="相对位置模式" android:text="相对位置模式"
android:textSize="12sp" android:textSize="12sp"
app:layout_constraintBottom_toBottomOf="@+id/button6" app:layout_constraintBottom_toBottomOf="@+id/button6"
@ -144,13 +144,14 @@
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<EditText <EditText
android:id="@+id/editTextText52" android:id="@+id/controlPort"
android:layout_width="125dp" android:layout_width="125dp"
android:layout_height="25dp" android:layout_height="40dp"
android:clickable="true" android:clickable="true"
android:ems="10" android:ems="10"
android:includeFontPadding="false" android:includeFontPadding="false"
android:inputType="text" android:inputType="text"
android:text="2001"
android:paddingLeft="16dp" android:paddingLeft="16dp"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingRight="16dp" android:paddingRight="16dp"
@ -160,22 +161,24 @@
app:layout_constraintStart_toEndOf="@+id/textView55" /> app:layout_constraintStart_toEndOf="@+id/textView55" />
<TextView <TextView
android:visibility="gone"
android:id="@+id/textView54" android:id="@+id/textView54"
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="25dp" android:layout_height="25dp"
android:gravity="center" android:gravity="center"
android:text="视频地址2" android:text="视频地址2"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="@+id/textView53" app:layout_constraintStart_toStartOf="@+id/textView53"
app:layout_constraintTop_toBottomOf="@+id/textView53" /> app:layout_constraintTop_toBottomOf="@+id/textView53" />
<EditText <EditText
android:id="@+id/editTextText51" android:id="@+id/videoUrl"
android:layout_width="492dp" android:layout_width="350dp"
android:layout_height="25dp" android:layout_height="40dp"
android:clickable="true" android:clickable="true"
android:ems="10" android:ems="10"
android:text="http://192.168.1.1:8080/?action=stream"
android:includeFontPadding="false" android:includeFontPadding="false"
android:inputType="text" android:inputType="text"
android:paddingLeft="16dp" android:paddingLeft="16dp"
@ -186,22 +189,6 @@
app:layout_constraintBottom_toBottomOf="@+id/textView53" app:layout_constraintBottom_toBottomOf="@+id/textView53"
app:layout_constraintStart_toEndOf="@+id/textView53" /> app:layout_constraintStart_toEndOf="@+id/textView53" />
<EditText
android:id="@+id/editTextText50"
android:layout_width="492dp"
android:layout_height="25dp"
android:clickable="true"
android:ems="10"
android:includeFontPadding="false"
android:inputType="text"
android:paddingLeft="16dp"
android:paddingTop="8dp"
android:paddingRight="16dp"
android:paddingBottom="8dp"
android:textSize="16dp"
app:layout_constraintBottom_toBottomOf="@+id/textView54"
app:layout_constraintStart_toEndOf="@+id/textView54" />
<EditText <EditText
android:id="@+id/editTextText48" android:id="@+id/editTextText48"
android:layout_width="125dp" android:layout_width="125dp"
@ -223,7 +210,7 @@
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="25dp" android:layout_height="25dp"
android:gravity="center" android:gravity="center"
android:text="控制端口" android:text="云台灵敏度"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/editTextText25" app:layout_constraintBottom_toBottomOf="@+id/editTextText25"
@ -234,7 +221,7 @@
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="25dp" android:layout_height="25dp"
android:gravity="center" android:gravity="center"
android:text="右后" android:text="右后"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/editTextText37" app:layout_constraintBottom_toBottomOf="@+id/editTextText37"
@ -261,7 +248,7 @@
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="25dp" android:layout_height="25dp"
android:gravity="center" android:gravity="center"
android:text="后退" android:text="后退"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/editTextText_left" app:layout_constraintBottom_toTopOf="@+id/editTextText_left"
@ -288,7 +275,7 @@
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="25dp" android:layout_height="25dp"
android:gravity="center" android:gravity="center"
android:text="右转" android:text="右转"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/editTextText_left" app:layout_constraintBottom_toBottomOf="@+id/editTextText_left"
@ -347,7 +334,7 @@
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="25dp" android:layout_height="25dp"
android:gravity="center" android:gravity="center"
android:text="右旋转" android:text="右旋转"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/editTextText42" app:layout_constraintBottom_toBottomOf="@+id/editTextText42"
@ -358,7 +345,7 @@
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="25dp" android:layout_height="25dp"
android:gravity="center" android:gravity="center"
android:text="右前" android:text="右前"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/editTextText38" app:layout_constraintBottom_toBottomOf="@+id/editTextText38"
@ -381,11 +368,12 @@
app:layout_constraintStart_toEndOf="@+id/textView41" /> app:layout_constraintStart_toEndOf="@+id/textView41" />
<EditText <EditText
android:id="@+id/editTextText41" android:id="@+id/controlIp"
android:layout_width="125dp" android:layout_width="125dp"
android:layout_height="25dp" android:layout_height="40dp"
android:clickable="true" android:clickable="true"
android:ems="10" android:ems="10"
android:text="192.168.1.1"
android:includeFontPadding="false" android:includeFontPadding="false"
android:inputType="text" android:inputType="text"
android:paddingLeft="16dp" android:paddingLeft="16dp"
@ -482,7 +470,7 @@
android:layout_height="25dp" android:layout_height="25dp"
android:layout_marginStart="48dp" android:layout_marginStart="48dp"
android:gravity="center" android:gravity="center"
android:text="左后" android:text="左后"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -494,7 +482,7 @@
android:layout_height="25dp" android:layout_height="25dp"
android:layout_marginStart="48dp" android:layout_marginStart="48dp"
android:gravity="center" android:gravity="center"
android:text="左旋转" android:text="左旋转"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -506,7 +494,7 @@
android:layout_height="25dp" android:layout_height="25dp"
android:layout_marginStart="48dp" android:layout_marginStart="48dp"
android:gravity="center" android:gravity="center"
android:text="停止" android:text="停止"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -515,18 +503,18 @@
<TextView <TextView
android:id="@+id/textView55" android:id="@+id/textView55"
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="25dp" android:layout_height="40dp"
android:gravity="center" android:gravity="center"
android:text="云台灵敏度:" android:text="控制端口"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/editTextText41" app:layout_constraintBottom_toBottomOf="@+id/controlIp"
app:layout_constraintStart_toEndOf="@+id/editTextText41" /> app:layout_constraintStart_toEndOf="@+id/controlIp" />
<TextView <TextView
android:id="@+id/textView44" android:id="@+id/textView44"
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="25dp" android:layout_height="40dp"
android:layout_marginStart="48dp" android:layout_marginStart="48dp"
android:gravity="center" android:gravity="center"
android:text="控制地址" android:text="控制地址"
@ -538,10 +526,10 @@
<TextView <TextView
android:id="@+id/textView53" android:id="@+id/textView53"
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="25dp" android:layout_height="40dp"
android:layout_marginStart="48dp" android:layout_marginStart="48dp"
android:gravity="center" android:gravity="center"
android:text="视频地址1" android:text="视频地址"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -553,7 +541,7 @@
android:layout_height="25dp" android:layout_height="25dp"
android:layout_marginStart="48dp" android:layout_marginStart="48dp"
android:gravity="center" android:gravity="center"
android:text="左前" android:text="左前"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -565,20 +553,21 @@
android:layout_height="25dp" android:layout_height="25dp"
android:layout_marginStart="48dp" android:layout_marginStart="48dp"
android:gravity="center" android:gravity="center"
android:text="左转" android:text="左转"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView_forward" /> app:layout_constraintTop_toBottomOf="@+id/textView_forward" />
<TextView <TextView
android:id="@+id/textView_forward" android:id="@+id/textView_forward"
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="25dp" android:layout_height="25dp"
android:layout_marginStart="48dp" android:layout_marginStart="48dp"
android:layout_marginTop="52dp" android:layout_marginTop="52dp"
android:gravity="center" android:gravity="center"
android:text="前进:" android:text="前进"
android:textSize="16dp" android:textSize="16dp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -589,6 +578,8 @@
android:layout_width="80dp" android:layout_width="80dp"
android:layout_height="40dp" android:layout_height="40dp"
android:text="返回" android:text="返回"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
android:textSize="15sp" android:textSize="15sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"

@ -7,73 +7,17 @@
android:orientation="vertical" android:orientation="vertical"
> >
<EditText
android:id="@+id/editIP"
android:layout_width="0dp"
android:layout_height="50dp"
android:text="http://192.168.1.1:8080/?action=stream"
app:layout_constraintBottom_toBottomOf="@+id/textViewIP"
app:layout_constraintStart_toEndOf="@id/textViewIP"
app:layout_constraintTop_toTopOf="@+id/textViewIP"
app:layout_constraintWidth_percent="0.6" />
<TextView
android:id="@+id/textView2"
android:layout_width="0dp"
android:layout_height="50dp"
android:gravity="center"
android:text="控制地址"
app:layout_constraintStart_toStartOf="@+id/textViewIP"
app:layout_constraintTop_toBottomOf="@+id/textViewIP"
app:layout_constraintWidth_percent="0.15" />
<EditText
android:id="@+id/ip"
app:layout_constraintWidth_percent="0.6"
android:layout_width="0dp"
android:layout_height="50dp"
android:text="192.168.1.1"
app:layout_constraintStart_toEndOf="@+id/textViewIP"
app:layout_constraintTop_toBottomOf="@+id/editIP" />
<TextView
android:layout_width="0dp"
android:layout_height="50dp"
android:gravity="center"
android:text="控制端口"
app:layout_constraintStart_toStartOf="@+id/textViewIP"
app:layout_constraintTop_toBottomOf="@+id/textView2"
app:layout_constraintWidth_percent="0.15" />
<EditText
android:id="@+id/port"
android:layout_width="0dp"
android:layout_height="50dp"
android:text="2001"
app:layout_constraintStart_toStartOf="@+id/editIP"
app:layout_constraintTop_toBottomOf="@+id/ip"
app:layout_constraintWidth_percent="0.6" />
<TextView
android:id="@+id/textViewIP"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginStart="90dp"
android:layout_marginTop="100dp"
android:gravity="center"
android:text="视频地址"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.15" />
<LinearLayout <LinearLayout
android:id="@+id/linearLayout" android:id="@+id/linearLayout"
android:layout_marginBottom="40dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom" android:layout_gravity="bottom"
android:gravity="center" android:gravity="center"
android:orientation="horizontal" android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout <LinearLayout
android:id="@+id/button_go" android:id="@+id/button_go"

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/constraintParent"
android:layout_width="fill_parent" android:layout_width="fill_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="fill_parent"> android:layout_height="fill_parent">
<!-- <wificar.RockerView--> <!-- <wificar.RockerView-->
<!-- android:layout_width="100dp"--> <!-- android:layout_width="100dp"-->
@ -11,88 +13,247 @@
<!-- android:layout_marginBottom="200dp"--> <!-- android:layout_marginBottom="200dp"-->
<!-- android:visibility="visible"--> <!-- android:visibility="visible"-->
<!-- tools:visibility="visible" />--> <!-- tools:visibility="visible" />-->
<wificar.MySurfaceView <wificar.MySurfaceView
android:id="@+id/mySurfaceViewVideo" android:id="@+id/mySurfaceViewVideo"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent"
app:layout_constraintStart_toStartOf="parent"
<ImageView app:layout_constraintTop_toTopOf="parent"/>
android:id="@+id/floatingView" <LinearLayout
android:layout_width="match_parent" android:id="@+id/rocketLayout"
android:layout_height="match_parent" /> android:layout_width="200dp"
android:layout_height="200dp"
<ImageButton app:layout_constraintBottom_toBottomOf="@+id/mySurfaceViewVideo"
android:id="@+id/TakePhoto" app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="5dp" app:flow_horizontalAlign="center"
android:layout_width="66dp" app:flow_verticalAlign="center"
android:layout_height="55dp" android:orientation="horizontal" />
android:scaleType="centerCrop" <Button
android:layout_marginStart="20dp" android:id="@+id/menuIcon"
android:src="@drawable/snapshot" /> android:layout_width="60dp"
android:layout_height="60dp"
android:text="菜单"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/mySurfaceViewVideo" />
<LinearLayout
android:id="@+id/droppedMenu"
android:layout_width="300dp"
android:layout_height="200dp"
android:layout_below="@+id/menuIcon"
android:layout_alignParentEnd="true"
android:animateLayoutChanges="true"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="@+id/mySurfaceViewVideo"
android:gravity="right"
app:layout_constraintTop_toBottomOf="@+id/menuIcon">
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/distanceText"
android:textColor="#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="超声波距离显示" />
<CheckBox
android:id="@+id/distanceBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/lifeCheckText"
android:textColor="#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="生命体征检测" />
<CheckBox
android:id="@+id/lifeCheckBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/poseCheckText"
android:textColor="#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="关节特征识别" />
<CheckBox
android:id="@+id/poseCheckBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:id="@+id/suggestionLayout"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/suggestionText"
android:textColor="#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查看搜救建议" />
<CheckBox
android:checked="false"
android:id="@+id/suggestionBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:id="@+id/avoidLayout"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/avoidText"
android:textColor="#FFFFFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="超声波自动避障" />
<CheckBox
android:checked="false"
android:id="@+id/avoidBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="wrap_content"
android:layout_height="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="18dp"
android:text="舵机控制" />
<SeekBar
android:id="@+id/xSeekbar"
android:progress="50"
android:layout_width="300dp"
android:layout_height="30dp" />
</LinearLayout>
<ImageButton <!-- <ImageView-->
android:id="@+id/ViewPhoto" <!-- android:id="@+id/floatingView"-->
android:layout_width="66dp" <!-- android:layout_width="match_parent"-->
android:layout_height="55dp" <!-- android:layout_height="match_parent"-->
android:layout_marginTop="5dp" <!-- app:layout_constraintTop_toTopOf="parent" />-->
android:layout_toRightOf="@+id/TakePhoto"
android:layout_x="90dp"
android:layout_marginStart="20dp"
android:scaleType="centerCrop"
android:src="@drawable/look" />
<LinearLayout <LinearLayout
android:id="@+id/poseCheckLayout"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_alignParentEnd="true" android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:gravity="right" android:gravity="right"
android:layout_marginTop="15dp" app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginRight="15dp" app:layout_constraintEnd_toEndOf="parent">
>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="25dp" android:layout_height="25dp"
android:layout_marginRight="10dp" android:layout_marginRight="10dp"
android:text="关节特征识别 启用" android:text="关节特征识别"
android:textSize="18dp"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textStyle="bold"/> android:textSize="18dp"
android:textStyle="bold" />
<ImageView <ImageView
android:layout_width="25dp" android:layout_width="25dp"
android:layout_height="25dp" android:layout_height="25dp"
android:scaleType="centerCrop" android:scaleType="centerCrop"
android:src="@drawable/circle" /> android:src="@drawable/circle" />
</LinearLayout> </LinearLayout>
<!-- <ImageView-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_alignParentStart="true"-->
<!-- android:layout_alignParentTop="true"-->
<!-- android:layout_marginStart="40dp"-->
<!-- android:layout_marginLeft="40dp"-->
<!-- android:layout_marginTop="260dp"-->
<!-- android:src="@drawable/rocket_circle1" />-->
<!-- <ImageView--> <LinearLayout
<!-- android:layout_width="wrap_content"--> android:id="@+id/lifeCheckLayout"
<!-- android:layout_height="wrap_content"--> android:layout_width="wrap_content"
<!-- android:layout_alignParentStart="true"--> android:layout_height="wrap_content"
<!-- android:layout_alignParentTop="true"--> android:layout_above="@+id/poseCheckLayout"
<!-- android:layout_marginStart="65dp"--> android:layout_alignEnd="@+id/poseCheckLayout"
<!-- android:layout_marginLeft="65dp"--> app:layout_constraintBottom_toTopOf="@+id/poseCheckLayout"
<!-- android:layout_marginTop="285dp"--> app:layout_constraintEnd_toEndOf="@+id/mySurfaceViewVideo">
<!-- android:src="@drawable/rocket_circle2" />-->
<!-- <wificar.RockerView--> <TextView
<!-- android:id="@+id/rockerView"--> android:id="@+id/showLive"
<!-- android:layout_width="265dp"--> android:layout_width="wrap_content"
<!-- android:layout_height="300dp"--> android:layout_height="25dp"
<!-- android:layout_alignParentStart="true"--> android:layout_marginRight="10dp"
<!-- android:layout_alignParentTop="true"--> android:text="未检测到生命体"
<!-- android:layout_marginStart="5dp"--> android:textColor="@android:color/white"
<!-- android:layout_marginTop="167dp" />--> android:textSize="18dp"
</RelativeLayout> android:textStyle="bold" />
<ImageView
android:id="@+id/greenCircle"
android:layout_width="25dp"
android:layout_height="25dp"
android:scaleType="centerCrop"
android:src="@drawable/circle"
android:visibility="gone" />
<ImageView
android:id="@+id/redCircle"
android:layout_width="25dp"
android:layout_height="25dp"
android:scaleType="centerCrop"
android:src="@drawable/red_circle"
android:visibility="visible" />
</LinearLayout>
<LinearLayout
android:id="@+id/distanceLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/lifeCheckLayout"
android:layout_alignEnd="@+id/lifeCheckLayout"
android:gravity="right"
app:layout_constraintBottom_toTopOf="@+id/lifeCheckLayout"
app:layout_constraintEnd_toEndOf="@+id/mySurfaceViewVideo">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginRight="10dp"
android:text="超声波距离"
android:textColor="@android:color/white"
android:textSize="18dp"
android:textStyle="bold" />
<TextView
android:id="@+id/distance"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:scaleType="centerCrop"
android:text="0"
android:textColor="#FFFFFF"
android:textSize="20dp" />
</LinearLayout>
<TextView
android:textSize="16dp"
android:visibility="gone"
android:id="@+id/suggestion"
android:textColor="#00FF35"
android:text="搜救建议:暂无"
android:layout_width="450dp"
android:layout_height="100dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/mySurfaceViewVideo"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Loading…
Cancel
Save