协议可配置

serial
Matthew 2 years ago
parent 330f598120
commit fc9232b0a6

@ -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'

@ -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"
}

@ -33,7 +33,6 @@
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-feature android:name="android.hardware.camera" />
<application

@ -90,7 +90,7 @@ Java_com_xinyingpower_microphoto_MainActivity_takePhoto(
extern "C" JNIEXPORT jlong JNICALL
Java_com_xinyingpower_microphoto_MicroPhotoService_init(
JNIEnv* env,
jobject pThis, jstring appPath, jstring ip, jint port, jstring cmdid, jint protocol) {
jobject pThis, jstring appPath, jstring ip, jint port, jstring cmdid, jint protocol, jint networkProtocol) {
/*
google_breakpad::MinidumpDescriptor descriptor(".");
@ -99,6 +99,7 @@ Java_com_xinyingpower_microphoto_MicroPhotoService_init(
*/
bool udpOrTcp = (networkProtocol != 0); // 0: tcp
const char *appPathStr = env->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);

@ -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,

@ -71,6 +71,7 @@ public:
RangeValue<int64_t> exposureRange;
// int32_t sensitivity_;
RangeValue<int32_t> sensitivityRange;
RangeValue<int32_t> aeCompensationRange;

@ -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());

@ -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);

@ -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" />
<Spinner
android:id="@+id/networkProtocol"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
style="@style/Widget.AppCompat.Spinner.Underlined"
android:entries="@array/networkProtocols"
app:layout_constraintLeft_toRightOf="@+id/port"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@+id/port" />
<Button
android:id="@+id/startServBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="24dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:text="Start"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/port"
@ -88,29 +101,41 @@
android:id="@+id/stopServBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="24dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:enabled="false"
android:text="Stop"
app:layout_constraintStart_toEndOf="@+id/startServBtn"
app:layout_constraintTop_toBottomOf="@+id/port" />
<Button
android:id="@+id/saveCfg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="0dp"
android:text="Save"
app:layout_constraintStart_toEndOf="@+id/stopServBtn"
app:layout_constraintTop_toTopOf="@+id/startServBtn" />
<Button
android:id="@+id/simchange"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="24dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="sim卡获取"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/startServBtn" />
<Button
android:id="@+id/simchange2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="24dp"
android:layout_marginTop="8dp"
android:text="切换sim2"
app:layout_constraintStart_toEndOf="@+id/simchange"
app:layout_constraintTop_toBottomOf="@+id/startServBtn" />
@ -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" />

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="networkProtocols">
<item>TCP</item>
<item>UDP</item>
</string-array>
</resources>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="protocols">
<item>65281-安徽</item>
<item>65283-湖南</item>
<item>65285-河南</item>
<item>65286-郑州</item>
</string-array>
</resources>
Loading…
Cancel
Save