添加了设置页面、新增了操作控制页面、完善了APP部分的细节、消除了部分警告、调整了各个页面细节

master
Tushida 2024-06-18 22:58:29 +08:00
parent 9c4e5a9279
commit 4e6115b7ec
57 changed files with 1571 additions and 161 deletions

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings"> <component name="GradleSettings">
<option name="linkedExternalProjectsSettings"> <option name="linkedExternalProjectsSettings">
<GradleProjectSettings> <GradleProjectSettings>

View File

@ -7,16 +7,11 @@
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" /> <!-- 用于读取手机当前的状态 -->
<!--用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 用于写入缓存数据到扩展存储卡 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 用于申请调用A-GPS模块 -->
<!--用于写入缓存数据到扩展存储卡--> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!-- 用于进行网络定位 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 用于访问GPS定位 -->
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application <application
@ -30,6 +25,12 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.UPBot" android:theme="@style/Theme.UPBot"
tools:targetApi="31"> tools:targetApi="31">
<activity
android:name=".EditActivity"
android:exported="false" />
<activity
android:name=".RobotActivity"
android:exported="false" />
<activity <activity
android:name=".ESP8266ClientActivity" android:name=".ESP8266ClientActivity"
android:exported="false" /> android:exported="false" />
@ -39,9 +40,11 @@
<activity <activity
android:name=".ServiceActivity" android:name=".ServiceActivity"
android:exported="false" /> android:exported="false" />
<activity android:name=".MainActivity" <activity
android:exported="false"/> android:name=".MainActivity"
<activity android:name=".SplashActivity" android:exported="false" />
<activity
android:name=".SplashActivity"
android:exported="true"> android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
@ -49,7 +52,10 @@
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
<meta-data android:name="com.amap.api.v2.apikey" android:value="0daf67ccbd867127479dbbb10f105999"/>
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="0daf67ccbd867127479dbbb10f105999" />
</application> </application>
</manifest> </manifest>

View File

@ -1,10 +1,13 @@
package com.example.upbot; package com.example.upbot;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
@ -12,9 +15,13 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import com.example.upbot.MSG.MSG_CMD;
@SuppressLint("StaticFieldLeak") @SuppressLint("StaticFieldLeak")
@ -22,11 +29,16 @@ public class ClientActivity extends AppCompatActivity {
private static EditText msgET; private static EditText msgET;
private static Button confirmBtn; private static Button confirmBtn;
private static Button sendBtn; private static Button sendBtn;
private static ActionBar actionBar;
private static EditText ipET; private static EditText ipET;
private static ImageView startRobot; private static ImageView startRobot;
private static ImageView imageView4;
private static ImageView iv_charge;
private static ImageView iv_stop_robot;
private static StringBuffer stringBuffer = new StringBuffer(); private static StringBuffer stringBuffer = new StringBuffer();
private static TextView msgTV; private static TextView msgTV;
@ -49,14 +61,33 @@ public class ClientActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_client); setContentView(R.layout.activity_client);
actionBar = getSupportActionBar(); Toolbar toolbar = findViewById(R.id.toolBar_client);
assert actionBar != null; setSupportActionBar(toolbar);
actionBar.setDisplayHomeAsUpEnabled(true); if (getSupportActionBar() != null){
actionBar.setTitle("机器人控制"); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
Drawable overflowIcon = ContextCompat.getDrawable(this, R.drawable.baseline_more_vert_24);
if (overflowIcon != null) {
toolbar.setOverflowIcon(overflowIcon);
}
initView(); initView();
setListener(); setListener();
} }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home){
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
private void initView() { private void initView() {
ipET = (EditText) findViewById(R.id.ipET); ipET = (EditText) findViewById(R.id.ipET);
msgET = (EditText) findViewById(R.id.msgET); msgET = (EditText) findViewById(R.id.msgET);
@ -64,6 +95,9 @@ public class ClientActivity extends AppCompatActivity {
confirmBtn = findViewById(R.id.btn_confirm); confirmBtn = findViewById(R.id.btn_confirm);
msgTV = (TextView) findViewById(R.id.msgTV); msgTV = (TextView) findViewById(R.id.msgTV);
startRobot = (ImageView) findViewById(R.id.start_robot_iv); startRobot = (ImageView) findViewById(R.id.start_robot_iv);
imageView4 = (ImageView) findViewById(R.id.imageView4);
iv_charge = (ImageView) findViewById(R.id.iv_charge);
iv_stop_robot = (ImageView) findViewById(R.id.iv_stop_robot);
} }
private void setListener() { private void setListener() {
@ -92,13 +126,45 @@ public class ClientActivity extends AppCompatActivity {
startRobot.setOnClickListener(new View.OnClickListener() { startRobot.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
byte start = 0x00; byte start = MSG_CMD.START_ROBOT;
if(!UPbotComm.getInstance().getConnectStatus()) { if(!UPbotComm.getInstance().getConnectStatus()) {
Toast.makeText(ClientActivity.this, "连接失败无法启动", Toast.LENGTH_SHORT).show(); Toast.makeText(ClientActivity.this, "连接失败无法启动", Toast.LENGTH_SHORT).show();
return; return;
} }
byte[] result = SendMsg.sendCmdMsg(start); sendCmdMsg(start,"正在启动机器人");
UPbotComm.getInstance().sendMessage(result); }
});
imageView4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
byte value = MSG_CMD.START_COVER_SERVICE;
if(!UPbotComm.getInstance().getConnectStatus()) {
Toast.makeText(ClientActivity.this, "连接失败无法覆盖", Toast.LENGTH_SHORT).show();
return;
}
sendCmdMsg(value,"正则启动全覆盖割草");
}
});
iv_charge.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
byte value = MSG_CMD.CHARGING;
if(!UPbotComm.getInstance().getConnectStatus()) {
Toast.makeText(ClientActivity.this, "连接失败无法充电", Toast.LENGTH_SHORT).show();
return;
}
sendCmdMsg(value,"正在返回充电");
}
});
iv_stop_robot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
byte value = MSG_CMD.STOP_MOWING;
if(!UPbotComm.getInstance().getConnectStatus()) {
Toast.makeText(ClientActivity.this, "连接失败无法停止", Toast.LENGTH_SHORT).show();
return;
}
sendCmdMsg(value,"正在停止机器人");
} }
}); });
} }
@ -106,4 +172,10 @@ public class ClientActivity extends AppCompatActivity {
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
} }
private void sendCmdMsg(byte cmd,String toast){
byte[] result = SendMsg.sendCmdMsg(cmd);
UPbotComm.getInstance().sendMessage(result);
Toast.makeText(ClientActivity.this, toast, Toast.LENGTH_SHORT).show();
}
} }

View File

@ -0,0 +1,43 @@
package com.example.upbot;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class EditActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit);
Toolbar toolbar = findViewById(R.id.toolBar_edit);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
Drawable overflowIcon = ContextCompat.getDrawable(this, R.drawable.baseline_more_vert_24);
if (overflowIcon != null) {
toolbar.setOverflowIcon(overflowIcon);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home){
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
}

View File

