Wednesday, 25 September 2019

KP2A plugin v1.41

Added option to keep plugin constantly running in the background:

If the plugin is not working correctly on your device:

  • entry/field actions are (sometimes) not displayed
  • entry/field actions are displayed but do not work at all when selected


you can now set the plugin to always run in the background, to see if it helps in any way:
Settings → scroll to the very bottom → check Never stop plugin

Note: it seems like in some cases, turning off battery optimization for the plugin may help:
System settings → Apps -> KP2A InputStick Plugin → Advanced → Battery → Battery optimization → add the plugin to list of Not optimized apps 
You should try this first, before enabling Never stop plugin.


Other:

minor bug fixes and improvements

Wednesday, 18 September 2019

InputStickUtility v2.00 (Android)

Redesigned UI:

InputStickUtility was redesigned from scratch. New interface is much more intuitive and easier to use.

Main screen

All important info in one place
Configuration options

Security options

Compatible with Android 10:

InputStickUtility is now compatible with Android 10. Unfortunately this required changes that make it no longer compatible with apps that use old versions of InputStick API (USB Remote and KP2A InputStick plugin both use latest API and won't be affected by this issue).

If after updating InputStickUtility to v2.00, your app crashes on connection attempt ask app developer to update the app using the latest InputStick API. If you have Android 9 or earlier you can switch to InputStickUtility v1.60 until the update is ready.


Requires Android 4.4 or later:

Older Android versions are no longer supported in new app releases. You can still use InputStick with older devices, however you are limited to InputStickUtility v1.60 (supports Android 2.3 up to 9.0).

Optional firmware update (v1.10):

You can now update your InputStick to the latest available firmware (v1.10). Main new feature is an option to exchange encryption key via USB. More info below.

Supports new firmware features (exchange encryption key via USB):

It is now possible to exchange encryption key via USB. Here's how it works:

  • open simple text editor (Notepad etc.)
  • plug InputStick into USB port
  • open InputStickUtility → select device → switch to Security tab → Set/Change password → Generate password → adjust options → Generate
  • InputStick generates password and types it (as a keyboard)
  • re-type password into InputStickUtility
  • the app verifies if it can establish encrypted connection using entered password. If yes, encryption key is saved

This method takes a bit more time than exchanging encryption key via Bluetooth, but in most cases should be more secure, preventing against eavesdropping attacks.

Generate password

Improved device discovery:

When scanning for nearby Bluetooth devices, devices named InputStick are marked with green color. When LE scanning mode is used (recommended by the app, unless you have InputStick BT2.0) other Bluetooth devices will not appear on the list, making it easier to find your device when there are many Bluetooth devices nearby.

InputStick devices are now marked with green color


Simplified app settings:

Settings that were no longer used or could be confusing were removed.

New Settings screen

Added Help section:

In-app help is now available. It contains information about InputStick security features, shows how to troubleshoot connection problems, restore factory defaults and recover firmware.

Help section: how to restore factory defaults

Improved widgets and Tasker actions:

Widgets and Tasker actions will now work correctly when device name is changed. Important: old widgets and actions are no longer supported, you must delete old ones and create new widgets / Tasker actions.

Other:

Multiple bug fixes and minor improvements.

Saturday, 14 September 2019

Android apps compatibility

In order to make InputStickUtility compatible with Android 10, it was necessary to make some changes that make it no longer compatible with some apps using older versions of InputStick API  when running on Android 8 or higher (USB Remote and KP2A plugin are NOT affected by this issue).

Android 10 (and some Android 9 devices):

  • you must update InputStickUtility to v2.00 (older versions will not work correctly)
  • if an app crashes on connection attempt, ask its developer to rebuild the app using the latest available InputStick API (more info below)

Android 8 - Android 9:

  • you should update InputStickUtility to v2.00
  • if an app crashes on connection attempt, ask its developer to rebuild the app using the latest available InputStick API (more info below)
  • if that is not possible, download InputStickUtility v1.60 (link below)

Android 4.4 - Android 7.1:

  • you should update InputStickUtility to v2.00
  • all apps should work normally (even older ones)

Android 2.3 - Android 4.3:

  • your device is not supported by InputStickUtility v2.00, download InputStickUtility v1.60 (link below)
  • all apps should work normally (even older ones)

Download URLs:

InputStickUtility v2.00 (Google Play Store)
InputStickUtility v2.00 (.apk)
InputStickUtility v1.60 (.apk, signed with debug certificate, will not get updated via Google Play)


More details:

  • USB Remote and KP2A InputStick plugin use latest InputStick API and are 100% compatible with InputStickUtility v2.00
  • apps that use InputStickUtility as proxy  using IPC connection method (most popular one) must use latest InputStick API in order to work with InputStickUtility v2.00
  • apps that use InputStickUtility as proxy using broadcasts are not affected
  • apps that connect directly to InputStick are not affected

App developers:

If your app uses IPC connection method, make sure that it was built using latest InputStick API:

or find: IPCConnectionManager.java file and replace line:

mCtx.startService(intent);

with:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
mCtx.startService(intent);
} else {
mCtx.startForegroundService(intent);
}

Your app uses IPC connection if following method is used (from InputStickHID class):
connect(Application app)