diff --git a/app/build.gradle b/app/build.gradle
index 68931b0e..72750593 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,8 +2,8 @@ plugins {
id 'com.android.application'
}
-def AppVersionName = "1.0.11"
-def AppVersionCode = ((1 * 100 + 1) * 100 + 0) * 10 + 11
+def AppVersionName = "1.0.12"
+def AppVersionCode = ((1 * 100 + 1) * 100 + 0) * 10 + 12
android {
namespace 'com.xinyingpower.microphoto'
@@ -83,6 +83,9 @@ dependencies {
// implementation project(path: ':opencv')
implementation files('libs/devapi.aar')
+ // https://mvnrepository.com/artifact/com.quickbirdstudios/opencv
+ implementation 'com.quickbirdstudios:opencv:4.5.3.0'
+
// implementation group: 'io.netty', name: 'netty-all', version: '4.1.96.Final'
// implementation 'io.netty:netty-all:4.1.23.Final'
// implementation 'org.apache.logging.log4j:log4j-api:2.14.0'
diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json
new file mode 100644
index 00000000..2366273b
--- /dev/null
+++ b/app/release/output-metadata.json
@@ -0,0 +1,20 @@
+{
+ "version": 3,
+ "artifactType": {
+ "type": "APK",
+ "kind": "Directory"
+ },
+ "applicationId": "com.xinyingpower.microphoto",
+ "variantName": "release",
+ "elements": [
+ {
+ "type": "SINGLE",
+ "filters": [],
+ "attributes": [],
+ "versionCode": 101010,
+ "versionName": "1.0.10",
+ "outputFile": "app-release.apk"
+ }
+ ],
+ "elementType": "File"
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index bc51bfd4..c88fe9cc 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -33,7 +33,6 @@
-
GetStringUTFChars(appPath, 0);
const char *ipStr = env->GetStringUTFChars(ip, 0);
const char *cmdidStr = env->GetStringUTFChars(cmdid, 0);
@@ -110,12 +111,12 @@ Java_com_xinyingpower_microphoto_MicroPhotoService_init(
// CTerminalDevice* device = new CTerminalDevice(vm, pThis);
// CPhoneDevice2* device = new CPhoneDevice2(vm, pThis);
- CTerminal* pTerminal = NewTerminal(GetCurrentProtocol());
+ CTerminal* pTerminal = NewTerminal(protocol);
CPhoneDevice* device = new CPhoneDevice(vm, pThis);
device->SetListener(pTerminal);
- pTerminal->InitServerInfo(appPathStr, cmdidStr, ipStr, port);
+ pTerminal->InitServerInfo(appPathStr, cmdidStr, ipStr, port, udpOrTcp);
pTerminal->SetPacketSize(1 * 1024); // 1K
bool res = pTerminal->Startup(device);
diff --git a/app/src/main/cpp/camera2/ndkcamera.cpp b/app/src/main/cpp/camera2/ndkcamera.cpp
index 16071117..ee8203e2 100644
--- a/app/src/main/cpp/camera2/ndkcamera.cpp
+++ b/app/src/main/cpp/camera2/ndkcamera.cpp
@@ -227,6 +227,21 @@ int NdkCamera::open(const char* cameraId) {
}
}
+ {
+ ACameraMetadata_const_entry val = {0};
+ camera_status_t status = ACameraMetadata_getConstEntry(camera_metadata,
+ ACAMERA_CONTROL_AE_COMPENSATION_RANGE,
+ &val);
+ if (status == ACAMERA_OK) {
+ aeCompensationRange.min_ = val.data.i32[0];
+ aeCompensationRange.max_ = val.data.i32[1];
+
+ } else {
+ ALOGW("Unsupported ACAMERA_CONTROL_AE_COMPENSATION_RANGE");
+ aeCompensationRange.min_ = aeCompensationRange.max_ = 0l;
+ }
+ }
+
{
ACameraMetadata_const_entry val = {0};
camera_status_t status = ACameraMetadata_getConstEntry(camera_metadata,
diff --git a/app/src/main/cpp/camera2/ndkcamera.h b/app/src/main/cpp/camera2/ndkcamera.h
index c74454bf..5965bb90 100644
--- a/app/src/main/cpp/camera2/ndkcamera.h
+++ b/app/src/main/cpp/camera2/ndkcamera.h
@@ -71,6 +71,7 @@ public:
RangeValue exposureRange;
// int32_t sensitivity_;
RangeValue sensitivityRange;
+ RangeValue aeCompensationRange;
diff --git a/app/src/main/java/com/xinyingpower/microphoto/MainActivity.java b/app/src/main/java/com/xinyingpower/microphoto/MainActivity.java
index 921ea955..178c5f0b 100644
--- a/app/src/main/java/com/xinyingpower/microphoto/MainActivity.java
+++ b/app/src/main/java/com/xinyingpower/microphoto/MainActivity.java
@@ -58,6 +58,8 @@ public class MainActivity extends AppCompatActivity {
public static final String TAG = "MainActivity";
private static int MY_PERMISSIONS_REQUEST_FOREGROUND_SERVICE = 100;
+ public final static int DEFAULT_PROTOCOL = 0xFF00;
+
// Used to load the 'microphoto' library on application startup.
static {
System.loadLibrary("microphoto");
@@ -76,6 +78,7 @@ public class MainActivity extends AppCompatActivity {
public String server;
public int port;
public int protocol;
+ public int networkProtocol;
}
@Override
@@ -96,12 +99,21 @@ public class MainActivity extends AppCompatActivity {
String cmdid = "0123456789ABCDEFG";
String server = "47.96.238.157";
Integer port = new Integer(6891);
- Integer protocol = new Integer(0xFF00); // 0xFF00
+ Integer protocol = new Integer(DEFAULT_PROTOCOL); // 0xFF00
AppConfig appConfig = getAppConfig();
binding.cmdid.setText(appConfig.cmdid);
binding.server.setText(appConfig.server);
binding.port.setText(appConfig.port != 0 ? Integer.toString(appConfig.port) : "");
+ String protocolStr = appConfig.protocol + "-";
+ for (int idx = 0; idx < binding.protocol.getCount(); idx++) {
+ String item = binding.protocol.getItemAtPosition(idx).toString();
+ if (item.startsWith(protocolStr)) {
+ binding.protocol.setSelection(idx);
+ break;
+ }
+ }
+
this.binding.startServBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -125,21 +137,16 @@ public class MainActivity extends AppCompatActivity {
int channel = 2;
String path = buildPhotoDir(channel);
String fileName = buildPhotoFileName(channel, 255);
- // MainActivity.this.takePhoto(channel, 255, path, fileName);
-
- String cmdid = MainActivity.this.binding.cmdid.getText().toString();
- String server = MainActivity.this.binding.server.getText().toString();
- int port = Integer.parseInt(MainActivity.this.binding.port.getText().toString());
- int protocol = 0xFF00;
- MainActivity.this.saveAppConfig(cmdid, server, port, protocol);
+ AppConfig curAppConfig = retrieveAndSaveAppConfig();
Intent intent = new Intent(MainActivity.this, MicroPhotoService.class);
intent.setAction(MicroPhotoService.ACTION_START);
- intent.putExtra("cmdid", cmdid);
- intent.putExtra("server", server);
- intent.putExtra("port", port);
- intent.putExtra("protocol", protocol);
+ intent.putExtra("cmdid", curAppConfig.cmdid);
+ intent.putExtra("server", curAppConfig.server);
+ intent.putExtra("port", curAppConfig.port);
+ intent.putExtra("protocol", curAppConfig.protocol);
+ intent.putExtra("networkProtocol", curAppConfig.networkProtocol);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
MainActivity.this.startForegroundService(intent);
@@ -151,6 +158,15 @@ public class MainActivity extends AppCompatActivity {
binding.stopServBtn.setEnabled(true);
}
});
+
+ this.binding.saveCfg.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+
+ retrieveAndSaveAppConfig();
+ }
+ });
+
this.binding.takePhotoBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -345,6 +361,25 @@ public class MainActivity extends AppCompatActivity {
}
}
+ private AppConfig retrieveAndSaveAppConfig() {
+ AppConfig appConfig = new AppConfig();
+
+ appConfig.cmdid = MainActivity.this.binding.cmdid.getText().toString();
+ appConfig.server = MainActivity.this.binding.server.getText().toString();
+ appConfig.port = Integer.parseInt(MainActivity.this.binding.port.getText().toString());
+ String protocolStr = MainActivity.this.binding.protocol.getSelectedItem().toString();
+ appConfig.protocol = DEFAULT_PROTOCOL;
+ String[] parts = protocolStr.split("-");
+ if (parts != null) {
+ appConfig.protocol = Integer.parseInt(parts[0]);
+ }
+ appConfig.networkProtocol = MainActivity.this.binding.networkProtocol.getSelectedItemPosition();
+
+ saveAppConfig(appConfig.cmdid, appConfig.server, appConfig.port, appConfig.protocol, appConfig.networkProtocol);
+
+ return appConfig;
+ }
+
private AppConfig getAppConfig() {
AppConfig appConfig = new AppConfig();
@@ -367,6 +402,11 @@ public class MainActivity extends AppCompatActivity {
appConfig.server = jsonObject.getString("Server");
appConfig.port = jsonObject.getInt("Port");
appConfig.protocol = jsonObject.getInt("Protocol");
+ appConfig.networkProtocol = jsonObject.getInt("NetworkProtocol");
+
+ if (appConfig.protocol == 0) {
+ appConfig.protocol = DEFAULT_PROTOCOL;
+ }
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
@@ -386,7 +426,7 @@ public class MainActivity extends AppCompatActivity {
return appConfig;
}
- private void saveAppConfig(String cmdid, String server, int port, int protocol) {
+ private void saveAppConfig(String cmdid, String server, int port, int protocol, int networkProtocol) {
String appPath = MicroPhotoService.buildAppDir(this.getApplicationContext());
@@ -398,6 +438,7 @@ public class MainActivity extends AppCompatActivity {
jsonObject.put("Server", server);
jsonObject.put("Port", port);
jsonObject.put("Protocol", protocol);
+ jsonObject.put("NetworkProtocol", networkProtocol);
outputStreamWriter = new OutputStreamWriter(new FileOutputStream(new File(appPath + "data/App.json")), "UTF-8");
outputStreamWriter.write(jsonObject.toString());
diff --git a/app/src/main/java/com/xinyingpower/microphoto/MicroPhotoService.java b/app/src/main/java/com/xinyingpower/microphoto/MicroPhotoService.java
index 9cda62d5..0c3dc7ba 100644
--- a/app/src/main/java/com/xinyingpower/microphoto/MicroPhotoService.java
+++ b/app/src/main/java/com/xinyingpower/microphoto/MicroPhotoService.java
@@ -444,9 +444,10 @@ public class MicroPhotoService extends Service {
int port = intent.getIntExtra("port", 0);
String cmdid = intent.getStringExtra("cmdid");
int protocol = intent.getIntExtra("protocol", 0);
+ int networkProtocol = intent.getIntExtra("networkProtocol", 0);
- Log.i(TAG, "AppPath=" + appPath + " Server=" + ip + ":" + port + " cmdid=" + cmdid + " protocol" + protocol);
- mHandler = init(appPath, ip, port, cmdid, protocol);
+ Log.i(TAG, "AppPath=" + appPath + " Server=" + ip + ":" + port + " cmdid=" + cmdid + " protocol" + protocol + " Network=" + networkProtocol);
+ mHandler = init(appPath, ip, port, cmdid, protocol, networkProtocol);
// Start the locker receiver
@@ -735,7 +736,7 @@ CellSignalStrengthGsm cellSignalStrengthGsm = cellInfoGsm.getCellSignalStrength(
cellSignalStrengthGsm.getDbm();
*/
- protected native long init(String appPath, String ip, int port, String cmdid, int protocol);
+ protected native long init(String appPath, String ip, int port, String cmdid, int protocol, int networkProtocl);
protected native long getHeartbeatDuration(long handler);
protected native long[] getPhotoTimeData(long handler);
// protected native long[] getNextScheduleItem(long handler);
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index f3378c95..9ef2f95b 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -12,7 +12,7 @@
android:id="@+id/textViewCmdId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginLeft="20dp"
+ android:layout_marginLeft="8dp"
android:text="CMDID"
app:layout_constraintBottom_toBottomOf="@+id/cmdid"
app:layout_constraintStart_toStartOf="parent"
@@ -22,8 +22,8 @@
android:id="@+id/cmdid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginLeft="20dp"
- android:layout_marginTop="20dp"
+ android:layout_marginLeft="8dp"
+ android:layout_marginTop="8dp"
android:ems="10"
android:text="XY-ANDROIDSIM-001"
app:layout_constraintLeft_toRightOf="@+id/textViewCmdId"
@@ -35,7 +35,8 @@
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
-
+ style="@style/Widget.AppCompat.Spinner.Underlined"
+ android:entries="@array/protocols"
app:layout_constraintLeft_toRightOf="@+id/cmdid"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@+id/cmdid" />
@@ -44,7 +45,7 @@
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="20dp"
+ android:layout_marginTop="8dp"
android:text="Server"
app:layout_constraintBottom_toBottomOf="@+id/server"
app:layout_constraintStart_toStartOf="@id/textViewCmdId"
@@ -54,7 +55,7 @@
android:id="@+id/server"
android:layout_width="160dp"
android:layout_height="wrap_content"
- android:layout_marginTop="8dp"
+ android:layout_marginTop="4dp"
android:ems="10"
android:inputType=""
android:text="47.96.238.157"
@@ -72,12 +73,24 @@
app:layout_constraintLeft_toRightOf="@+id/server"
app:layout_constraintTop_toTopOf="@+id/server" />
+
+
+
+
+
+
@@ -119,7 +144,8 @@
android:id="@+id/takePhotoBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
+ android:layout_marginTop="8dp"
+ android:layout_marginStart="8dp"
android:text="TK Photo"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/simchange" />
@@ -128,8 +154,8 @@
android:id="@+id/takePhotoBtn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginStart="16dp"
- android:layout_marginTop="16dp"
+ android:layout_marginStart="4dp"
+ android:layout_marginTop="8dp"
android:text="TP 2"
app:layout_constraintStart_toEndOf="@+id/takePhotoBtn"
app:layout_constraintTop_toBottomOf="@+id/simchange" />
@@ -138,8 +164,8 @@
android:id="@+id/takePhotoBtn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginStart="8dp"
- android:layout_marginTop="16dp"
+ android:layout_marginStart="4dp"
+ android:layout_marginTop="8dp"
android:text="TP 3"
app:layout_constraintStart_toEndOf="@+id/takePhotoBtn2"
app:layout_constraintTop_toBottomOf="@+id/simchange" />
@@ -149,8 +175,8 @@
android:id="@+id/takePhotoBtn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginStart="8dp"
- android:layout_marginTop="16dp"
+ android:layout_marginStart="4dp"
+ android:layout_marginTop="8dp"
android:text="TP 4"
app:layout_constraintStart_toEndOf="@+id/takePhotoBtn3"
app:layout_constraintTop_toBottomOf="@+id/simchange" />
diff --git a/app/src/main/res/values/networkProtocols.xml b/app/src/main/res/values/networkProtocols.xml
new file mode 100644
index 00000000..a42a3645
--- /dev/null
+++ b/app/src/main/res/values/networkProtocols.xml
@@ -0,0 +1,7 @@
+
+
+
+ - TCP
+ - UDP
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/protocols.xml b/app/src/main/res/values/protocols.xml
new file mode 100644
index 00000000..ddec1878
--- /dev/null
+++ b/app/src/main/res/values/protocols.xml
@@ -0,0 +1,9 @@
+
+
+
+ - 65281-安徽
+ - 65283-湖南
+ - 65285-河南
+ - 65286-郑州
+
+
\ No newline at end of file