@ -2,6 +2,7 @@ package com.example.upbot;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
@ -13,6 +14,8 @@ import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationClient;
@ -44,16 +47,10 @@ public class MainActivity extends AppCompatActivity implements AMapLocationListe
//位置更改监听 //位置更改监听
private OnLocationChangedListener mListener; private OnLocationChangedListener mListener;
private ActionBar actionBar;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
actionBar = getSupportActionBar();
assert actionBar != null;
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setTitle("深安割草机器人");
mapView = findViewById(R.id.map_view); mapView = findViewById(R.id.map_view);
mapView.onCreate(savedInstanceState); mapView.onCreate(savedInstanceState);
initLocation(); initLocation();
@ -84,28 +81,30 @@ public class MainActivity extends AppCompatActivity implements AMapLocationListe
} }
}); });
} findViewById(R.id.robot_start).setOnClickListener(new View.OnClickListener() {
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public void onClick(View view) {
getMenuInflater().inflate(R.menu.menu_main, menu); Intent intent=new Intent(MainActivity.this,RobotActivity.class);
return true; startActivity(intent);
} }
});
findViewById(R.id.tv_setting_main).setOnClickListener(new View.OnClickListener() {
@Override @Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) { public void onClick(View view) {
if (item.getItemId() == android.R.id.home){ Intent intent=new Intent(MainActivity.this,EditActivity.class);
Toast.makeText(this,"返回上一页",Toast.LENGTH_LONG).show(); startActivity(intent);
finish();
}else if (item.getItemId() == R.id.action_more){
Toast.makeText(this,"更多设置",Toast.LENGTH_LONG).show();
} }
return true; });
findViewById(R.id.iv_three_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onBackPressed();
} }
});
}
public void activate(OnLocationChangedListener onLocationChangedListener) { public void activate(OnLocationChangedListener onLocationChangedListener) {
mListener = onLocationChangedListener; mListener = onLocationChangedListener;
if (mLocationClient != null) { if (mLocationClient != null) {

View File

@ -0,0 +1,163 @@
package com.example.upbot;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageButton;
import android.widget.TextView;
public class RobotActivity extends AppCompatActivity {
private ImageButton btn_quiet, btn_standard, btn_strong, btn_super, btn_water_less, btn_water_medium, btn_water_high;
private TextView tv_show_power, tv_show_water,tv_quiet, tv_standard, tv_strong, tv_super, tv_water_less, tv_water_medium, tv_water_high;
int i = -1, j = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_robot);
Toolbar toolbar = findViewById(R.id.toolBar_robot);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
Drawable overflowIcon = ContextCompat.getDrawable(this, R.drawable.baseline_more_vert_24);
if (overflowIcon != null) {
toolbar.setOverflowIcon(overflowIcon);
}
initViews();
setListeners();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
private void initViews() {
btn_quiet = findViewById(R.id.btn_quiet);
btn_standard = findViewById(R.id.btn_standard);
btn_strong = findViewById(R.id.btn_strong);
btn_super = findViewById(R.id.btn_super);
btn_water_less = findViewById(R.id.btn_water_less);
btn_water_medium = findViewById(R.id.btn_water_medium);
btn_water_high = findViewById(R.id.btn_water_high);
tv_show_power = findViewById(R.id.tv_show_power);
tv_show_water = findViewById(R.id.tv_show_water);
tv_quiet = findViewById(R.id.tv_quiet);
tv_standard = findViewById(R.id.tv_standard);
tv_strong = findViewById(R.id.tv_strong);
tv_super = findViewById(R.id.tv_super);
tv_water_less = findViewById(R.id.tv_water_less);
tv_water_medium = findViewById(R.id.tv_water_medium);
tv_water_high = findViewById(R.id.tv_water_high);
}
private void setListeners() {
btn_quiet.setOnClickListener(view -> {
i = 0;
check();
});
btn_standard.setOnClickListener(view -> {
i = 1;
check();
});
btn_strong.setOnClickListener(view -> {
i = 2;
check();
});
btn_super.setOnClickListener(view -> {
i = 3;
check();
});
btn_water_less.setOnClickListener(view -> {
j = 0;
check();
});
btn_water_medium.setOnClickListener(view -> {
j = 1;
check();
});
btn_water_high.setOnClickListener(view -> {
j = 2;
check();
});
}
private void check() {
if (i == 0){
btn_quiet.setBackground(getDrawable(R.drawable.iv_quiet_pressed));
tv_quiet.setTextColor(getColor(R.color.text_blue));
tv_show_power.setText("安静");
}else {
btn_quiet.setBackground(getDrawable(R.drawable.iv_quiet));
tv_quiet.setTextColor(getColor(R.color.text_color));
}
if (i == 1){
btn_standard.setBackground(getDrawable(R.drawable.iv_biaozhun_pressed));
tv_standard.setTextColor(getColor(R.color.text_blue));
tv_show_power.setText("标准");
}else {
btn_standard.setBackground(getDrawable(R.drawable.iv_biaozhun));
tv_standard.setTextColor(getColor(R.color.text_color));
}
if (i == 2){
btn_strong.setBackground(getDrawable(R.drawable.iv_strong_pressed));
tv_strong.setTextColor(getColor(R.color.text_blue));
tv_show_power.setText("强力");
}else {
btn_strong.setBackground(getDrawable(R.drawable.iv_strong));
tv_strong.setTextColor(getColor(R.color.text_color));
}
if (i == 3){
btn_super.setBackground(getDrawable(R.drawable.iv_super_pressed));
tv_super.setTextColor(getColor(R.color.text_blue));
tv_show_power.setText("超强");
}else {
btn_super.setBackground(getDrawable(R.drawable.iv_super));
tv_super.setTextColor(getColor(R.color.text_color));
}
if (j == 0){
btn_water_less.setBackground(getDrawable(R.drawable.iv_short_pressed));
tv_water_less.setTextColor(getColor(R.color.text_blue));
tv_show_water.setText("低");
}else {
btn_water_less.setBackground(getDrawable(R.drawable.iv_short));
tv_water_less.setTextColor(getColor(R.color.text_color));
}
if (j == 1){
btn_water_medium.setBackground(getDrawable(R.drawable.iv_medium_pressed));
tv_water_medium.setTextColor(getColor(R.color.text_blue));
tv_show_water.setText("中");
}else {
btn_water_medium.setBackground(getDrawable(R.drawable.iv_medium));
tv_water_medium.setTextColor(getColor(R.color.text_color));
}
if (j == 2){
btn_water_high.setBackground(getDrawable(R.drawable.iv_high_pressed));
tv_water_high.setTextColor(getColor(R.color.text_blue));
tv_show_water.setText("高");
}else {
btn_water_high.setBackground(getDrawable(R.drawable.iv_high));
tv_water_high.setTextColor(getColor(R.color.text_color));
}
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home){
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
}

View File

@ -12,10 +12,10 @@ public class SendMsg {
public static byte[] sendCmdMsg(byte value){ public static byte[] sendCmdMsg(byte value){
Head head = new Head(); Head head = new Head();
head.setMsg_id(MsgId.MSG_CMD); head.setMsg_id(MsgId.MSG_CMD);
head.setLength((byte) 0x01); head.setLength((byte) 0x02);
byte[] temp = new byte[]{head.getFlag(), head.getMsg_id(), head.getLength(), value}; byte[] result = new byte[]{head.getFlag(), head.getMsg_id(), head.getLength(), value,0x00};
long checkSum = getCRC32Checksum(temp); calculateAndSetChecksum(result);
return new byte[]{head.getFlag(), head.getMsg_id(), head.getLength(),value, (byte) checkSum}; return result;
} }
public static byte[] sendMapCorrectMsg(float x_offset, float y_offset, float rotation){ public static byte[] sendMapCorrectMsg(float x_offset, float y_offset, float rotation){
@ -24,19 +24,17 @@ public class SendMsg {
byte[] x_bytes = getBytes(x_offset); byte[] x_bytes = getBytes(x_offset);
byte[] y_bytes = getBytes(y_offset); byte[] y_bytes = getBytes(y_offset);
byte[] rotation_bytes = getBytes(rotation); byte[] rotation_bytes = getBytes(rotation);
int length = x_bytes.length+y_bytes.length+rotation_bytes.length; int length = x_bytes.length+y_bytes.length+rotation_bytes.length+1;
head.setLength((byte) length); head.setLength((byte) length);
byte[] temp = new byte[3+length];
temp[0] = head.getFlag();
temp[1] = head.getMsg_id();
temp[2] = head.getLength();
System.arraycopy(x_bytes, 0, temp, 3, x_bytes.length);
System.arraycopy(y_bytes, 0, temp, 3+x_bytes.length, y_bytes.length);
System.arraycopy(rotation_bytes, 0, temp, 3+x_bytes.length+y_bytes.length, rotation_bytes.length);
long checkSum = getCRC32Checksum(temp);
byte[] result = new byte[4+length]; byte[] result = new byte[4+length];
System.arraycopy(temp, 0, result, 0, temp.length); result[0] = head.getFlag();
result[3+length] = (byte) checkSum; result[1] = head.getMsg_id();
result[2] = head.getLength();
System.arraycopy(x_bytes, 0, result, 3, x_bytes.length);
System.arraycopy(y_bytes, 0, result, 3+x_bytes.length, y_bytes.length);
System.arraycopy(rotation_bytes, 0, result, 3+x_bytes.length+y_bytes.length, rotation_bytes.length);
result[result.length-1] = 0x00;
calculateAndSetChecksum(result);
return result; return result;
} }
@ -44,9 +42,9 @@ public class SendMsg {
Head head = new Head(); Head head = new Head();
head.setMsg_id(MsgId.MSG_CONF); head.setMsg_id(MsgId.MSG_CONF);
head.setLength((byte) 0x01); head.setLength((byte) 0x01);
byte[] temp = new byte[]{head.getFlag(), head.getMsg_id(), head.getLength(), charge}; byte[] result = new byte[]{head.getFlag(), head.getMsg_id(), head.getLength(), charge,0x00};
long checkSum = getCRC32Checksum(temp); calculateAndSetChecksum(result);
return new byte[]{head.getFlag(), head.getMsg_id(), head.getLength(),charge, (byte) checkSum}; return result;
} }
public static byte[] sendFrequencyMsg(float frequency){ public static byte[] sendFrequencyMsg(float frequency){
@ -54,15 +52,13 @@ public class SendMsg {
head.setMsg_id(MsgId.MSG_CONF); head.setMsg_id(MsgId.MSG_CONF);
head.setLength((byte) 0x01); head.setLength((byte) 0x01);
byte[] frequency_byte = getBytes(frequency); byte[] frequency_byte = getBytes(frequency);
byte[] temp = new byte[frequency_byte.length+3];
temp[0] = head.getFlag();
temp[1] = head.getMsg_id();
temp[2] = head.getLength();
System.arraycopy(frequency_byte, 0, temp, 3, frequency_byte.length);
long checkSum = getCRC32Checksum(temp);
byte[] result = new byte[frequency_byte.length+4]; byte[] result = new byte[frequency_byte.length+4];
System.arraycopy(temp, 0, result, 0, temp.length); result[0] = head.getFlag();
result[frequency_byte.length+3] = (byte) checkSum; result[1] = head.getMsg_id();
result[2] = head.getLength();
System.arraycopy(frequency_byte, 0, result, 3, frequency_byte.length);
result[result.length-1] = 0x00;
calculateAndSetChecksum(result);
return result; return result;
} }
@ -77,32 +73,33 @@ public class SendMsg {
y_bytes[i] = getBytes(y_offset[i]); y_bytes[i] = getBytes(y_offset[i]);
z_bytes[i] = getBytes(z_offset[i]); z_bytes[i] = getBytes(z_offset[i]);
} }
int totalLength = (x_bytes.length)*4+(y_bytes.length)*4+(z_bytes.length)*4; int totalLength = (x_bytes.length)*4+(y_bytes.length)*4+(z_bytes.length)*4+1;
head.setLength((byte) totalLength); head.setLength((byte) totalLength);
int l = 3 + totalLength; int l = 4 + totalLength;
byte[] temp = new byte[l]; byte[] result = new byte[l];
temp[0] = head.getFlag(); result[0] = head.getFlag();
temp[1] = head.getMsg_id(); result[1] = head.getMsg_id();
temp[2] = head.getLength(); result[2] = head.getLength();
for (int i = 0; i < base_num ; i++){ for (int i = 0; i < base_num ; i++){
System.arraycopy(x_bytes[i], 0, temp, 3+4*i, x_bytes[i].length); System.arraycopy(x_bytes[i], 0, result, 3+4*i, x_bytes[i].length);
} }
for (int i = 0; i < base_num; i++){ for (int i = 0; i < base_num; i++){
System.arraycopy(y_bytes[i], 0, temp, (x_bytes.length)*4+3+4*i, y_bytes.length); System.arraycopy(y_bytes[i], 0, result, (x_bytes.length)*4+3+4*i, y_bytes.length);
} }
for (int i = 0; i < base_num; i++){ for (int i = 0; i < base_num; i++){
System.arraycopy(z_bytes[i], 0, temp, (x_bytes.length)*4+(y_bytes.length)*4+3+4*i, y_bytes.length); System.arraycopy(z_bytes[i], 0, result, (x_bytes.length)*4+(y_bytes.length)*4+3+4*i, y_bytes.length);
} }
long checkSum = getCRC32Checksum(temp); result[result.length-1] = 0x00;
byte[] result = new byte[4+totalLength]; calculateAndSetChecksum(result);
System.arraycopy(temp, 0, result, 0, temp.length);
result[l] = (byte) checkSum;
return result; return result;
} }
public static long getCRC32Checksum(byte[] bytes) { public static void calculateAndSetChecksum(byte[] bytes) {
Checksum crc32 = new CRC32(); int sum = 0;
crc32.update(bytes, 0, bytes.length); for (int i = 0; i < bytes.length - 1; i++) {
return crc32.getValue(); sum += bytes[i] & 0xFF; // 将字节转换为无符号值
}
byte checksum = (byte) (sum & 0xFF); // 取结果的低 8 位
bytes[bytes.length - 1] = checksum; // 将校验和写入最后一位
} }
public static byte[] getBytes(float data) public static byte[] getBytes(float data)

View File

@ -42,7 +42,7 @@ public class SplashActivity extends AppCompatActivity {
//隐藏状态栏 //隐藏状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
//隐藏标题栏 //隐藏标题栏
getSupportActionBar().hide(); // getSupportActionBar().hide();
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN); | View.SYSTEM_UI_FLAG_FULLSCREEN);

View File

@ -5,6 +5,7 @@ import static com.example.upbot.ClientActivity.handler;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.os.Message; import android.os.Message;
import android.util.Log; import android.util.Log;
import android.widget.Toast;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
@ -44,7 +45,7 @@ public class UPbotComm {
try { try {
//指定ip地址和端口号 //指定ip地址和端口号
Log.d("UPBOTCOMM", ip); Log.d("UPBOTCOMM", ip);
mSocket = new Socket(ip, 1989); mSocket = new Socket(ip, 19890);
if(mSocket != null){ if(mSocket != null){
status = true; status = true;
@ -89,7 +90,7 @@ public class UPbotComm {
}.start(); }.start();
} }
public void sendMessage(final byte[] msg) { public void sendMessage(final byte[] msg) {
if (msg.length == 0 || !status){ if (msg == null || msg.length == 0 || !status) {
return; return;
} }
new Thread() { new Thread() {
@ -97,7 +98,7 @@ public class UPbotComm {
public void run() { public void run() {
try { try {
DataOutputStream writer = new DataOutputStream(mSocket.getOutputStream()); DataOutputStream writer = new DataOutputStream(mSocket.getOutputStream());
writer.writeUTF(Arrays.toString(msg)); // 写一个UTF-8的信息 writer.write(msg);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:tint="#FFFFFF" android:viewportHeight="24"
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M11.67,3.87L9.9,2.1 0,12l9.9,9.9 1.77,-1.77L3.54,12z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:tint="#F5F1F1" android:viewportHeight="24"
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M6.23,20.23l1.77,1.77l10,-10l-10,-10l-1.77,1.77l8.23,8.23z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:tint="#000000" android:viewportHeight="24"
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM18,14L6,14v-2h12v2zM18,11L6,11L6,9h12v2zM18,8L6,8L6,6h12v2z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#000000"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zM9.5,14C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/>
</vector>

View File

@ -0,0 +1,8 @@
<!-- res/drawable/circle.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<size
android:width="100dp"
android:height="100dp" />
<solid android:color="#3C3A3A" /> <!-- 圆形的填充颜色 -->
</shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

@ -0,0 +1,5 @@
<vector android:height="20dp" android:viewportHeight="1024"
android:viewportWidth="1024" android:width="20dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#dbdbdb" android:pathData="M249.3,497.7v29.7c0,14.8 11.8,26.6 26.6,26.6h692.2c14.8,0 26.6,-11.8 26.6,-26.6v-29.7c0,-14.8 -11.8,-26.6 -26.6,-26.6H276c-14.8,0.5 -26.6,12.3 -26.6,26.6z"/>
<path android:fillColor="#dbdbdb" android:pathData="M146.9,530.9c-10.2,-10.2 -10.2,-27.1 0,-37.4l369.7,-368.6c10.2,-10.2 10.2,-27.1 0,-37.4l-21.5,-21.5c-10.2,-10.2 -27.1,-10.2 -37.4,0L42.5,479.7c8.2,-7.7 18.9,-12.3 30.7,-12.3 -24.6,0 -44.5,20 -44.5,44.5s20,44.5 44.5,44.5c-12.3,0 -23,-4.6 -31.2,-12.8l414.2,414.2c10.2,10.2 27.1,10.2 37.4,0l21.5,-21.5c10.2,-10.2 10.2,-27.1 0,-37.4l-368.1,-368.1z"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M928,249.6l-10.7,17.1 10.7,-17.1s0,-2.1 0,0l-8.5,-4.3c-4.3,-2.1 -10.7,-6.4 -21.3,-10.7 -17.1,-8.5 -44.8,-19.2 -78.9,-29.9 -70.4,-21.3 -172.8,-44.8 -309.3,-44.8 -119.5,0 -198.4,17.1 -262.4,36.3h-2.1v2.1c-10.7,2.1 -19.2,6.4 -27.7,8.5 -32,10.7 -61.9,21.3 -83.2,27.7 -10.7,4.3 -19.2,6.4 -25.6,8.5 -2.1,2.1 -6.4,2.1 -6.4,2.1h-2.1c-8.5,4.3 -14.9,12.8 -14.9,21.3v488.5c0,8.5 4.3,17.1 12.8,19.2h2.1c2.1,0 4.3,2.1 6.4,2.1 6.4,2.1 14.9,6.4 25.6,10.7 21.3,8.5 51.2,19.2 83.2,29.9 68.3,21.3 151.5,44.8 294.4,44.8 136.5,0 238.9,-21.3 309.3,-44.8 34.1,-10.7 61.9,-21.3 78.9,-29.9 8.5,-4.3 14.9,-8.5 21.3,-10.7 2.1,-2.1 4.3,-2.1 6.4,-2.1h2.1l-10.7,-17.1 10.7,19.2c6.4,-4.3 10.7,-10.7 10.7,-19.2v-490.7c0,-6.4 -4.3,-12.8 -10.7,-17.1zM98.1,776.5s0,-2.1 4.3,-10.7l-4.3,10.7zM230.4,778.7c-32,-10.7 -61.9,-21.3 -83.2,-27.7 -8.5,-2.1 -14.9,-6.4 -21.3,-8.5L125.9,281.6c6.4,-2.1 12.8,-4.3 21.3,-6.4 21.3,-8.5 51.2,-17.1 81.1,-27.7h2.1c-2.1,10.7 -4.3,21.3 -8.5,34.1 -10.7,55.5 -21.3,132.3 -21.3,230.4 0,87.5 10.7,164.3 21.3,217.6 4.3,19.2 8.5,36.3 10.7,49.1h-2.1zM753.1,725.3c-6.4,25.6 -12.8,46.9 -17.1,61.9 -2.1,4.3 -2.1,8.5 -4.3,10.7 -57.6,12.8 -132.3,21.3 -219.7,21.3 -102.4,0 -172.8,-12.8 -228.3,-27.7 0,-2.1 -2.1,-6.4 -2.1,-10.7 -4.3,-14.9 -8.5,-36.3 -14.9,-61.9 -10.7,-53.3 -21.3,-125.9 -21.3,-209.1 0,-93.9 10.7,-170.7 21.3,-221.9 4.3,-25.6 10.7,-44.8 12.8,-57.6 57.6,-14.9 128,-29.9 232.5,-29.9 87.5,0 160,8.5 219.7,21.3 0,2.1 2.1,6.4 4.3,8.5 4.3,12.8 10.7,34.1 17.1,59.7 12.8,51.2 25.6,128 25.6,221.9 0,85.3 -12.8,160 -25.6,213.3zM896,744.5l-12.8,6.4c-17.1,8.5 -40.5,17.1 -74.7,27.7 -8.5,2.1 -19.2,6.4 -27.7,8.5 4.3,-14.9 8.5,-32 14.9,-51.2 12.8,-55.5 27.7,-132.3 27.7,-219.7 0,-98.1 -12.8,-177.1 -27.7,-232.5 -4.3,-19.2 -8.5,-34.1 -12.8,-46.9 10.7,2.1 19.2,6.4 27.7,8.5 32,10.7 57.6,21.3 74.7,27.7 6.4,2.1 10.7,4.3 12.8,6.4v465.1z"
android:fillColor="#bfbfbf"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M928,249.6l-10.7,17.1 10.7,-17.1s0,-2.1 0,0l-8.5,-4.3c-4.3,-2.1 -10.7,-6.4 -21.3,-10.7 -17.1,-8.5 -44.8,-19.2 -78.9,-29.9 -70.4,-21.3 -172.8,-44.8 -309.3,-44.8 -119.5,0 -198.4,17.1 -262.4,36.3h-2.1v2.1c-10.7,2.1 -19.2,6.4 -27.7,8.5 -32,10.7 -61.9,21.3 -83.2,27.7 -10.7,4.3 -19.2,6.4 -25.6,8.5 -2.1,2.1 -6.4,2.1 -6.4,2.1h-2.1c-8.5,4.3 -14.9,12.8 -14.9,21.3v488.5c0,8.5 4.3,17.1 12.8,19.2h2.1c2.1,0 4.3,2.1 6.4,2.1 6.4,2.1 14.9,6.4 25.6,10.7 21.3,8.5 51.2,19.2 83.2,29.9 68.3,21.3 151.5,44.8 294.4,44.8 136.5,0 238.9,-21.3 309.3,-44.8 34.1,-10.7 61.9,-21.3 78.9,-29.9 8.5,-4.3 14.9,-8.5 21.3,-10.7 2.1,-2.1 4.3,-2.1 6.4,-2.1h2.1l-10.7,-17.1 10.7,19.2c6.4,-4.3 10.7,-10.7 10.7,-19.2v-490.7c0,-6.4 -4.3,-12.8 -10.7,-17.1zM98.1,776.5s0,-2.1 4.3,-10.7l-4.3,10.7zM230.4,778.7c-32,-10.7 -61.9,-21.3 -83.2,-27.7 -8.5,-2.1 -14.9,-6.4 -21.3,-8.5L125.9,281.6c6.4,-2.1 12.8,-4.3 21.3,-6.4 21.3,-8.5 51.2,-17.1 81.1,-27.7h2.1c-2.1,10.7 -4.3,21.3 -8.5,34.1 -10.7,55.5 -21.3,132.3 -21.3,230.4 0,87.5 10.7,164.3 21.3,217.6 4.3,19.2 8.5,36.3 10.7,49.1h-2.1zM753.1,725.3c-6.4,25.6 -12.8,46.9 -17.1,61.9 -2.1,4.3 -2.1,8.5 -4.3,10.7 -57.6,12.8 -132.3,21.3 -219.7,21.3 -102.4,0 -172.8,-12.8 -228.3,-27.7 0,-2.1 -2.1,-6.4 -2.1,-10.7 -4.3,-14.9 -8.5,-36.3 -14.9,-61.9 -10.7,-53.3 -21.3,-125.9 -21.3,-209.1 0,-93.9 10.7,-170.7 21.3,-221.9 4.3,-25.6 10.7,-44.8 12.8,-57.6 57.6,-14.9 128,-29.9 232.5,-29.9 87.5,0 160,8.5 219.7,21.3 0,2.1 2.1,6.4 4.3,8.5 4.3,12.8 10.7,34.1 17.1,59.7 12.8,51.2 25.6,128 25.6,221.9 0,85.3 -12.8,160 -25.6,213.3zM896,744.5l-12.8,6.4c-17.1,8.5 -40.5,17.1 -74.7,27.7 -8.5,2.1 -19.2,6.4 -27.7,8.5 4.3,-14.9 8.5,-32 14.9,-51.2 12.8,-55.5 27.7,-132.3 27.7,-219.7 0,-98.1 -12.8,-177.1 -27.7,-232.5 -4.3,-19.2 -8.5,-34.1 -12.8,-46.9 10.7,2.1 19.2,6.4 27.7,8.5 32,10.7 57.6,21.3 74.7,27.7 6.4,2.1 10.7,4.3 12.8,6.4v465.1z"
android:fillColor="#1296db"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M512,1024a512,512 0,1 1,512 -512,512 512,0 0,1 -512,512zM823.4,442.6a14.7,14.7 0,0 0,-13.5 -6.3h-230.1l59.9,-286.7a11,11 0,0 0,-9.7 -12.5,11.9 11.9,0 0,0 -17.4,3.1L210.5,566.4a9.2,9.2 0,0 0,-1.9 14.2,14.6 14.6,0 0,0 13.5,6.3h261L423.1,873.2c-2.6,6.3 0.7,10.4 9.7,12.5a9.3,9.3 0,0 0,5.7 1.6,20.9 20.9,0 0,0 13.5,-4.7l371.2,-426a26.4,26.4 0,0 0,0.1 -14z"
android:fillColor="#7AC97D"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M718.9,239.3c24.2,17.2 45.7,36.7 64.5,58.5s35,45.3 48.4,70.6c13.4,25.3 23.7,52 30.6,80.3 7,28.2 10.5,56.9 10.5,85.9 0,50 -9.5,96.9 -28.6,140.8 -19.1,43.8 -44.9,82 -77.4,114.6s-70.7,58.4 -114.6,77.4C608.5,886.5 561.6,896 511.6,896c-49.5,0 -96.1,-9.5 -140,-28.6 -43.8,-19.1 -82.2,-44.9 -115,-77.4s-58.6,-70.7 -77.4,-114.6 -28.2,-90.8 -28.2,-140.8c0,-28.5 3.4,-56.5 10.1,-83.9 6.7,-27.4 16.3,-53.5 28.6,-78.2 12.4,-24.7 27.7,-47.9 46,-69.4 18.3,-21.5 38.7,-40.9 61.3,-58.1 11.8,-8.6 24.6,-11.8 38.3,-9.7 13.7,2.2 24.9,8.9 33.5,20.2 8.6,11.3 11.8,23.9 9.7,37.9 -2.2,14 -8.9,25.3 -20.2,33.9C324.4,352 298.5,382.4 280.5,418.4c-18,36 -27,74.8 -27,116.2 0,35.5 6.7,69 20.2,100.4 13.4,31.5 31.9,58.9 55.3,82.3 23.4,23.4 50.8,42 82.3,55.7 31.5,13.7 64.9,20.6 100.4,20.6 35.5,0 69,-6.9 100.4,-20.6 31.5,-13.7 58.9,-32.3 82.3,-55.7 23.4,-23.4 42,-50.8 55.7,-82.3 13.7,-31.5 20.6,-64.9 20.6,-100.4 0,-42 -9.7,-81.6 -29,-119s-46.5,-68.2 -81.5,-92.4c-11.8,-8.1 -19,-19.1 -21.4,-33.1 -2.4,-14 0.4,-26.9 8.5,-38.7 8.1,-11.3 19.1,-18.2 33.1,-20.6C694.2,228.4 707.1,231.3 718.9,239.3L718.9,239.3zM511.6,537c-14,0 -25.9,-5 -35.9,-14.9 -10,-10 -14.9,-21.9 -14.9,-35.9L460.8,179.6c0,-14 5,-26.1 14.9,-36.3S497.6,128 511.6,128c14.5,0 26.8,5.1 36.7,15.3 10,10.2 14.9,22.3 14.9,36.3l0,306.6c0,14 -5,26 -14.9,35.9C538.4,532 526.1,537 511.6,537L511.6,537zM511.6,537"
android:fillColor="#1296db"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M670,925.1L1016.9,925.1v98.9L0,1024v-98.9h333.9c-8.7,-20.5 -14.2,-43.8 -16.6,-69.7 -1.5,-16 -1.9,-28.1 -2.1,-54 -0.1,-15.8 -0.4,-24.6 -0.9,-30.7a404.6,404.6 0,0 1,-94.5 -68.8,402.4 402.4,0 0,1 -121.4,-288.5C98.3,190.5 278.9,9.9 501.8,9.9c222.9,0 403.5,180.6 403.5,403.5 0,108.7 -43.2,210.6 -118.7,285.8a404.6,404.6 0,0 1,-96 70.9c-0.6,6.2 -0.9,15 -1.2,31.2 -0.4,26.1 -0.8,38.1 -2.4,54 -2.6,26 -8.2,49.4 -17,69.9zM501.8,921c63.3,0 81.3,-20.3 86.8,-75.6 1.2,-12.3 1.6,-22.3 1.9,-45.7 0.4,-27 1,-38.1 3.3,-51.8 4.7,-27 15.9,-48.3 40.6,-60.3a305.5,305.5 0,0 0,82.3 -58.5,303.5 303.5,0 0,0 89.6,-215.8c0,-168.2 -136.4,-304.6 -304.6,-304.6 -168.2,0 -304.6,136.4 -304.6,304.6a303.5,303.5 0,0 0,91.7 217.8,305.4 305.4,0 0,0 81.6,57.1c25,11.9 36.2,33.4 40.7,60.6 2.3,13.6 2.7,24.5 3,51.6 0.2,23.1 0.5,33.3 1.7,45.6 5.2,54.9 23,74.9 86.1,74.9z"
android:fillColor="#bfbfbf"/>
<path
android:pathData="M378,569V259.7h70.3v121.8h105.9v-121.8h70.3v309.3h-70.3V433.8h-105.9v135.2z"
android:fillColor="#bfbfbf"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M670,925.1L1016.9,925.1v98.9L0,1024v-98.9h333.9c-8.7,-20.5 -14.2,-43.8 -16.6,-69.7 -1.5,-16 -1.9,-28.1 -2.1,-54 -0.1,-15.8 -0.4,-24.6 -0.9,-30.7a404.6,404.6 0,0 1,-94.5 -68.8,402.4 402.4,0 0,1 -121.4,-288.5C98.3,190.5 278.9,9.9 501.8,9.9c222.9,0 403.5,180.6 403.5,403.5 0,108.7 -43.2,210.6 -118.7,285.8a404.6,404.6 0,0 1,-96 70.9c-0.6,6.2 -0.9,15 -1.2,31.2 -0.4,26.1 -0.8,38.1 -2.4,54 -2.6,26 -8.2,49.4 -17,69.9zM501.8,921c63.3,0 81.3,-20.3 86.8,-75.6 1.2,-12.3 1.6,-22.3 1.9,-45.7 0.4,-27 1,-38.1 3.3,-51.8 4.7,-27 15.9,-48.3 40.6,-60.3a305.5,305.5 0,0 0,82.3 -58.5,303.5 303.5,0 0,0 89.6,-215.8c0,-168.2 -136.4,-304.6 -304.6,-304.6 -168.2,0 -304.6,136.4 -304.6,304.6a303.5,303.5 0,0 0,91.7 217.8,305.4 305.4,0 0,0 81.6,57.1c25,11.9 36.2,33.4 40.7,60.6 2.3,13.6 2.7,24.5 3,51.6 0.2,23.1 0.5,33.3 1.7,45.6 5.2,54.9 23,74.9 86.1,74.9z"
android:fillColor="#1296db"/>
<path
android:pathData="M378,569V259.7h70.3v121.8h105.9v-121.8h70.3v309.3h-70.3V433.8h-105.9v135.2z"
android:fillColor="#1296db"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M670.5,925.1L1016.9,925.1v98.9L0,1024v-98.9h332.9c-8.5,-20.3 -13.8,-43.4 -16.2,-68.9 -1.5,-16 -1.9,-28.2 -2.1,-54.1 -0.1,-15.9 -0.4,-24.7 -0.9,-30.8a405.5,405.5 0,0 1,-94.8 -69,403.3 403.3,0 0,1 -121.7,-289.2C97.1,189.7 278.2,8.7 501.5,8.7c223.4,0 404.4,181.1 404.4,404.4a403.2,403.2 0,0 1,-118.9 286.5,405.6 405.6,0 0,1 -96.3,71.1c-0.6,6.2 -0.9,15.1 -1.2,31.4 -0.4,26.2 -0.8,38.1 -2.4,54.1 -2.6,25.6 -8,48.8 -16.6,69.1zM501.6,922.1c63.5,0 81.6,-20.4 87.2,-75.9 1.2,-12.3 1.6,-22.4 2,-45.8 0.4,-27 1,-38.2 3.3,-51.9 4.7,-27 15.9,-48.4 40.6,-60.3a306.5,306.5 0,0 0,82.6 -58.7,304.4 304.4,0 0,0 89.9,-216.4c0,-168.8 -136.8,-305.5 -305.6,-305.5s-305.5,136.8 -305.5,305.5a304.4,304.4 0,0 0,91.9 218.5,306.4 306.4,0 0,0 81.8,57.3c25,12 36.2,33.4 40.7,60.6 2.3,13.6 2.7,24.6 3,51.7 0.2,23.2 0.5,33.4 1.7,45.7 5.2,55.1 23.1,75.2 86.4,75.2z"
android:fillColor="#bfbfbf"/>
<path
android:pathData="M346.5,569.1V259h93.7l56.3,211.5 55.6,-211.5h93.9v310.1h-58.2V325l-61.6,244.1h-60.3L404.7,325v244.1z"
android:fillColor="#bfbfbf"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M670.5,925.1L1016.9,925.1v98.9L0,1024v-98.9h332.9c-8.5,-20.3 -13.8,-43.4 -16.2,-68.9 -1.5,-16 -1.9,-28.2 -2.1,-54.1 -0.1,-15.9 -0.4,-24.7 -0.9,-30.8a405.5,405.5 0,0 1,-94.8 -69,403.3 403.3,0 0,1 -121.7,-289.2C97.1,189.7 278.2,8.7 501.5,8.7c223.4,0 404.4,181.1 404.4,404.4a403.2,403.2 0,0 1,-118.9 286.5,405.6 405.6,0 0,1 -96.3,71.1c-0.6,6.2 -0.9,15.1 -1.2,31.4 -0.4,26.2 -0.8,38.1 -2.4,54.1 -2.6,25.6 -8,48.8 -16.6,69.1zM501.6,922.1c63.5,0 81.6,-20.4 87.2,-75.9 1.2,-12.3 1.6,-22.4 2,-45.8 0.4,-27 1,-38.2 3.3,-51.9 4.7,-27 15.9,-48.4 40.6,-60.3a306.5,306.5 0,0 0,82.6 -58.7,304.4 304.4,0 0,0 89.9,-216.4c0,-168.8 -136.8,-305.5 -305.6,-305.5s-305.5,136.8 -305.5,305.5a304.4,304.4 0,0 0,91.9 218.5,306.4 306.4,0 0,0 81.8,57.3c25,12 36.2,33.4 40.7,60.6 2.3,13.6 2.7,24.6 3,51.7 0.2,23.2 0.5,33.4 1.7,45.7 5.2,55.1 23.1,75.2 86.4,75.2z"
android:fillColor="#1296db"/>
<path
android:pathData="M346.5,569.1V259h93.7l56.3,211.5 55.6,-211.5h93.9v310.1h-58.2V325l-61.6,244.1h-60.3L404.7,325v244.1z"
android:fillColor="#1296db"/>
</vector>

View File

@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M84,96.6m170.7,0l59.7,0q170.7,0 170.7,170.7l0,59.7q0,170.7 -170.7,170.7l-59.7,0q-170.7,0 -170.7,-170.7l0,-59.7q0,-170.7 170.7,-170.7Z"
android:fillColor="#bfbfbf"/>
<path
android:pathData="M538.6,96.6m170.7,0l59.7,0q170.7,0 170.7,170.7l0,59.7q0,170.7 -170.7,170.7l-59.7,0q-170.7,0 -170.7,-170.7l0,-59.7q0,-170.7 170.7,-170.7Z"
android:fillColor="#bfbfbf"/>
<path
android:pathData="M84,555m170.7,0l59.7,0q170.7,0 170.7,170.7l0,59.7q0,170.7 -170.7,170.7l-59.7,0q-170.7,0 -170.7,-170.7l0,-59.7q0,-170.7 170.7,-170.7Z"
android:fillColor="#bfbfbf"/>
<path
android:pathData="M890.5,688.5h-302.8a34.1,34.1 0,0 1,0 -68.3h302.8a34.1,34.1 0,1 1,0 68.3zM890.5,891.2h-302.8a34.1,34.1 0,0 1,0 -68.3h302.8a34.1,34.1 0,1 1,0 68.3z"
android:fillColor="#bfbfbf"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="200dp" android:viewportHeight="1024"
android:viewportWidth="1024" android:width="200dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#bfbfbf" android:pathData="M513,928.2c-56,0 -110.4,-10.9 -161.5,-32.2 -49.4,-20.6 -93.8,-50.2 -131.9,-87.9s-68,-81.5 -88.9,-130.3C109,627.2 98,573.5 98,518.1v-12.1c0,-55.3 11,-109.1 32.6,-159.6 20.9,-48.8 50.8,-92.7 88.9,-130.3 38.1,-37.7 82.5,-67.2 131.9,-87.9 51.2,-21.4 105.5,-32.2 161.6,-32.2 56,0 110.4,10.9 161.5,32.2 49.4,20.7 93.8,50.2 131.9,87.9 38.1,37.7 68,81.5 88.9,130.3 21.6,50.6 32.6,104.3 32.6,159.6v12.1c0,55.3 -11,109.1 -32.6,159.6 -20.9,48.8 -50.8,92.7 -88.9,130.3s-82.5,67.2 -131.9,87.9c-51.2,21.4 -105.5,32.2 -161.6,32.2zM513,137c-205.9,0 -373.5,165.6 -373.5,369.1v12.1c0,203.5 167.6,369.1 373.5,369.1s373.5,-165.6 373.5,-369.1v-12.1c0,-203.5 -167.6,-369.1 -373.5,-369.1z"/>
<path android:fillColor="#bfbfbf" android:pathData="M527.5,308.8c-6.9,171 71.8,202.1 190,193.3 18,105.9 -61.1,204 -175.6,217.6 -112.6,14.6 -215.8,-64.9 -230.4,-177.5 -0.7,-5.4 -1.2,-10.9 -1.5,-16.3 -8.1,-121.4 85.9,-216.7 217.4,-217.1zM462.4,379.1c-72,39.1 -102.1,95 -90.7,160 11.9,63 62.3,111.7 125.7,121.3 67.5,8.8 122.4,-23.4 152.9,-93 -103.7,-18.6 -167,-80.2 -187.9,-188.3z"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M513,928.2c-56,0 -110.4,-10.9 -161.5,-32.2 -49.4,-20.6 -93.8,-50.2 -131.9,-87.9s-68,-81.5 -88.9,-130.3C109,627.2 98,573.5 98,518.1v-12.1c0,-55.3 11,-109.1 32.6,-159.6 20.9,-48.8 50.8,-92.7 88.9,-130.3 38.1,-37.7 82.5,-67.2 131.9,-87.9 51.2,-21.4 105.5,-32.2 161.6,-32.2 56,0 110.4,10.9 161.5,32.2 49.4,20.7 93.8,50.2 131.9,87.9 38.1,37.7 68,81.5 88.9,130.3 21.6,50.6 32.6,104.3 32.6,159.6v12.1c0,55.3 -11,109.1 -32.6,159.6 -20.9,48.8 -50.8,92.7 -88.9,130.3s-82.5,67.2 -131.9,87.9c-51.2,21.4 -105.5,32.2 -161.6,32.2zM513,137c-205.9,0 -373.5,165.6 -373.5,369.1v12.1c0,203.5 167.6,369.1 373.5,369.1s373.5,-165.6 373.5,-369.1v-12.1c0,-203.5 -167.6,-369.1 -373.5,-369.1z"
android:fillColor="#1296db"/>
<path
android:pathData="M527.5,308.8c-6.9,171 71.8,202.1 190,193.3 18,105.9 -61.1,204 -175.6,217.6 -112.6,14.6 -215.8,-64.9 -230.4,-177.5 -0.7,-5.4 -1.2,-10.9 -1.5,-16.3 -8.1,-121.4 85.9,-216.7 217.4,-217.1zM462.4,379.1c-72,39.1 -102.1,95 -90.7,160 11.9,63 62.3,111.7 125.7,121.3 67.5,8.8 122.4,-23.4 152.9,-93 -103.7,-18.6 -167,-80.2 -187.9,-188.3z"
android:fillColor="#1296db"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M670.5,925.1h347.4v98.9h-1016.9v-98.9h332c-8.5,-20.3 -13.8,-43.4 -16.2,-68.9 -1.5,-16 -1.9,-28.2 -2.1,-54.1 -0.1,-15.9 -0.4,-24.7 -0.9,-30.8a405.5,405.5 0,0 1,-94.8 -69,403.3 403.3,0 0,1 -121.7,-289.2C97.1,189.7 278.2,8.7 501.5,8.7c223.4,0 404.4,181.1 404.4,404.4a403.2,403.2 0,0 1,-118.9 286.5,405.6 405.6,0 0,1 -96.3,71.1c-0.6,6.2 -0.9,15.1 -1.2,31.4 -0.4,26.2 -0.8,38.1 -2.4,54.1 -2.6,25.6 -8,48.8 -16.6,69.1zM501.6,922.1c63.5,0 81.6,-20.4 87.2,-75.9 1.2,-12.3 1.6,-22.4 2,-45.8 0.4,-27 1,-38.2 3.3,-51.9 4.7,-27 15.9,-48.4 40.6,-60.3a306.5,306.5 0,0 0,82.6 -58.7,304.4 304.4,0 0,0 89.9,-216.4c0,-168.8 -136.8,-305.5 -305.6,-305.5s-305.5,136.8 -305.5,305.5a304.4,304.4 0,0 0,91.9 218.5,306.4 306.4,0 0,0 81.8,57.3c25,12 36.2,33.4 40.7,60.6 2.3,13.6 2.7,24.6 3,51.7 0.2,23.2 0.5,33.4 1.7,45.7 5.2,55.1 23.1,75.2 86.4,75.2z"
android:fillColor="#bfbfbf"/>
<path
android:pathData="M353.1,471.4l69.7,-6.8c4.2,23.4 12.7,40.6 25.5,51.6 12.8,11 30.1,16.5 51.9,16.5 23.1,0 40.5,-4.9 52.2,-14.6 11.7,-9.8 17.6,-21.2 17.6,-34.3 0,-8.4 -2.5,-15.5 -7.4,-21.4 -4.9,-5.9 -13.5,-11 -25.8,-15.4 -8.4,-2.9 -27.5,-8.1 -57.4,-15.5 -38.4,-9.5 -65.4,-21.2 -80.9,-35.1 -21.8,-19.5 -32.7,-43.3 -32.7,-71.4 0,-18.1 5.1,-35 15.4,-50.7 10.2,-15.7 25,-27.7 44.3,-36C444.9,230.1 468.2,226 495.4,226c44.5,0 78.1,9.8 100.6,29.3 22.5,19.5 34.3,45.6 35.5,78.2l-71.7,3.1c-3.1,-18.2 -9.6,-31.4 -19.7,-39.3 -10.1,-8 -25.2,-12 -45.4,-12 -20.8,0 -37.1,4.3 -48.9,12.8 -7.6,5.5 -11.4,12.8 -11.4,22 0,8.4 3.5,15.6 10.6,21.5 9,7.6 31,15.5 65.8,23.7s60.6,16.8 77.3,25.5c16.7,8.8 29.8,20.8 39.2,36.1 9.4,15.3 14.2,34.1 14.2,56.5 0,20.3 -5.6,39.4 -16.9,57.1 -11.3,17.8 -27.3,30.9 -47.9,39.6 -20.7,8.6 -46.4,13 -77.2,13 -44.9,0 -79.3,-10.4 -103.4,-31.1 -24.1,-20.7 -38.4,-51 -43.1,-90.7z"
android:fillColor="#bfbfbf"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M670.5,925.1h347.4v98.9h-1016.9v-98.9h332c-8.5,-20.3 -13.8,-43.4 -16.2,-68.9 -1.5,-16 -1.9,-28.2 -2.1,-54.1 -0.1,-15.9 -0.4,-24.7 -0.9,-30.8a405.5,405.5 0,0 1,-94.8 -69,403.3 403.3,0 0,1 -121.7,-289.2C97.1,189.7 278.2,8.7 501.5,8.7c223.4,0 404.4,181.1 404.4,404.4a403.2,403.2 0,0 1,-118.9 286.5,405.6 405.6,0 0,1 -96.3,71.1c-0.6,6.2 -0.9,15.1 -1.2,31.4 -0.4,26.2 -0.8,38.1 -2.4,54.1 -2.6,25.6 -8,48.8 -16.6,69.1zM501.6,922.1c63.5,0 81.6,-20.4 87.2,-75.9 1.2,-12.3 1.6,-22.4 2,-45.8 0.4,-27 1,-38.2 3.3,-51.9 4.7,-27 15.9,-48.4 40.6,-60.3a306.5,306.5 0,0 0,82.6 -58.7,304.4 304.4,0 0,0 89.9,-216.4c0,-168.8 -136.8,-305.5 -305.6,-305.5s-305.5,136.8 -305.5,305.5a304.4,304.4 0,0 0,91.9 218.5,306.4 306.4,0 0,0 81.8,57.3c25,12 36.2,33.4 40.7,60.6 2.3,13.6 2.7,24.6 3,51.7 0.2,23.2 0.5,33.4 1.7,45.7 5.2,55.1 23.1,75.2 86.4,75.2z"
android:fillColor="#1296db"/>
<path
android:pathData="M353.1,471.4l69.7,-6.8c4.2,23.4 12.7,40.6 25.5,51.6 12.8,11 30.1,16.5 51.9,16.5 23.1,0 40.5,-4.9 52.2,-14.6 11.7,-9.8 17.6,-21.2 17.6,-34.3 0,-8.4 -2.5,-15.5 -7.4,-21.4 -4.9,-5.9 -13.5,-11 -25.8,-15.4 -8.4,-2.9 -27.5,-8.1 -57.4,-15.5 -38.4,-9.5 -65.4,-21.2 -80.9,-35.1 -21.8,-19.5 -32.7,-43.3 -32.7,-71.4 0,-18.1 5.1,-35 15.4,-50.7 10.2,-15.7 25,-27.7 44.3,-36C444.9,230.1 468.2,226 495.4,226c44.5,0 78.1,9.8 100.6,29.3 22.5,19.5 34.3,45.6 35.5,78.2l-71.7,3.1c-3.1,-18.2 -9.6,-31.4 -19.7,-39.3 -10.1,-8 -25.2,-12 -45.4,-12 -20.8,0 -37.1,4.3 -48.9,12.8 -7.6,5.5 -11.4,12.8 -11.4,22 0,8.4 3.5,15.6 10.6,21.5 9,7.6 31,15.5 65.8,23.7s60.6,16.8 77.3,25.5c16.7,8.8 29.8,20.8 39.2,36.1 9.4,15.3 14.2,34.1 14.2,56.5 0,20.3 -5.6,39.4 -16.9,57.1 -11.3,17.8 -27.3,30.9 -47.9,39.6 -20.7,8.6 -46.4,13 -77.2,13 -44.9,0 -79.3,-10.4 -103.4,-31.1 -24.1,-20.7 -38.4,-51 -43.1,-90.7z"
android:fillColor="#1296db"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M547.8,535.4c-4.4,-41.5 -59.2,-46.1 -69.1,-5.9 -3.7,50.1 64.5,57 69.1,5.9z"
android:fillColor="#bfbfbf"/>
<path
android:pathData="M559.6,220.3l29.5,-14.8 29.5,-12 30.8,-7.2 32.4,-2.9C619.2,69.8 469.2,46.8 374,136.2c-46,37.2 -68.8,101.4 -69.2,159.1 0.5,103.1 63.2,157.1 145.8,210.8l-4.4,11.6 -1.5,13.3 -28,3.1h-27.9l-27.9,-4.6c-66.1,-13.8 -122.2,-69.7 -132.8,-137l-5.9,-31 -1.5,-32.3 3,-32.5 5.9,-30.8C101.8,292.8 35,425.5 89.6,544.3c30,61.6 66.9,92.7 131.1,114.9 91.1,31.9 176.6,-13.5 244.6,-73.6l10.3,8.9 10.3,4.4 -4.4,28 -8.8,26.4 -13.3,25.1c-32.9,59.6 -104,92.8 -170.9,83.9l-31,-4.2 -30.8,-7.4 -29.5,-13.3 -28,-16.2c-18.8,128.1 94.6,237.3 220.8,219.6 55.1,-2 120.3,-43 150.4,-88.5 59.5,-82.8 40.5,-165.8 5.9,-256.3l10.3,-7.4 8.9,-8.9 23.6,14.8 22.2,16.2 20.5,19.2c44.6,51.1 58.1,126.9 28,188.4l-14.8,29.5 -17.6,26.5 -20.7,24.9 -23.4,20.8c117.1,54.4 251.6,-13.6 276.9,-141.4 13.6,-56 -1.9,-126.1 -38.4,-170.9 -60.8,-82.2 -143.7,-91.3 -241.5,-85.6l-2.9,-11.8 -5.9,-10.1 20.5,-19.2 22.3,-16.2 25.1,-13.3c65.8,-26.9 136,-16.4 188.4,32.3l22,22.3 20.7,24.9 16.2,28 13.3,28c89.4,-91.8 62.9,-246.7 -50.2,-306.5 -51.5,-35.2 -115.7,-33.2 -173.8,-17.5 -95.2,36.1 -131.6,107.3 -154.7,204.5h-11.8l-13.1,1.7 -12,-25.1 -7.3,-26.6 -5.9,-28c-4.3,-69.3 27.4,-134.2 88.4,-169.3z"
android:fillColor="#bfbfbf"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M547.8,535.4c-4.4,-41.5 -59.2,-46.1 -69.1,-5.9 -3.7,50.1 64.5,57 69.1,5.9z"
android:fillColor="#1296db"/>
<path
android:pathData="M559.6,220.3l29.5,-14.8 29.5,-12 30.8,-7.2 32.4,-2.9C619.2,69.8 469.2,46.8 374,136.2c-46,37.2 -68.8,101.4 -69.2,159.1 0.5,103.1 63.2,157.1 145.8,210.8l-4.4,11.6 -1.5,13.3 -28,3.1h-27.9l-27.9,-4.6c-66.1,-13.8 -122.2,-69.7 -132.8,-137l-5.9,-31 -1.5,-32.3 3,-32.5 5.9,-30.8C101.8,292.8 35,425.5 89.6,544.3c30,61.6 66.9,92.7 131.1,114.9 91.1,31.9 176.6,-13.5 244.6,-73.6l10.3,8.9 10.3,4.4 -4.4,28 -8.8,26.4 -13.3,25.1c-32.9,59.6 -104,92.8 -170.9,83.9l-31,-4.2 -30.8,-7.4 -29.5,-13.3 -28,-16.2c-18.8,128.1 94.6,237.3 220.8,219.6 55.1,-2 120.3,-43 150.4,-88.5 59.5,-82.8 40.5,-165.8 5.9,-256.3l10.3,-7.4 8.9,-8.9 23.6,14.8 22.2,16.2 20.5,19.2c44.6,51.1 58.1,126.9 28,188.4l-14.8,29.5 -17.6,26.5 -20.7,24.9 -23.4,20.8c117.1,54.4 251.6,-13.6 276.9,-141.4 13.6,-56 -1.9,-126.1 -38.4,-170.9 -60.8,-82.2 -143.7,-91.3 -241.5,-85.6l-2.9,-11.8 -5.9,-10.1 20.5,-19.2 22.3,-16.2 25.1,-13.3c65.8,-26.9 136,-16.4 188.4,32.3l22,22.3 20.7,24.9 16.2,28 13.3,28c89.4,-91.8 62.9,-246.7 -50.2,-306.5 -51.5,-35.2 -115.7,-33.2 -173.8,-17.5 -95.2,36.1 -131.6,107.3 -154.7,204.5h-11.8l-13.1,1.7 -12,-25.1 -7.3,-26.6 -5.9,-28c-4.3,-69.3 27.4,-134.2 88.4,-169.3z"
android:fillColor="#1296db"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="215.2dp"
android:height="200dp"
android:viewportWidth="1102"
android:viewportHeight="1024">
<path
android:pathData="M557.5,693.1a204.7,204.7 0,0 0,192.9 -111A176.4,176.4 0,0 0,708.7 375a211,211 0,0 0,-218.1 -44.1,188.2 188.2,0 0,0 -127.6,174 179.5,179.5 0,0 0,55.1 131.5,207.1 207.1,0 0,0 139.4,56.7zM351.2,891.5a559.9,559.9 0,0 1,-114.2 -78.7,405.5 405.5,0 0,1 -148,-218.1A433.1,433.1 0,0 1,72.4 472.6c0,-262.2 244.1,-472.5 544.9,-472.5A557.5,557.5 0,0 1,1102.4 259.2a507.9,507.9 0,0 0,-341 -126.8h-10.2a559.9,559.9 0,0 1,115 74.8,405.5 405.5,0 0,1 148,222.1 433.1,433.1 0,0 1,15.7 122c0,262.2 -244.1,472.5 -544.9,472.5A557.5,557.5 0,0 1,0 764.8a507.9,507.9 0,0 0,341 126.8z"
android:fillColor="#bfbfbf"/>
</vector>

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="215.2dp"
android:height="200dp"
android:viewportWidth="1102"
android:viewportHeight="1024">
<path
android:pathData="M557.5,693.1a204.7,204.7 0,0 0,192.9 -111A176.4,176.4 0,0 0,708.7 375a211,211 0,0 0,-218.1 -44.1,188.2 188.2,0 0,0 -127.6,174 179.5,179.5 0,0 0,55.1 131.5,207.1 207.1,0 0,0 139.4,56.7zM351.2,891.5a559.9,559.9 0,0 1,-114.2 -78.7,405.5 405.5,0 0,1 -148,-218.1A433.1,433.1 0,0 1,72.4 472.6c0,-262.2 244.1,-472.5 544.9,-472.5A557.5,557.5 0,0 1,1102.4 259.2a507.9,507.9 0,0 0,-341 -126.8h-10.2a559.9,559.9 0,0 1,115 74.8,405.5 405.5,0 0,1 148,222.1 433.1,433.1 0,0 1,15.7 122c0,262.2 -244.1,472.5 -544.9,472.5A557.5,557.5 0,0 1,0 764.8a507.9,507.9 0,0 0,341 126.8z"
android:fillColor="#1296db"/>
</vector>

View File

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M512,512m-486.3,0a486.3,486.3 0,1 0,972.6 0,486.3 486.3,0 1,0 -972.6,0Z"
android:fillColor="#4E6070"/>
<path
android:pathData="M471.3,163.6c0,-22.5 18.2,-40.7 40.7,-40.7s40.7,18.2 40.7,40.7v146.5c0,22.5 -18.2,40.7 -40.7,40.7s-40.7,-18.2 -40.7,-40.7V163.6z"
android:fillColor="#00CCC6"/>
<path
android:pathData="M732.1,731.7c-58.8,58.8 -137,91.2 -220.1,91.2 -171.7,0 -311.3,-139.7 -311.3,-311.3 0,-103.6 51.3,-200.1 137.2,-258.1 18.6,-12.6 43.9,-7.7 56.5,10.9 12.6,18.6 7.7,43.9 -10.9,56.5 -63.5,42.9 -101.4,114.2 -101.4,190.7 0,126.8 103.1,229.9 229.9,229.9 61.4,0 119.2,-23.9 162.6,-67.4 43.4,-43.4 67.3,-101.1 67.3,-162.6 0,-76.5 -37.9,-147.8 -101.4,-190.7 -18.6,-12.6 -23.5,-37.9 -11,-56.5a40.7,40.7 0,0 1,56.5 -11c86,58 137.3,154.5 137.3,258.1 -0,83.2 -32.4,161.4 -91.2,220.1z"
android:fillColor="#00CCC6"/>
</vector>

View File

@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M0,795.2l1022.6,0 0,113.6 -1022.6,0 0,-113.6Z"
android:fillColor="#cdcdcd"/>
<path
android:pathData="M0,454.4l1022.6,0 0,113.6 -1022.6,0 0,-113.6Z"
android:fillColor="#cdcdcd"/>
<path
android:pathData="M0,113.5l1022.6,0 0,113.6 -1022.6,0 0,-113.6Z"
android:fillColor="#cdcdcd"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M483.2,166.4c-39,45 -71.9,93.1 -108,144 -27,39 -54.1,78 -75,114 -50.9,83.9 -77.9,155.9 -77.9,203.9 0,162 129,293.9 288,293.9 158.9,0 288,-132 288,-293.9 0,-48 -27,-119.9 -78,-206.9 -21,-36 -45,-75 -75,-114 -33,-48 -69,-96 -108,-144 -9,-11.9 -18.1,-21 -27,-33l-27.1,36zM162.3,628.3c0,-63 30,-141 86.9,-236.9 21,-39 48,-78 78,-119.9 36,-50.9 71.9,-99 110.9,-146.9 15.1,-18.1 30,-39 48,-57l3,-3 24,-27 24,27 3,3c3,3 6,6 9,11.9C561.1,91.5 573.2,106.6 585.2,124.6c39,48 75,96 110.9,146.9 30,41.9 54.1,80.9 78,119.9 57,96 86.9,174 86.9,236.9 -6,198 -158.9,356.9 -350.9,356.9 -194.8,0.1 -347.9,-158.8 -347.9,-356.9zM162.3,628.3"
android:fillColor="#bfbfbf"/>
<path
android:pathData="M510.3,877.3c-135,0 -243,-108 -243,-243s122,-317.2 185.2,-322.6c57.8,-4.9 36.7,104.5 134.4,70.9 90.2,-31.1 166.4,153.6 166.4,251.7 -3,135.1 -111,243 -243,243zM510.3,877.3"
android:fillColor="#bfbfbf"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M483.2,166.4c-39,45 -71.9,93.1 -108,144 -27,39 -54.1,78 -75,114 -50.9,83.9 -77.9,155.9 -77.9,203.9 0,162 129,293.9 288,293.9 158.9,0 288,-132 288,-293.9 0,-48 -27,-119.9 -78,-206.9 -21,-36 -45,-75 -75,-114 -33,-48 -69,-96 -108,-144 -9,-11.9 -18.1,-21 -27,-33l-27.1,36zM162.3,628.3c0,-63 30,-141 86.9,-236.9 21,-39 48,-78 78,-119.9 36,-50.9 71.9,-99 110.9,-146.9 15.1,-18.1 30,-39 48,-57l3,-3 24,-27 24,27 3,3c3,3 6,6 9,11.9C561.1,91.5 573.2,106.6 585.2,124.6c39,48 75,96 110.9,146.9 30,41.9 54.1,80.9 78,119.9 57,96 86.9,174 86.9,236.9 -6,198 -158.9,356.9 -350.9,356.9 -194.8,0.1 -347.9,-158.8 -347.9,-356.9zM162.3,628.3"
android:fillColor="#1296db"/>
<path
android:pathData="M510.3,877.3c-135,0 -243,-108 -243,-243s122,-317.2 185.2,-322.6c57.8,-4.9 36.7,104.5 134.4,70.9 90.2,-31.1 166.4,153.6 166.4,251.7 -3,135.1 -111,243 -243,243zM510.3,877.3"
android:fillColor="#1296db"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M505.9,918c-177.7,0 -322.6,-144.9 -322.6,-322.6 0,-220.2 225.3,-423.9 293.9,-480.8 16.4,-13.8 40.4,-13.8 56.8,0 69.1,57.3 293.9,260.6 293.9,480.8 0.5,178.2 -143.9,322.6 -322,322.6zM505.9,162.3c-57.3,48.6 -267.8,240.1 -267.8,433.7 0,148 120.3,267.8 267.8,267.8s267.8,-120.3 267.8,-267.8c0.5,-194 -210.4,-385.5 -267.8,-433.7z"
android:fillColor="#bfbfbf"/>
<path
android:pathData="M453.6,800.8c-2.6,0 -5.6,-0.5 -8.2,-1 -79.9,-25.6 -139.8,-92.2 -156.7,-174.1 -3.1,-14.8 6.7,-29.2 21,-32.3 14.8,-3.1 29.2,6.7 32.3,21 12.8,62.5 58.9,113.7 119.8,132.6 14.3,4.6 22.5,20 17.9,34.3 -4.1,11.8 -14.8,19.5 -26.1,19.5z"
android:fillColor="#bfbfbf"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M505.9,918c-177.7,0 -322.6,-144.9 -322.6,-322.6 0,-220.2 225.3,-423.9 293.9,-480.8 16.4,-13.8 40.4,-13.8 56.8,0 69.1,57.3 293.9,260.6 293.9,480.8 0.5,178.2 -143.9,322.6 -322,322.6zM505.9,162.3c-57.3,48.6 -267.8,240.1 -267.8,433.7 0,148 120.3,267.8 267.8,267.8s267.8,-120.3 267.8,-267.8c0.5,-194 -210.4,-385.5 -267.8,-433.7z"
android:fillColor="#1296db"/>
<path
android:pathData="M453.6,800.8c-2.6,0 -5.6,-0.5 -8.2,-1 -79.9,-25.6 -139.8,-92.2 -156.7,-174.1 -3.1,-14.8 6.7,-29.2 21,-32.3 14.8,-3.1 29.2,6.7 32.3,21 12.8,62.5 58.9,113.7 119.8,132.6 14.3,4.6 22.5,20 17.9,34.3 -4.1,11.8 -14.8,19.5 -26.1,19.5z"
android:fillColor="#1296db"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M514.6,204.8C481.8,245.8 450,287.7 419.8,330.2c-24.6,34.8 -46.6,68.6 -65,100.9 -44.5,76.3 -69.1,139.3 -69.1,181.8 0,143.4 113.2,259.1 252.4,259.1 139.3,0 252.4,-115.7 252.4,-259.1 0,-42.5 -24.6,-105.5 -69.1,-181.8 -18.9,-32.3 -41,-66 -65,-100.9C624.6,287.7 592.9,245.8 560.1,204.8c-7.7,-9.2 -14.8,-18.4 -22.5,-27.6 -7.2,8.7 -14.8,17.9 -23,27.6zM231.4,612.9c0,-54.8 27.6,-124.9 76.8,-208.9 19.5,-33.3 42.5,-68.6 67.6,-104.4 30.7,-44 63,-86.5 96.8,-128.5 13.3,-16.4 27.1,-33.3 41,-49.2l3.1,-3.6 20,-23 20,23 3.1,3.6c2.6,3.1 5.6,6.7 9.2,10.8 9.7,11.3 20.5,24.6 31.7,38.9 33.8,41.5 66,84.5 96.8,128.5 25.1,35.8 48.1,71.2 67.6,104.4 49.2,84 76.8,154.1 76.8,208.9 0,172.5 -136.7,312.8 -305.7,312.8 -167.9,-0.5 -304.6,-140.8 -304.6,-313.3z"
android:fillColor="#bfbfbf"/>
<path
android:pathData="M537.1,832.5c-117.8,0 -213,-95.7 -213.5,-214 0,-134.1 114.7,-157.7 217.6,-68.1 102.9,58.4 208.9,-50.2 208.9,68.1 0.5,118.3 -94.7,214 -213,214z"
android:fillColor="#bfbfbf"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M514.6,204.8C481.8,245.8 450,287.7 419.8,330.2c-24.6,34.8 -46.6,68.6 -65,100.9 -44.5,76.3 -69.1,139.3 -69.1,181.8 0,143.4 113.2,259.1 252.4,259.1 139.3,0 252.4,-115.7 252.4,-259.1 0,-42.5 -24.6,-105.5 -69.1,-181.8 -18.9,-32.3 -41,-66 -65,-100.9C624.6,287.7 592.9,245.8 560.1,204.8c-7.7,-9.2 -14.8,-18.4 -22.5,-27.6 -7.2,8.7 -14.8,17.9 -23,27.6zM231.4,612.9c0,-54.8 27.6,-124.9 76.8,-208.9 19.5,-33.3 42.5,-68.6 67.6,-104.4 30.7,-44 63,-86.5 96.8,-128.5 13.3,-16.4 27.1,-33.3 41,-49.2l3.1,-3.6 20,-23 20,23 3.1,3.6c2.6,3.1 5.6,6.7 9.2,10.8 9.7,11.3 20.5,24.6 31.7,38.9 33.8,41.5 66,84.5 96.8,128.5 25.1,35.8 48.1,71.2 67.6,104.4 49.2,84 76.8,154.1 76.8,208.9 0,172.5 -136.7,312.8 -305.7,312.8 -167.9,-0.5 -304.6,-140.8 -304.6,-313.3z"
android:fillColor="#1296db"/>
<path
android:pathData="M537.1,832.5c-117.8,0 -213,-95.7 -213.5,-214 0,-134.1 114.7,-157.7 217.6,-68.1 102.9,58.4 208.9,-50.2 208.9,68.1 0.5,118.3 -94.7,214 -213,214z"
android:fillColor="#1296db"/>
</vector>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#FFBEBEBE"> <!-- 涟漪的颜色 -->
<item>
<shape>
<solid android:color="#FFFFFF"/> <!-- 背景颜色 -->
<corners android:radius="8dp"/> <!-- 圆角的半径 -->
</shape>
</item>
</ripple>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#3C3A3A"/> <!-- 背景颜色 -->
<corners android:radius="8dp"/> <!-- 圆角的半径 -->
</shape>

View File

@ -9,6 +9,15 @@
android:background="#F0F0F0" android:background="#F0F0F0"
tools:context=".ClientActivity"> tools:context=".ClientActivity">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolBar_client"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/toolbar_color"
app:navigationIcon="@drawable/iv_back"
app:title="机器人控制"
app:titleMarginStart="80dp"
app:titleTextColor="@color/white"/>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="150dp" android:layout_height="150dp"
@ -34,7 +43,7 @@
android:textColor="#1E1E1E" android:textColor="#1E1E1E"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView5" /> app:layout_constraintTop_toBottomOf="@+id/start_robot_iv" />
<TextView <TextView
android:id="@+id/textView12" android:id="@+id/textView12"
@ -48,6 +57,7 @@
<ImageView <ImageView
android:id="@+id/start_robot_iv" android:id="@+id/start_robot_iv"
android:background="@drawable/robot_start"
android:layout_width="67dp" android:layout_width="67dp"
android:layout_height="63dp" android:layout_height="63dp"
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
@ -112,7 +122,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/rounded_corner_bg" android:background="@drawable/rounded_corner_bg"
android:layout_marginRight="10dp" android:layout_marginEnd="10dp"
> >
<TextView <TextView
@ -121,7 +131,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="返回充电" android:text="@string/back_charging"
android:textColor="#1E1E1E" android:textColor="#1E1E1E"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -132,7 +142,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:text="上次充电: 一周前" android:text="@string/last_charging"
app:layout_constraintStart_toStartOf="@+id/tv_charge" app:layout_constraintStart_toStartOf="@+id/tv_charge"
app:layout_constraintTop_toBottomOf="@+id/tv_charge" /> app:layout_constraintTop_toBottomOf="@+id/tv_charge" />
@ -155,14 +165,14 @@
> >
<ImageView <ImageView
android:id="@+id/iv_lawn_patrol" android:id="@+id/iv_stop_robot"
android:layout_width="80dp" android:layout_width="80dp"
android:layout_height="63dp" android:layout_height="63dp"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginTop="7dp" android:layout_marginTop="7dp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/robot_patrol" /> app:srcCompat="@drawable/iv_finish" />
<TextView <TextView
android:id="@+id/tv_lawn_patrol" android:id="@+id/tv_lawn_patrol"
@ -170,48 +180,139 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="草坪巡逻" android:text="@string/finish"
android:textColor="#1E1E1E" android:textColor="#1E1E1E"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_lawn_patrol" /> app:layout_constraintTop_toBottomOf="@+id/iv_stop_robot" />
<TextView <TextView
android:id="@+id/tv_lawn_patrol_date" android:id="@+id/tv_lawn_patrol_date"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:text="上次巡逻: 1天前" android:text="@string/turn_off"
app:layout_constraintStart_toStartOf="@+id/tv_lawn_patrol" app:layout_constraintStart_toStartOf="@+id/tv_lawn_patrol"
app:layout_constraintTop_toBottomOf="@+id/tv_lawn_patrol" /> app:layout_constraintTop_toBottomOf="@+id/tv_lawn_patrol" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/btn_base_init"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="10dp"
android:layout_weight="1"
android:background="@drawable/ripple_effect"
android:clickable="true"> <!-- 点击效果 -->
<TextView
android:id="@+id/tv_base_init"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="10dp"
android:text="基站初始化"
android:textColor="#1E1E1E"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_base_init" />
<TextView
android:id="@+id/base_init_state_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="基站状态:未初始化"
app:layout_constraintStart_toStartOf="@+id/tv_base_init"
app:layout_constraintTop_toBottomOf="@+id/tv_base_init" />
<ImageView
android:id="@+id/iv_base_init"
android:layout_width="67dp"
android:layout_height="63dp"
android:layout_marginStart="12dp"
android:layout_marginTop="7dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/base_station_init" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/btn_range_setting"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/ripple_effect">
<ImageView
android:id="@+id/iv_geofencing_range"
android:layout_width="80dp"
android:layout_height="63dp"
android:layout_marginStart="10dp"
android:layout_marginTop="7dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/geofencing_range" />
<TextView
android:id="@+id/tv_ranging_setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="10dp"
android:text="@string/boundary_setting"
android:textColor="#1E1E1E"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/iv_geofencing_range" />
<TextView
android:id="@+id/tv_geofencing_range_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="@string/weilan"
app:layout_constraintStart_toStartOf="@+id/tv_ranging_setting"
app:layout_constraintTop_toBottomOf="@+id/tv_ranging_setting" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout> </LinearLayout>
<EditText <EditText
android:id="@+id/ipET" android:id="@+id/ipET"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="ip" android:hint="@string/ip"
/> />
<Button <Button
android:id="@+id/btn_confirm" android:id="@+id/btn_confirm"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="连接" android:text="@string/connect_server"
android:gravity="center" /> android:gravity="center" />
<EditText <EditText
android:id="@+id/msgET" android:id="@+id/msgET"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="msg"/> android:hint="@string/msg"/>
<Button <Button
android:id="@+id/btn_send" android:id="@+id/btn_send"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="send" android:text="@string/send_msg"
android:gravity="center" android:gravity="center"
android:backgroundTint="#1E88E5"/> android:backgroundTint="#1E88E5"/>
<TextView <TextView

View File

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#000000"
android:padding="16dp">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolBar_edit"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/black"
app:navigationIcon="@drawable/iv_back"
app:subtitleTextColor="@color/white"
app:title="设置"
app:titleMarginStart="120dp"
app:titleTextColor="@color/white"/>
<!-- 功能设置模块 -->
<TextView
android:layout_width="match_parent"
android:layout_height="68dp"
android:textColor="@color/text_color"
android:text="功能设置"
android:textSize="15sp"
android:paddingLeft="10dp"
android:paddingTop="32dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:padding="10dp"
android:textSize="20sp"
android:text="地图保存模式(实验功能)"
android:textColor="#FFFFFF"
app:drawableEndCompat="@drawable/baseline_arrow_forward_ios_24" />
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="定时割草"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:padding="10dp"
app:drawableEndCompat="@drawable/baseline_arrow_forward_ios_24"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="设备设置"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:padding="10dp"
app:drawableEndCompat="@drawable/baseline_arrow_forward_ios_24"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="割草记录"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:padding="10dp"
app:drawableEndCompat="@drawable/baseline_arrow_forward_ios_24"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="耗材计时"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:padding="10dp"
app:drawableEndCompat="@drawable/baseline_arrow_forward_ios_24"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="遥控器"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:padding="10dp"
app:drawableEndCompat="@drawable/baseline_arrow_forward_ios_24"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="寻找割草机"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:padding="10dp"
app:drawableEndCompat="@drawable/baseline_arrow_forward_ios_24"/>
<!-- 地图管理模块 -->
<TextView
android:layout_width="match_parent"
android:layout_height="68dp"
android:paddingLeft="10dp"
android:paddingTop="30dp"
android:text="地图管理"
android:textColor="@color/text_color"
android:textSize="15sp"
tools:ignore="SmallSp" />
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="区域编辑"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:padding="10dp"
app:drawableEndCompat="@drawable/baseline_arrow_forward_ios_24"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="虚拟墙/禁区"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:padding="10dp"
app:drawableEndCompat="@drawable/baseline_arrow_forward_ios_24"/>
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="重置地图"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:padding="10dp"
app:drawableEndCompat="@drawable/baseline_arrow_forward_ios_24"/>
</LinearLayout>

View File

@ -7,7 +7,49 @@
android:background="#F0F0F0" android:background="#F0F0F0"
android:orientation="vertical" android:orientation="vertical"
tools:context=".MainActivity"> tools:context=".MainActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:background="@color/toolbar_color"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize">
<ImageView
android:id="@+id/iv_three_main"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="28dp"
android:layout_marginTop="16dp"
android:background="@drawable/iv_three"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="@color/text_color"
android:text="深安割草机器人"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<TextView
android:id="@+id/tv_setting_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="设置"
android:textColor="@color/text_color"
android:textSize="20sp"
app:layout_constraintBaseline_toBaselineOf="@id/tv_title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<com.amap.api.maps.MapView <com.amap.api.maps.MapView
android:id="@+id/map_view" android:id="@+id/map_view"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -22,8 +64,8 @@
android:layout_marginEnd="10dp" android:layout_marginEnd="10dp"
android:background="@drawable/rounded_corner_bg"> android:background="@drawable/rounded_corner_bg">
<ImageView <ImageButton
android:id="@+id/imageView" android:id="@+id/robot_start"
android:layout_width="180dp" android:layout_width="180dp"
android:layout_height="160dp" android:layout_height="160dp"
android:layout_alignParentTop="true" android:layout_alignParentTop="true"
@ -32,7 +74,7 @@
android:layout_marginTop="0dp" android:layout_marginTop="0dp"
android:layout_marginEnd="10dp" android:layout_marginEnd="10dp"
android:layout_marginBottom="0dp" android:layout_marginBottom="0dp"
app:srcCompat="@drawable/robot_medium" /> android:background="@drawable/robot_medium" />
<TextView <TextView
android:id="@+id/textView" android:id="@+id/textView"
@ -228,7 +270,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginTop="5dp"
android:text="最后作业" android:text="@string/robot_function"
android:textColor="#1E1E1E" android:textColor="#1E1E1E"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintStart_toStartOf="@+id/imageView9" app:layout_constraintStart_toStartOf="@+id/imageView9"

View File

@ -0,0 +1,481 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/back"
tools:context=".MainActivity">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolBar_robot"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/black"
app:navigationIcon="@drawable/iv_back"
app:subtitle="充电完成"
app:subtitleTextColor="@color/white"
app:title="小白"
app:titleMarginStart="120dp"
app:titleTextColor="@color/white"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:background="@drawable/rounded_corner"
android:gravity="center_vertical">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="已割草"
android:textColor="@color/text_color"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textColor="@color/text_color"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="min"
android:textColor="@color/text_color" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:text="|"
android:textColor="@color/text_color" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="割草面积"
android:textColor="@color/text_color"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textColor="@color/text_color"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="m²"
android:textColor="@color/text_color" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:text="|"
android:textColor="@color/text_color" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="电量"
android:textColor="@color/text_color"
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="100"
android:textColor="@color/text_color"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="%"
android:textColor="@color/text_color" />
</LinearLayout>
</LinearLayout>
<ImageView
android:src="@drawable/iv_more"
android:layout_marginTop="10dp"
android:background="@drawable/circle"
android:layout_marginStart="360dp"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginEnd="10dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="100dp">
<LinearLayout
android:layout_marginTop="20dp"
android:layout_width="0dp"
android:layout_height="79dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_weight="1"
android:background="@drawable/rounded_corner"
android:gravity="center_vertical">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="10dp"
android:background="@drawable/iv_charge" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:text="回充"
android:textColor="@color/text_white"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_marginTop="20dp"
android:layout_width="0dp"
android:layout_height="79dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_weight="1"
android:background="@drawable/rounded_corner"
android:gravity="center_vertical">
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="10dp"
android:background="@drawable/iv_switch" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:text="开始割草"
android:textColor="@color/text_white"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:background="@drawable/rounded_corner"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
android:text="割草模式"
android:textColor="@color/text_white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginTop="15dp"
android:text="|"
android:textColor="@color/text_color" />
<TextView
android:id="@+id/tv_show_power"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginTop="15dp"
android:text="待选择"
android:textColor="@color/text_color" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageButton
android:id="@+id/btn_quiet"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/iv_quiet" />
<TextView
android:id="@+id/tv_quiet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="安静"
android:textSize="20sp"
android:textColor="@color/text_color" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageButton
android:id="@+id/btn_standard"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/iv_biaozhun" />
<TextView
android:id="@+id/tv_standard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="标准"
android:textSize="20sp"
android:textColor="@color/text_color" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageButton
android:id="@+id/btn_strong"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/iv_strong" />
<TextView
android:id="@+id/tv_strong"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="强力"
android:textSize="20sp"
android:textColor="@color/text_color" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageButton
android:id="@+id/btn_super"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/iv_super" />
<TextView
android:id="@+id/tv_super"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="超强"
android:textSize="20sp"
android:textColor="@color/text_color" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="0dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="5dp"
android:background="@drawable/rounded_corner"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
android:text="割草高度设置"
android:textColor="@color/text_white" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginTop="15dp"
android:text="|"
android:textColor="@color/text_color" />
<TextView
android:id="@+id/tv_show_water"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginTop="15dp"
android:text="待选择"
android:textColor="@color/text_color" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageButton
android:id="@+id/btn_water_less"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/iv_short" />
<TextView
android:id="@+id/tv_water_less"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="低"
android:textSize="20sp"
android:textColor="@color/text_color" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageButton
android:id="@+id/btn_water_medium"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/iv_medium" />
<TextView
android:id="@+id/tv_water_medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="中"
android:textSize="20sp"
android:textColor="@color/text_color" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageButton
android:id="@+id/btn_water_high"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/iv_high" />
<TextView
android:id="@+id/tv_water_high"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="高"
android:textSize="20sp"
android:textColor="@color/text_color" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@ -1,8 +1,20 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android" <?xml version="1.0" encoding="utf-8"?>
xmlns:app="http://schemas.android.com/apk/res-auto"> <menu xmlns:android="http://schemas.android.com/apk/res/android">
<item <item
android:id="@+id/action_more" android:id="@+id/setting"
android:title="@string/more" android:icon="@drawable/baseline_search_24"
app:showAsAction="always" android:title="@string/setting">
android:icon="@drawable/baseline_more_24" /> </item>
<item
android:id="@+id/msg"
android:icon="@drawable/baseline_message_24"
android:title="@string/message">
</item>
<item
android:id="@+id/about"
android:icon="@drawable/baseline_search_24"
android:title="@string/about">
</item>
</menu> </menu>

View File

@ -7,4 +7,9 @@
<color name="teal_700">#FF018786</color> <color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color> <color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color> <color name="white">#FFFFFFFF</color>
<color name="red">#FF0000</color>
<color name="text_color">#AAA6A6</color>
<color name="text_white">#DCD5D5</color>
<color name="text_blue">#1296db</color>
<color name="toolbar_color">#0E5E9E</color>
</resources> </resources>

View File

@ -7,4 +7,21 @@
<string name="shen_an_team_en">\@ShenAn Technology Co.,Ltd</string> <string name="shen_an_team_en">\@ShenAn Technology Co.,Ltd</string>
<string name="more">more\n</string> <string name="more">more\n</string>
<string name="boundary_setting">割草边界设定</string>
<string name="weilan">地理围栏:未设置</string>
<string name="back_charging">返回充电</string>
<string name="last_charging">上次充电: 一周前</string>
<string name="grass_garden">草坪巡逻</string>
<string name="last_garden">上次巡逻: 1天前</string>
<string name="connect_server">连接服务器</string>
<string name="ip">ip</string>
<string name="msg">msg</string>
<string name="send_msg">调试信息发送</string>
<string name="robot_function">机器人功能</string>
<string name="finish">结束程序</string>
<string name="turn_off">点击关闭割草机</string>
<string name="search">搜索</string>
<string name="message">消息</string>
<string name="about">关于</string>
<string name="setting">设置</string>
</resources> </resources>

View File

@ -1,6 +1,6 @@
<resources xmlns:tools="http://schemas.android.com/tools"> <resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. --> <!-- Base application theme. -->
<style name="Theme.UPBot" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <style name="Theme.UPBot" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. --> <!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item> <item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item> <item name="colorPrimaryVariant">@color/purple_700</item>