Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/usb-serial-telnet-server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2022-09-28 20:15:37 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2022-09-28 20:15:37 +0300
commite8f38fb08649ebb6069818de0ebfa605d566912a (patch)
tree38d65c0ae004f1286136334b8fa42229260f36d5
parent9972246d71a3d0aeb4dfb9423c64befbabff3a83 (diff)
Restart after reboot
-rw-r--r--app/src/main/AndroidManifest.xml19
-rw-r--r--app/src/main/java/com/clusterrr/usbserialtelnetserver/BootCompletedReceiver.java23
-rw-r--r--app/src/main/java/com/clusterrr/usbserialtelnetserver/MainActivity.java46
-rw-r--r--app/src/main/java/com/clusterrr/usbserialtelnetserver/UsbSerialTelnetService.java2
-rw-r--r--app/src/main/java/com/clusterrr/usbserialtelnetserver/UsbSerialThread.java14
5 files changed, 87 insertions, 17 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3dc5fa2..9c80c86 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.clusterrr.usbserialtelnetserver" >
+ package="com.clusterrr.usbserialtelnetserver">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
@@ -12,17 +12,17 @@
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
- android:theme="@style/Theme.USBSerialTelnetServer" >
+ android:theme="@style/Theme.USBSerialTelnetServer">
<service
android:name=".UsbSerialTelnetService"
android:enabled="true"
- android:exported="true"/>
+ android:exported="true" />
<activity
android:name=".MainActivity"
android:exported="true"
- android:launchMode="singleTop" >
+ android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
@@ -30,8 +30,17 @@
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
- <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/usb_device_filter"/>
+
+ <meta-data
+ android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
+ android:resource="@xml/usb_device_filter" />
</activity>
+
+ <receiver android:name=".BootCompletedReceiver" android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.BOOT_COMPLETED" />
+ </intent-filter>
+ </receiver>
</application>
</manifest> \ No newline at end of file
diff --git a/app/src/main/java/com/clusterrr/usbserialtelnetserver/BootCompletedReceiver.java b/app/src/main/java/com/clusterrr/usbserialtelnetserver/BootCompletedReceiver.java
new file mode 100644
index 0000000..aa2268b
--- /dev/null
+++ b/app/src/main/java/com/clusterrr/usbserialtelnetserver/BootCompletedReceiver.java
@@ -0,0 +1,23 @@
+package com.clusterrr.usbserialtelnetserver;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Build;
+
+import com.hoho.android.usbserial.driver.UsbSerialPort;
+
+public class BootCompletedReceiver extends BroadcastReceiver {
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ // App was started before shutdown
+ SharedPreferences prefs = context.getApplicationContext().getSharedPreferences(context.getString(R.string.app_name), Context.MODE_PRIVATE);
+ boolean needToStart = prefs.getBoolean(UsbSerialTelnetService.KEY_LAST_STATE, false);
+ if (needToStart) {
+ Intent mainActivityStartIntent = new Intent(context, MainActivity.class);
+ mainActivityStartIntent.setAction(UsbSerialTelnetService.ACTION_NEED_TO_START);
+ }
+ }
+} \ No newline at end of file
diff --git a/app/src/main/java/com/clusterrr/usbserialtelnetserver/MainActivity.java b/app/src/main/java/com/clusterrr/usbserialtelnetserver/MainActivity.java
index 9290e6f..cdb8454 100644
--- a/app/src/main/java/com/clusterrr/usbserialtelnetserver/MainActivity.java
+++ b/app/src/main/java/com/clusterrr/usbserialtelnetserver/MainActivity.java
@@ -15,7 +15,9 @@ import android.hardware.usb.UsbManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
+import android.os.Handler;
import android.os.IBinder;
+import android.os.Looper;
import android.os.PowerManager;
import android.provider.Settings;
import android.util.Log;
@@ -41,22 +43,26 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
final static String SETTING_NO_LOCAL_ECHO = "no_local_echo";
final static String SETTING_REMOVE_LF = "remove_lf";
- UsbSerialTelnetService.ServiceBinder mServiceBinder = null;
- Button mStartButton;
- Button mStopButton;
- EditText mTcpPort;
- EditText mBaudRate;
- Spinner mDataBits;
- Spinner mStopBits;
- Spinner mParity;
- TextView mStatus;
- Switch mNoLocalEcho;
- Switch mRemoveLF;
+ private UsbSerialTelnetService.ServiceBinder mServiceBinder = null;
+ private Handler mHandler;
+ private Button mStartButton;
+ private Button mStopButton;
+ private EditText mTcpPort;
+ private EditText mBaudRate;
+ private Spinner mDataBits;
+ private Spinner mStopBits;
+ private Spinner mParity;
+ private TextView mStatus;
+ private Switch mNoLocalEcho;
+ private Switch mRemoveLF;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
+
+ mHandler = new Handler(Looper.getMainLooper());
+
mStartButton = findViewById(R.id.buttonStart);
mStopButton = findViewById(R.id.buttonStop);
mTcpPort = findViewById(R.id.editTextTcpPort);
@@ -75,6 +81,13 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
bindService(serviceIntent, serviceConnection, 0); // in case it's service already started
updateSettings();
+
+ boolean started = mServiceBinder != null && mServiceBinder.isStarted();
+ if (!started) {
+ SharedPreferences prefs = getApplicationContext().getSharedPreferences(getString(R.string.app_name), Context.MODE_PRIVATE);
+ boolean needToStart = prefs.getBoolean(UsbSerialTelnetService.KEY_LAST_STATE, false);
+ if (needToStart) start();
+ }
}
@Override
@@ -154,6 +167,10 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
Intent serviceIntent = new Intent(this, UsbSerialTelnetService.class);
stopService(serviceIntent);
mServiceBinder = null;
+ mHandler.postDelayed(() -> {
+ SharedPreferences prefs = getApplicationContext().getSharedPreferences(getString(R.string.app_name), Context.MODE_PRIVATE);
+ prefs.edit().putBoolean(UsbSerialTelnetService.KEY_LAST_STATE, false).commit();
+ }, 50);
updateSettings();
}
@@ -164,6 +181,11 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
mServiceBinder = (UsbSerialTelnetService.ServiceBinder) service;
mServiceBinder.setOnStopListener(MainActivity.this);
updateSettings();
+ mHandler.postDelayed(() -> {
+ boolean started = mServiceBinder != null && mServiceBinder.isStarted();
+ SharedPreferences prefs = getApplicationContext().getSharedPreferences(getString(R.string.app_name), Context.MODE_PRIVATE);
+ prefs.edit().putBoolean(UsbSerialTelnetService.KEY_LAST_STATE, started).commit();
+ }, 50);
Log.d(UsbSerialTelnetService.TAG, "Service connected");
}
@@ -225,7 +247,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
mNoLocalEcho.setChecked(prefs.getBoolean(SETTING_NO_LOCAL_ECHO, true));
mRemoveLF.setChecked(prefs.getBoolean(SETTING_REMOVE_LF, true));
if (started)
- mStatus.setText(getString(R.string.started_please_connect) + " telnet://" + UsbSerialTelnetService.getIPAddress() + ":"+ mTcpPort.getText());
+ mStatus.setText(getString(R.string.started_please_connect) + " telnet://" + UsbSerialTelnetService.getIPAddress() + ":"+ mTcpPort.getText());
else
mStatus.setText(R.string.not_started);
}
diff --git a/app/src/main/java/com/clusterrr/usbserialtelnetserver/UsbSerialTelnetService.java b/app/src/main/java/com/clusterrr/usbserialtelnetserver/UsbSerialTelnetService.java
index 6b9f38a..409027c 100644
--- a/app/src/main/java/com/clusterrr/usbserialtelnetserver/UsbSerialTelnetService.java
+++ b/app/src/main/java/com/clusterrr/usbserialtelnetserver/UsbSerialTelnetService.java
@@ -7,6 +7,7 @@ import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.graphics.BitmapFactory;
import android.hardware.usb.UsbDeviceConnection;
import android.hardware.usb.UsbManager;
@@ -42,6 +43,7 @@ public class UsbSerialTelnetService extends Service {
final static String KEY_PARITY = "parity";
final static String KEY_NO_LOCAL_ECHO = "no_local_echo";
final static String KEY_REMOVE_LF = "remove_lf";
+ final static String KEY_LAST_STATE = "last_state";
boolean mStarted = false;
//UsbSerialPort mSerialPort = null;
diff --git a/app/src/main/java/com/clusterrr/usbserialtelnetserver/UsbSerialThread.java b/app/src/main/java/com/clusterrr/usbserialtelnetserver/UsbSerialThread.java
index 1e03796..c2a0adf 100644
--- a/app/src/main/java/com/clusterrr/usbserialtelnetserver/UsbSerialThread.java
+++ b/app/src/main/java/com/clusterrr/usbserialtelnetserver/UsbSerialThread.java
@@ -1,5 +1,9 @@
package com.clusterrr.usbserialtelnetserver;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Handler;
+import android.os.Looper;
import android.util.Log;
import com.hoho.android.usbserial.driver.UsbSerialPort;
@@ -13,10 +17,12 @@ public class UsbSerialThread extends Thread {
private UsbSerialTelnetService mUsbSerialTelnetService;
private UsbSerialPort mSerialPort;
+ private Handler mHandler;
public UsbSerialThread(UsbSerialTelnetService usbSerialTelnetService, UsbSerialPort serialPort) {
mUsbSerialTelnetService = usbSerialTelnetService;
mSerialPort = serialPort;
+ mHandler = new Handler(Looper.getMainLooper());
}
@Override
@@ -35,9 +41,11 @@ public class UsbSerialThread extends Thread {
}
catch (IOException e) {
Log.i(UsbSerialTelnetService.TAG, "Serial port: " + e.getMessage());
+ markStopped();
}
catch (Exception e) {
e.printStackTrace();
+ markStopped();
}
close();
Log.i(UsbSerialTelnetService.TAG, "Serial port closed");
@@ -58,4 +66,10 @@ public class UsbSerialThread extends Thread {
}
mSerialPort = null;
}
+
+ private void markStopped()
+ {
+ SharedPreferences prefs = mUsbSerialTelnetService.getApplicationContext().getSharedPreferences(mUsbSerialTelnetService.getString(R.string.app_name), Context.MODE_PRIVATE);
+ prefs.edit().putBoolean(UsbSerialTelnetService.KEY_LAST_STATE, false).commit();
+ }
}