增加配置设置

serial
BlueMatthew 2 years ago
parent 283679ec49
commit db1f5f6fc4

@ -77,7 +77,8 @@
<activity
android:name=".ChannelActivity"
android:exported="false" />
android:exported="false"
android:label="@string/activity_channel_title" />
<service
android:name=".MicroPhotoService"

@ -5,6 +5,8 @@ import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
@ -77,6 +79,16 @@ public class ChannelActivity extends AppCompatActivity {
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
MenuInflater mMenuInflater = new MenuInflater(this);
mMenuInflater.inflate(R.menu.menu_channel, menu);
//return true;
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
@ -86,6 +98,11 @@ public class ChannelActivity extends AppCompatActivity {
finish();
return true;
case R.id.action_save:
// todo: goto back activity from here
int channel = binding.channels.getSelectedItemPosition() + 1;
saveChannelParams(channel);
return true;
default:
return super.onOptionsItemSelected(item);
}
@ -131,6 +148,22 @@ public class ChannelActivity extends AppCompatActivity {
binding.cameraId.setText("");
}
if (jsonObject.has("resolutionCX")) {
binding.resolutionCX.setText(Integer.toString(jsonObject.optInt("resolutionCX")));
} else {
binding.resolutionCX.setText("");
}
if (jsonObject.has("resolutionCY")) {
binding.resolutionCY.setText(Integer.toString(jsonObject.optInt("resolutionCY")));
} else {
binding.resolutionCY.setText("");
}
if (jsonObject.has("quality")) {
binding.quality.setText(Integer.toString(jsonObject.optInt("quality")));
} else {
binding.quality.setText("");
}
JSONObject osdJsonObj = jsonObject.optJSONObject("osd");
if (osdJsonObj != null) {
binding.osdLeftTop.setText(osdJsonObj.optString("leftTop", ""));
@ -228,6 +261,21 @@ public class ChannelActivity extends AppCompatActivity {
} else {
jsonObject.remove("cameraId");
}
if (!TextUtils.isEmpty(binding.resolutionCX.getText().toString())) {
jsonObject.put("resolutionCX", Integer.parseInt(binding.resolutionCX.getText().toString()));
} else {
jsonObject.remove("resolutionCX");
}
if (!TextUtils.isEmpty(binding.resolutionCY.getText().toString())) {
jsonObject.put("resolutionCY", Integer.parseInt(binding.resolutionCY.getText().toString()));
} else {
jsonObject.remove("resolutionCY");
}
if (!TextUtils.isEmpty(binding.quality.getText().toString())) {
jsonObject.put("quality", Integer.parseInt(binding.quality.getText().toString()));
} else {
jsonObject.remove("quality");
}
JSONObject osdJsonObj = jsonObject.optJSONObject("osd");
if (osdJsonObj == null) {

@ -122,6 +122,8 @@ public class MainActivity extends AppCompatActivity {
public int port;
public int protocol;
public int networkProtocol;
public int heartbeat;
public int packetSize;
}
@Override
@ -544,7 +546,10 @@ public class MainActivity extends AppCompatActivity {
}
appConfig.networkProtocol = MainActivity.this.binding.networkProtocol.getSelectedItemPosition();
saveAppConfig(appConfig.cmdid, appConfig.server, appConfig.port, appConfig.protocol, appConfig.networkProtocol);
appConfig.heartbeat = TextUtils.isEmpty(binding.heartbeat.getText().toString()) ? 0 : Integer.parseInt(binding.heartbeat.getText().toString());
appConfig.packetSize = TextUtils.isEmpty(binding.packetSize.getText().toString()) ? 0 : Integer.parseInt(binding.packetSize.getText().toString());
saveAppConfig(appConfig);
return appConfig;
}
@ -604,7 +609,7 @@ public class MainActivity extends AppCompatActivity {
return appConfig;
}
private void saveAppConfig(String cmdid, String server, int port, int protocol, int networkProtocol) {
private void saveAppConfig(AppConfig appConfig) {
String appPath = MicroPhotoContext.buildAppDir(this.getApplicationContext());
InputStreamReader inputStreamReader = null;
@ -631,11 +636,22 @@ public class MainActivity extends AppCompatActivity {
JSONObject jsonObject =stringBuilder.length() > 0 ? (new JSONObject(stringBuilder.toString())) : (new JSONObject());
jsonObject.put("CMDID", cmdid);
jsonObject.put("Server", server);
jsonObject.put("Port", port);
jsonObject.put("Protocol", protocol);
jsonObject.put("NetworkProtocol", networkProtocol);
jsonObject.put("CMDID", appConfig.cmdid);
jsonObject.put("Server", appConfig.server);
jsonObject.put("Port", appConfig.port);
jsonObject.put("Protocol", appConfig.protocol);
jsonObject.put("NetworkProtocol", appConfig.networkProtocol);
if (appConfig.heartbeat > 0) {
jsonObject.put("heartbeat", appConfig.heartbeat);
} else {
jsonObject.remove("heartbeat");
}
if (appConfig.packetSize > 0) {
jsonObject.put("packetSize", appConfig.packetSize);
} else {
jsonObject.remove("packetSize");
}
outputStreamWriter = new OutputStreamWriter(new FileOutputStream(new File(appPath + "data/App.json")), "UTF-8");
outputStreamWriter.write(jsonObject.toString());

@ -62,7 +62,7 @@
android:maxLines="1"
android:inputType="text"
android:imeOptions="actionDone"
android:text="47.96.238.157"
android:hint="main_server"
app:layout_constraintStart_toStartOf="@+id/cmdid"
app:layout_constraintTop_toBottomOf="@+id/cmdid" />
@ -89,6 +89,56 @@
app:layout_constraintLeft_toRightOf="@+id/port"
app:layout_constraintTop_toTopOf="@+id/port" />
<TextView
android:id="@+id/textViewHeartbeat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/main_heartbeat"
app:layout_constraintBottom_toBottomOf="@+id/heartbeat"
app:layout_constraintStart_toStartOf="@id/textViewCmdId"
app:layout_constraintTop_toTopOf="@+id/heartbeat" />
<EditText
android:id="@+id/heartbeat"
android:layout_width="32dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:ems="10"
android:inputType="none|number"
android:imeOptions="actionDone"
android:maxLines="1"
android:text="10"
android:hint="main_heartbeat"
app:layout_constraintStart_toEndOf="@+id/textViewHeartbeat"
app:layout_constraintTop_toBottomOf="@+id/server" />
<TextView
android:id="@+id/textViewPacketSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="@string/main_packet_size"
app:layout_constraintBottom_toBottomOf="@+id/packetSize"
app:layout_constraintStart_toEndOf="@+id/heartbeat"
app:layout_constraintTop_toTopOf="@+id/packetSize" />
<EditText
android:id="@+id/packetSize"
android:layout_width="64dp"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:ems="10"
android:inputType="none|number"
android:imeOptions="actionDone"
android:maxLines="1"
android:text="2048"
app:layout_constraintLeft_toRightOf="@+id/textViewPacketSize"
app:layout_constraintTop_toBottomOf="@+id/server" />
<Button
android:id="@+id/startServBtn"
android:layout_width="wrap_content"
@ -97,7 +147,7 @@
android:layout_marginTop="8dp"
android:text="Start"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/port"
app:layout_constraintTop_toBottomOf="@+id/heartbeat"
/>
@ -110,7 +160,7 @@
android:enabled="false"
android:text="Stop"
app:layout_constraintStart_toEndOf="@+id/startServBtn"
app:layout_constraintTop_toBottomOf="@+id/port" />
app:layout_constraintTop_toBottomOf="@+id/heartbeat" />
<Button
android:id="@+id/saveCfg"

@ -40,6 +40,41 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/resolutionCX"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/channel_cfg_width"
android:inputType="numberDecimal"
android:layout_marginStart="6dp"
android:layout_marginTop="12dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnSave" />
<EditText
android:id="@+id/resolutionCY"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/channel_cfg_height"
android:inputType="numberDecimal"
android:layout_marginStart="6dp"
android:layout_marginTop="12dp"
app:layout_constraintStart_toEndOf="@+id/resolutionCX"
app:layout_constraintTop_toBottomOf="@+id/btnSave" />
<EditText
android:id="@+id/quality"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/channel_cfg_quality"
android:inputType="numberDecimal"
android:layout_marginStart="12dp"
android:layout_marginTop="12dp"
app:layout_constraintStart_toEndOf="@+id/resolutionCY"
app:layout_constraintTop_toBottomOf="@+id/btnSave" />
<Switch
android:id="@+id/btnAutoExplosure"
@ -49,7 +84,7 @@
android:layout_marginTop="6dp"
android:text="@string/channel_cfg_auto_exposure"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnSave" />
app:layout_constraintTop_toBottomOf="@+id/resolutionCX" />
<Switch
android:id="@+id/btnAutoFocus"
@ -59,7 +94,7 @@
android:layout_marginTop="6dp"
android:text="@string/channel_cfg_auto_focus"
app:layout_constraintStart_toEndOf="@+id/btnAutoExplosure"
app:layout_constraintTop_toBottomOf="@+id/btnSave" />
app:layout_constraintTop_toBottomOf="@+id/resolutionCX" />
<Switch
android:id="@+id/btnHdrMode"
@ -69,7 +104,7 @@
android:layout_marginTop="6dp"
android:text="HDR"
app:layout_constraintStart_toEndOf="@+id/btnAutoFocus"
app:layout_constraintTop_toBottomOf="@+id/btnSave" />
app:layout_constraintTop_toBottomOf="@+id/resolutionCX" />
<TextView
android:id="@+id/textViewExplosure"

@ -81,6 +81,56 @@
app:layout_constraintLeft_toRightOf="@+id/port"
app:layout_constraintTop_toTopOf="@+id/port" />
<TextView
android:id="@+id/textViewHeartbeat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/main_heartbeat"
app:layout_constraintBottom_toBottomOf="@+id/heartbeat"
app:layout_constraintStart_toStartOf="@id/textViewCmdId"
app:layout_constraintTop_toTopOf="@+id/heartbeat" />
<EditText
android:id="@+id/heartbeat"
android:layout_width="32dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:ems="10"
android:inputType="none|number"
android:imeOptions="actionDone"
android:maxLines="1"
android:text="10"
android:hint="main_heartbeat"
app:layout_constraintStart_toEndOf="@+id/textViewHeartbeat"
app:layout_constraintTop_toBottomOf="@+id/server" />
<TextView
android:id="@+id/textViewPacketSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="@string/main_packet_size"
app:layout_constraintBottom_toBottomOf="@+id/packetSize"
app:layout_constraintStart_toEndOf="@+id/heartbeat"
app:layout_constraintTop_toTopOf="@+id/packetSize" />
<EditText
android:id="@+id/packetSize"
android:layout_width="64dp"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:ems="10"
android:inputType="none|number"
android:imeOptions="actionDone"
android:maxLines="1"
android:text="2048"
app:layout_constraintLeft_toRightOf="@+id/textViewPacketSize"
app:layout_constraintTop_toBottomOf="@+id/server" />
<Button
android:id="@+id/startServBtn"
android:layout_width="wrap_content"
@ -89,7 +139,7 @@
android:layout_marginTop="8dp"
android:text="Start"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/port"
app:layout_constraintTop_toBottomOf="@+id/heartbeat"
/>
@ -102,7 +152,7 @@
android:enabled="false"
android:text="Stop"
app:layout_constraintStart_toEndOf="@+id/startServBtn"
app:layout_constraintTop_toBottomOf="@+id/port" />
app:layout_constraintTop_toBottomOf="@+id/heartbeat" />
<Button
android:id="@+id/saveCfg"

@ -0,0 +1,10 @@
<menu 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"
tools:context="com.xypower.mpapp.ChannelActivity">
<item
android:id="@+id/action_save"
android:orderInCategory="100"
android:title="@string/btn_save"
app:showAsAction="always|withText" />
</menu>

@ -1,6 +1,11 @@
<resources>
<string name="app_name">MicroPhoto</string>
<string name="text_name_notification">Notification Name</string>
<string name="main_heartbeat">心跳(分钟)</string>
<string name="main_packet_size">包大小</string>
<string name="main_server">支持域名自动转IP</string>
<string name="activity_channel_title">通道设置</string>
<string name="osd_left_top">左上 OSD</string>
<string name="osd_right_top">右上 OSD</string>
<string name="osd_right_bottom">右下 OSD</string>
@ -9,4 +14,10 @@
<string name="btn_save">保存</string>
<string name="channel_cfg_auto_exposure">自动曝光</string>
<string name="channel_cfg_auto_focus">自动对焦</string>
<string name="channel_cfg_width">照片宽</string>
<string name="channel_cfg_height">照片高</string>
<string name="channel_cfg_quality">压缩率(50-100)</string>
</resources>
Loading…
Cancel
Save