diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ed03619d..38cf727b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -61,6 +61,7 @@ tools:ignore="ProtectedPermissions" /> + 0) ? Integer.toString(appConfig.heartbeat) : ""); + binding.packetSize.setText((appConfig.packetSize > 0) ? Integer.toString(appConfig.packetSize) : ""); + this.binding.startServBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -263,7 +269,7 @@ public class MainActivity extends AppCompatActivity { AppConfig curAppConfig = retrieveAndSaveAppConfig(); - startMicroPhotoService(MainActivity.this, appConfig); + startMicroPhotoService(MainActivity.this, appConfig, mMessenger); binding.startServBtn.setEnabled(false); binding.stopServBtn.setEnabled(true); @@ -465,9 +471,39 @@ public class MainActivity extends AppCompatActivity { } }); + binding.btnSendHb.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + if (mMessenger != null) { + Message msg = Message.obtain(); + msg.what = MicroPhotoService.MSG_WHAT_SENDING_HB; + try { + mMessenger.send(msg); + } catch(Exception e) { + } + } + } + }); + + binding.btnRestartApp.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Context context = v.getContext(); + MicroPhotoService.restartApp(context, context.getPackageName()); + } + }); + + binding.btnReboot.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + SysApi.reboot(v.getContext()); + } + }); + } - public static void startMicroPhotoService(Context context, AppConfig curAppConfig) { + public static void startMicroPhotoService(Context context, AppConfig curAppConfig, Messenger messenger) { if (TextUtils.isEmpty(curAppConfig.cmdid) || TextUtils.isEmpty(curAppConfig.server) || curAppConfig.port == 0) { return; @@ -479,7 +515,9 @@ public class MainActivity extends AppCompatActivity { intent.putExtra("port", curAppConfig.port); intent.putExtra("protocol", curAppConfig.protocol); intent.putExtra("networkProtocol", curAppConfig.networkProtocol); - // intent.putExtra("messenger", mMessenger); + if (messenger != null) { + intent.putExtra("messenger", messenger); + } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { context.startForegroundService(intent); @@ -581,6 +619,8 @@ public class MainActivity extends AppCompatActivity { appConfig.port = jsonObject.getInt("Port"); appConfig.protocol = jsonObject.getInt("Protocol"); appConfig.networkProtocol = jsonObject.getInt("NetworkProtocol"); + appConfig.heartbeat = jsonObject.optInt("heartbeat", 0); + appConfig.packetSize = jsonObject.optInt("packetSize", 0); if (appConfig.protocol == 0) { appConfig.protocol = DEFAULT_PROTOCOL; diff --git a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java index b3cae42a..8bd753ee 100644 --- a/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java +++ b/app/src/main/java/com/xypower/mpapp/MicroPhotoService.java @@ -72,6 +72,8 @@ public class MicroPhotoService extends Service { public final static int MSG_WHAT_SERVICE_STATUS_CHANGE = 30; + public final static int MSG_WHAT_SENDING_HB = 40; + public final static int MSG_WHAT_MAX = 1000; private static final String ALARM_EVENT = "com.xinyingpower.mp.MicroPhotoService.AlarmReceiver"; @@ -837,31 +839,37 @@ public class MicroPhotoService extends Service { @Override public void run() { if (rebootType == 0) { - /* Context context = MicroPhotoService.this.getApplicationContext(); - Intent intent = getPackageManager().getLaunchIntentForPackage(context.getPackageName()); - - int noDelay = 1; - intent.putExtra("noDelay", noDelay); - PendingIntent restartIntent = PendingIntent.getActivity(context, 0, intent, 0); - AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); - mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent); // 1秒钟后重启应用 - System.exit(0); - - */ - Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(getApplication().getPackageName()); - LaunchIntent.putExtra("noDelay", 1); - LaunchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - startActivity(LaunchIntent); + restartApp(context, context.getPackageName()); } else { Log.w(TAG, "Recv REBOOT command"); - SysApi.reboot(getApplicationContext()); + SysApi.reboot(MicroPhotoService.this.getApplicationContext()); } } }; mHander.postDelayed(runnable, 1000); } + + public static void restartApp(Context context, String packageName) { + /* + Context context = MicroPhotoService.this.getApplicationContext(); + Intent intent = getPackageManager().getLaunchIntentForPackage(context.getPackageName()); + + int noDelay = 1; + intent.putExtra("noDelay", noDelay); + PendingIntent restartIntent = PendingIntent.getActivity(context, 0, intent, 0); + AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); + mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent); // 1秒钟后重启应用 + System.exit(0); + + */ + + Intent LaunchIntent = context.getPackageManager().getLaunchIntentForPackage(packageName); + LaunchIntent.putExtra("noDelay", 1); + LaunchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + context.startActivity(LaunchIntent); + } public void enableGps(boolean enabled) { SysApi.enableGps(getApplicationContext(), enabled); } diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml index c3b501cd..63e5a89c 100644 --- a/app/src/main/res/layout-land/activity_main.xml +++ b/app/src/main/res/layout-land/activity_main.xml @@ -101,7 +101,7 @@ @@ -136,6 +136,7 @@ android:imeOptions="actionDone" android:maxLines="1" android:text="2048" + android:hint="@string/main_packet_size_default" app:layout_constraintLeft_toRightOf="@+id/textViewPacketSize" app:layout_constraintTop_toBottomOf="@+id/server" /> @@ -245,6 +246,33 @@ app:layout_constraintStart_toEndOf="@+id/takePhotoBtn3" app:layout_constraintTop_toBottomOf="@+id/simchange" /> +