Coder Social home page Coder Social logo

frimtec / pikett-assist Goto Github PK

View Code? Open in Web Editor NEW
16.0 5.0 2.0 16.9 MB

:rotating_light: PAssist is an Android application to assist you while doing on-call duties. PAssist works for SMS based alerting systems.

License: Apache License 2.0

Java 98.75% HTML 1.25%
sms alarms call-duties operations-center ringtone android-application assistant pikett

pikett-assist's Introduction

PAssist

Icon License

Project Maintenance Code Coverage

Build Status Deploy Status

PAssist is an Android application to assist you while doing on-call duties. The name PAssist is the short form of Pikett-Assist ('Pikett' is the Swiss German term for on-call).

PAssist works for SMS based alerting systems.

Get it on Google Play Get it on IzzyOnDroid

lokalise logo

App language translations maintained with the great localization platform Lokalise.


Features

PAssist is controlled by your calendar

PAssist activates and deactivates itself based on your calendar. All supervision features are only running, when PAssist is activated. PAssist activates some time (configurable pre-/ post-run time) before and keeps activated some time after the events start and stop time. This ensures you won't miss an alert in case of a small time discrepancy between the operations center time and your phone time. All calendar events matching a configured title pattern are considered as on-call events. PAssist shows you an overview with all future on-call events on the calendar tab.

Deactivated PAssist Calendar Tab Activated PAssist

Alarming

If an SMS is received from your configured operations center, PAssist will race an alert. It is playing a configured ringtone and starts a vibration pattern until you confirm it with a swipe button. When confirmed, an acknowledge SMS is send back to your operations center. The alarm goes into the confirmed alarm state and can be finally closed when all your support activities are completed.

On-call alarm Confirmed alarm

Alarm log

PAssist creates an alarm log with the start and end time of each incident. All SMS messages received between start and end time are attached to the alarm in the log. On the alert log tab you see all your passed alerts in an overview. Selecting an entry shows the details of an alert incident including current state, reaction time to confirm, duration from start to end and all received SMS messages. The alert log can be exported/imported from/to the external file system.

Alert log tab Alert details

Phone signal strength

PAssist will supervise the phone signal strength and notifies you with a vibration pattern if the signal strength is bad or off (includes airplane mode). This ensures that you won't stay in a dead spot without recognize it during on-call duties.

Low/None signal alarm Low signal state info None signal state info

Battery level

PAssist will supervise the battery level and notifies if it is below a configured minimum level.

Ringtone volume

PAssist can control the ringtone volume during on-call duty with separate profiles for day and night.

Test alarms

If the SMS alarming system in use sends daily test alarms to verify the alarming chain from end to end, PAssist can be configured to automatically receive and acknowledge them, without interrupting the user. On a configured daily check time, PAssist verifies if the expected test alarms have been received. If not, PAssist will race an alert with a configured ringtone and starts a vibration pattern until you confirm the missing test alarm with a swipe button. Test alarms can be configured for different contexts, as your alarming system may send a test alarms for various systems that are under supervision.

Missing test alarm detected Alarm for missing test alarm Details to test alarm

Installation

App-Stores

PAssist can be installed from Google Play or IzzyOnDroid.

Get it on Google Play Get it on IzzyOnDroid

Self build

Build PAssist on your own and then install the APK via ADB to your android phone.

SMS permissions

In order to perform the functions of PAssist, PAssist needs to be able to receive and send SMS. As these SMS permissions are no more granted by Google, a compatible SMS adapter is required.

Currently the only supported SMS adapter is secure-sms-proxy. PAssist will guide you to install this SMS adapter.

Configuration

Settings

Main settings

Operations center

Defines the contact of your operations center sending alarms via SMS. The SMS received from any phone number of this contact are supervised by PAssist.

PAssist also supports operations centers using alphanumeric short code SMS numbers. As contacts in Android cannot use letters in phone numbers, such alphanumeric short codes can be configured in the contact field "Company". It the operations centers uses several alphanumeric short codes, they can be comma separated in the contacts company field.

Operations center contact with two alphanumeric short code SMS numbers

Be aware that confirmation replies are not possible if alphanumeric short code SMS numbers are used.

Send confirmation replies

Enable or disable whether confirmation replies should be sent back to the operations center. If the warning system of your operations center does not support confirmation messages, you can deactivate this setting to save the cost of sending the extra reply SMS.

Confirmation reply

Defines the text to send back as alarm acknowledgement to your operations center.

SMS ignore filter

Regular expression pattern to identify SMS messages to be ignored. If empty, SMS filtering is disabled.
WARNING: Be careful, if the pattern is not well designed and triggers for a real alarm, you won't be alerted!

Alarm ringtone

Defines the ringtone that is used to alert for on-call alarms.

Calendar filter

Defines one specific or all of your calenders, that should be used to look for on-call events.

Event filter

Defines a Regular expression pattern (case insensitive) to match the titles of your calendar events, which should be considered for your on-call duties.

Extract partner contacts from events

Defines whether partner contacts are extracted from on-call duty events.

Extraction pattern for partner contacts

Defines a Regular expression pattern to extract partner contacts from on-call duty events. The partner contacts are extracted from the notes field of on-call duty events. There can be several partner contacts in the event notes.
The extracted partner contacts are interpreted as contact nicknames.

Pre- /post-run time

Time in seconds to enable/disable the on-call state before and after the calender event. The default is 300 seconds (five minutes).

Supervise signal strength

Defines whether the signal strength is supervised or not. In case the battery level falls below 10% the check interval is reduced in favour of a longer remaining term.

Minimal signal strength

Defines the lowest accepted signal strength level.

Signal filter

Defines the amount of seconds for which the signal strength must be lower than the minimal expected level before a low signal alarm is raced. With filtering you can reduce false alarms. The filter can be set between 0 (filtering off) and 10 minutes, with a default of 30 seconds. Be aware: With higher values, it takes longer until you are notified of a dead spot. Even with filtering enabled, the airplane mode is detected immediately.

Alert with notification

Defines whether an alert for low signal strength creates a notification or not. The phone also shows a low signal strength through a vibration pattern, regardless of this setting.

Supervised subscription (for Dual SIM only)

For dual SIM phones you can select the subscription for which the signal strength is supervised.

Supervise battery level

Defines whether the battery level is supervised or not.

Minimal battery level

Defines the minimal battery level in percentage (between 10% - 50%). If the current battery level falls below this minimal level, a alert notification is created. Independent of the this minimal battery level, whenever the battery level is in the danger zone (below 10%) the polling interval for PAssist checks (e.g. signal strength) is lowered to minimize the power consumption.

Test alarm settings

Use test alarms

Enable or disable the test alarm feature.

Test alarm message pattern

Regular expression pattern to identify SMS alarm messages as test alarms (case sensitive).
WARNING: Be careful, if the pattern is not well designed and triggers for a real alarm, you won't be alerted!

The regular expression can define a group to extract the test context (for example the name of the system) out of the SMS. As an example the following regular expression could handle test alarms from two different systems 'Helios' and 'Lunar':

^Test alarm for system (Helios|Lunar).*

Test alarms of each group can be supervised individually.

Test contexts to supervise

Defines which of the available test contexts should be supervised.

Check time

Defines the daily time on which the check occurs whether the test alarms have been received recently or not.

Test alarm time window

Defines the time window in which the test alarm must have been received before the check time to be accepted.

Check days

Defines the weekdays on which the test alarms are checked.

Missing test alarm ringtone

Defines the ringtone that is used to alert for missing test alarms.

Test alarm settings

Day/night profile settings

Profile start times

Time when day/night profile starts.

Ringtone volume

Defines whether PAssist should control the ringtone volume during on-call duty or not. The desired ringtone volumes can be defined for the day and night profile separably. If activated, the ringtone volume is automatically restored to the former value, when on-call duty is finished.

Battery drain

Enable "Minimize at night" to reduce power drain at night by reducing the check interval for the signal strength monitoring.

Overview

Supported languages

Currently, the following languages are supported in PAssist:

  • English
  • German
  • French
  • Italian

Translation support for any additional language is warmly welcome - just get in contact with me. PAssist is using Lokalise to maintain language translations.

Open-Source and free

PAssist is Open-Source and available under Apache-2.0 licence. If you find PAssist useful and use it on a regular basis for your on-call duties, a voluntary donation is warmly welcome.

Disclaimer

The use of PAssist is at your own risk. The author assumes no liability for malfunctions of the application. Any warranty claims are excluded.

Development

PAssist is developed with Android-Studio with Java 17. The current Android target SDK is 34 (Android 14-UpsideDownCake) and the minimal SDK is 26 (Android 8.0-Oreo).

Used libraries

Devices compatibility

Feedback

Feedback, bug reports or feature requests are very welcome. You can send an email to [email protected] or open an issue on GitHub.

Credits

  • Lokalise: For supporting Open-Source projects.
  • bakito: For implementing dual SIM support and excellent testing support.
  • IzzySoft: For offering PAssist on IzzyOnDroid F-Droid repository.

pikett-assist's People

Contributors

actions-user avatar bakito avatar dependabot[bot] avatar frimtec avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

00mjk jaylemur

pikett-assist's Issues

NPE while updating state

Android version: 28
Device: OnePlus ONEPLUS A5000
App version: 2149
Thread name: main

Exception stack trace:
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.content.Context.checkPermission(java.lang.String, int, int)' on a null object reference
at androidx.core.content.ContextCompat.checkSelfPermission(ContextCompat.java:544)
at com.github.frimtec.android.pikettassist.helper.Feature.lambda$allPermissionsGranted$13(Feature.java:91)
at com.github.frimtec.android.pikettassist.helper.-$$Lambda$Feature$5ggAf-VStK7WT3R2rVhsQSOa8NA.test(Unknown Source:4)
at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:235)
at java.util.stream.ReferencePipeline.noneMatch(ReferencePipeline.java:461)
at com.github.frimtec.android.pikettassist.helper.Feature.allPermissionsGranted(Feature.java:91)
at com.github.frimtec.android.pikettassist.helper.Feature.lambda$static$0(Feature.java:29)
at com.github.frimtec.android.pikettassist.helper.-$$Lambda$Feature$_ar_V9xMapDUy9fT8mZeL862vWY.apply(Unknown Source:2)
at com.github.frimtec.android.pikettassist.helper.Feature.isAllowed(Feature.java:70)
at com.github.frimtec.android.pikettassist.activity.StateFragment.lambda$createAdapter$1$StateFragment(StateFragment.java:173)
at com.github.frimtec.android.pikettassist.activity.-$$Lambda$StateFragment$FOQtm3ZaTfz9hHGAiCHRnJM0IH8.test(Unknown Source:4)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:235)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:466)
at com.github.frimtec.android.pikettassist.activity.StateFragment.createAdapter(StateFragment.java:174)
at com.github.frimtec.android.pikettassist.activity.AbstractListFragment.refresh(AbstractListFragment.java:51)
at com.github.frimtec.android.pikettassist.activity.StateFragment.onPurchasesUpdated(StateFragment.java:625)
at com.github.frimtec.android.pikettassist.donation.billing.BillingManager.onPurchasesUpdated(BillingManager.java:84)
at com.android.billingclient.api.BillingClientImpl$1.onReceiveResult(BillingClientImpl.java:185)
at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:50)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6898)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Status alert in the middle of the night

Lass night I got woken up by the 'Du bist auf Pikket!' status alert at ~ 23:50.
This Message should not be triggered during the night profile.

Here's the logcat output during this time.
`
12-07 23:52:31.973 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:52:31.973 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@c6c74a9,com.github.frimtec.android.pikettassist.activity.LogcatActivity@400fd01
12-07 23:52:31.973 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:52:31.973 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:31.973 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:31.973 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:31.973 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:52:31.973 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@a7fdaad,com.github.frimtec.android.pikettassist.activity.LogcatActivity@400fd01
12-07 23:52:31.973 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:52:31.973 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:31.973 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:31.972 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:31.968 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:52:31.968 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@67ba5fb,androidx.appcompat.view.ContextThemeWrapper@d643adf
12-07 23:52:31.968 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:52:31.968 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:31.968 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:31.968 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:31.968 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:52:31.968 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@434957e,androidx.appcompat.view.ContextThemeWrapper@d643adf
12-07 23:52:31.968 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:52:31.968 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:31.968 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:31.968 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:31.966 21202 21202 I HwPhoneWindow: updateLayoutParamsColor true mSpecialSet=false, mForcedNavigationBarColor=false, navigationBarColor=ff000000, mNavBarShow=false, mIsFloating=false
12-07 23:52:31.966 21202 21202 I HwPhoneWindow: updateLayoutParamsColor false mSpecialSet=false, mForcedNavigationBarColor=false, navigationBarColor=0, mNavBarShow=false, mIsFloating=false
12-07 23:52:31.964 21202 21202 V ActivityThread: callActivityOnCreate
12-07 23:52:31.962 21202 21202 V ActivityThread: Skipping new config:{1.0 228mcc1mnc [de_CH] ldltr sw360dp w360dp h679dp 480dpi nrml long hdr port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 2037) mAppBounds=Rect(0, 81 - 1080, 2118) mWindowingMode=fullscreen mActivityType=undefined} nonFullScreen=0 suim:1 s.1534}, config:{1.0 228mcc1mnc [de_CH] ldltr sw360dp w360dp h679dp 480dpi nrml long hdr port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 2037) mAppBounds=Rect(0, 81 - 1080, 2118) mWindowingMode=fullscreen mActivityType=undefined} nonFullScreen=0 suim:1 s.1534} for app:com.github.frimtec.android.pikettassist
12-07 23:52:31.962 21202 21202 D ZrHung.AppEyeUiProbe: notify runnable to start.
12-07 23:52:31.962 21202 21202 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@3aa77da
12-07 23:52:31.952 21202 21202 D ZrHung.AppEyeUiProbe: stop checker.
12-07 23:52:31.911 21202 21202 V AudioManager: querySoundEffectsEnabled...
12-07 23:52:31.911 21202 21202 V AudioManager: playSoundEffect effectType: 0
12-07 23:52:30.451 21202 3382 D OpenGLRenderer: HWUI Binary is enabled
12-07 23:52:30.450 21202 21202 I ViewRootImpl: jank_removeInvalidNode jank list is null
12-07 23:52:30.425 21202 3382 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
12-07 23:52:30.356 21202 3382 D OpenGLRenderer: HWUI Binary is enabled
12-07 23:52:30.290 21202 21202 V AudioManager: querySoundEffectsEnabled...
12-07 23:52:30.290 21202 21202 V AudioManager: playSoundEffect effectType: 0
12-07 23:52:29.782 21202 21202 D ActivityThread: Remove activity client record, r= ActivityRecord{215cbe0 token=android.os.BinderProxy@baf5e8f {com.github.frimtec.android.pikettassist/com.github.frimtec.android.pikettassist.activity.AboutActivity}} token= android.os.BinderProxy@baf5e8f
12-07 23:52:29.780 21202 21202 D ViewRootImpl[AboutActivity]: surface should not be released
12-07 23:52:29.761 21202 3382 W libEGL : EGLNativeWindowType 0x6ff8a73010 disconnect failed
12-07 23:52:29.526 21202 21202 W InputMethodManager: startInputReason = 1
12-07 23:52:29.443 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:52:29.373 21202 21212 I chatty : uid=10320(com.github.frimtec.android.pikettassist) HeapTaskDaemon identical 1 line
12-07 23:52:29.301 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:52:29.263 21202 3382 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
12-07 23:52:29.200 21202 21202 D ZrHung.AppEyeUiProbe: notify runnable to start.
12-07 23:52:29.167 21202 21202 D ZrHung.AppEyeUiProbe: stop checker.
12-07 23:52:26.718 21202 21202 D ViewRootImpl[MainActivity]: surface should not be released
12-07 23:52:26.713 21202 3382 D OpenGLRenderer: endAllActiveAnimators on 0x6ff89b2100 (RippleDrawable) with handle 0x700ae95960
12-07 23:52:26.713 21202 3382 W libEGL : EGLNativeWindowType 0x6ff8aec010 disconnect failed
12-07 23:52:26.471 21202 21202 W InputMethodManager: startInputReason = 1
12-07 23:52:26.416 21202 3382 D OpenGLRenderer: HWUI Binary is enabled
12-07 23:52:26.411 21202 3382 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
12-07 23:52:26.395 21202 8462 D HiTouch_PressGestureDetector: onAttached, package=com.github.frimtec.android.pikettassist, windowType=1, mHiTouchRestricted=false
12-07 23:52:26.394 21202 8462 I HiTouch_HiTouchSensor: enabledInPad = false,isPcCastMode = false
12-07 23:52:26.393 21202 21202 I HwPhoneWindow: updateLayoutParamsColor false mSpecialSet=false, mForcedNavigationBarColor=false, navigationBarColor=ff000000, mNavBarShow=true, mIsFloating=false
12-07 23:52:26.386 21202 3382 D OpenGLRenderer: HWUI Binary is enabled
12-07 23:52:26.384 21202 21202 D ZrHung.AppEyeUiProbe: notify runnable to start.
12-07 23:52:26.383 21202 21202 D ActivityThread: add activity client record, r= ActivityRecord{215cbe0 token=android.os.BinderProxy@baf5e8f {com.github.frimtec.android.pikettassist/com.github.frimtec.android.pikettassist.activity.AboutActivity}} token= android.os.BinderProxy@baf5e8f
12-07 23:52:26.373 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:52:26.373 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@a845d02,com.github.frimtec.android.pikettassist.activity.AboutActivity@f4606fa
12-07 23:52:26.373 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:52:26.373 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:26.373 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:26.373 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:26.372 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:52:26.372 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@523bf76,com.github.frimtec.android.pikettassist.activity.AboutActivity@f4606fa
12-07 23:52:26.372 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:52:26.372 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:26.372 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:26.372 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:26.368 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:52:26.368 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@5b1ed4c,androidx.appcompat.view.ContextThemeWrapper@d3bff20
12-07 23:52:26.368 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:52:26.368 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:26.368 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:26.368 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:26.368 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:52:26.368 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@675ae23,androidx.appcompat.view.ContextThemeWrapper@d3bff20
12-07 23:52:26.367 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:52:26.367 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:26.367 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:26.367 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:26.366 21202 21202 I HwPhoneWindow: updateLayoutParamsColor true mSpecialSet=false, mForcedNavigationBarColor=false, navigationBarColor=ff000000, mNavBarShow=false, mIsFloating=false
12-07 23:52:26.366 21202 21202 I HwPhoneWindow: updateLayoutParamsColor false mSpecialSet=false, mForcedNavigationBarColor=false, navigationBarColor=0, mNavBarShow=false, mIsFloating=false
12-07 23:52:26.363 21202 21202 V ActivityThread: callActivityOnCreate
12-07 23:52:26.361 21202 21202 V ActivityThread: Skipping new config:{1.0 228mcc1mnc [de_CH] ldltr sw360dp w360dp h679dp 480dpi nrml long hdr port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 2037) mAppBounds=Rect(0, 81 - 1080, 2118) mWindowingMode=fullscreen mActivityType=undefined} nonFullScreen=0 suim:1 s.1534}, config:{1.0 228mcc1mnc [de_CH] ldltr sw360dp w360dp h679dp 480dpi nrml long hdr port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 2037) mAppBounds=Rect(0, 81 - 1080, 2118) mWindowingMode=fullscreen mActivityType=undefined} nonFullScreen=0 suim:1 s.1534} for app:com.github.frimtec.android.pikettassist
12-07 23:52:26.361 21202 21202 D ZrHung.AppEyeUiProbe: notify runnable to start.
12-07 23:52:26.360 21202 21202 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@baf5e8f
12-07 23:52:26.352 21202 21202 D ZrHung.AppEyeUiProbe: stop checker.
12-07 23:52:26.351 21202 21202 I ViewRootImpl: jank_removeInvalidNode all the node in jank list is out of time
12-07 23:52:26.312 21202 21202 V AudioManager: querySoundEffectsEnabled...
12-07 23:52:26.312 21202 21202 V AudioManager: playSoundEffect effectType: 0
12-07 23:52:24.426 21202 21202 V InputMethodManager: Reporting focus gain, without startInput
12-07 23:52:21.161 21202 21202 I ViewRootImpl: jank_removeInvalidNode jank list is null
12-07 23:52:21.153 21202 3382 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
12-07 23:52:21.152 21202 3382 W libEGL : EGLNativeWindowType 0x6ff8aec010 disconnect failed
12-07 23:52:21.144 21202 21202 W InputMethodManager: startInputReason = 1
12-07 23:52:21.072 21202 3382 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
12-07 23:52:21.072 21202 3382 W libEGL : EGLNativeWindowType 0x6ff8aec010 disconnect failed
12-07 23:52:21.026 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:52:20.955 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:52:20.896 21202 3382 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
12-07 23:52:20.878 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:52:20.878 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@909d2fd,androidx.appcompat.view.ContextThemeWrapper@216f476
12-07 23:52:20.878 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:52:20.878 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:20.878 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:20.878 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:20.878 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:52:20.878 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@c0eb2a7,androidx.appcompat.view.ContextThemeWrapper@216f476
12-07 23:52:20.878 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:52:20.878 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:20.878 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:20.878 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:20.793 21202 3356 D ZrHung.AppEyeUiProbe: restart watching
12-07 23:52:20.793 21202 21202 D ZrHung.AppEyeUiProbe: notify runnable to start.
12-07 23:52:20.789 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:52:20.788 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@37678bc,androidx.appcompat.view.ContextThemeWrapper@216f476
12-07 23:52:20.788 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:52:20.788 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:20.788 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:20.788 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:20.787 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:52:20.787 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@781b390,androidx.appcompat.view.ContextThemeWrapper@216f476
12-07 23:52:20.787 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:52:20.787 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:20.787 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:20.786 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:52:06.301 21202 8426 I SignalStrengthService: Service cycle
12-07 23:51:05.655 21202 8402 I SignalStrengthService: Service cycle
12-07 23:51:05.306 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:50:31.811 21202 21202 V ActivityThread: Handle window ActivityRecord{2d5e46e token=android.os.BinderProxy@9f0ccdd {com.github.frimtec.android.pikettassist/com.github.frimtec.android.pikettassist.activity.MainActivity}} visibility: false
12-07 23:50:31.804 21202 3356 D ZrHung.AppEyeUiProbe: not watching, wait.
12-07 23:50:31.804 21202 3356 D ZrHung.AppEyeUiProbe: Current Activity:false
12-07 23:50:31.728 21202 3382 W libEGL : EGLNativeWindowType 0x6ff8922010 disconnect failed
12-07 23:50:31.432 21202 21202 D ViewRootImpl[MainActivity]: surface should not be released
12-07 23:50:31.375 21202 21202 D ZrHung.AppEyeUiProbe: stop checker.
12-07 23:50:31.069 21202 21202 W InputMethodManager: startInputReason = 8
12-07 23:50:26.147 21202 21202 I ViewRootImpl: jank_removeInvalidNode all the node in jank list is out of time
12-07 23:50:26.144 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:50:26.144 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@f469c51,com.github.frimtec.android.pikettassist.activity.MainActivity@b70f23
12-07 23:50:26.144 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:50:26.144 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:26.144 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:26.144 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:26.143 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:50:26.143 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@99b57d5,com.github.frimtec.android.pikettassist.activity.MainActivity@b70f23
12-07 23:50:26.143 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:50:26.143 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:26.143 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:26.141 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:26.140 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:50:26.073 21202 21202 W HiTouch_PressGestureDetector: Touch pointer move a lot. The moving distance of X is:8.0, limit is:60The moving distance of Y is:106.85089, limit is:60
12-07 23:50:26.029 21202 21202 V HiTouch_HiTouchSensor: User setup is finished.
12-07 23:50:26.027 21202 21202 W Settings: Setting device_provisioned has moved from android.provider.Settings.Secure to android.provider.Settings.Global.
12-07 23:50:18.263 21202 21202 I ViewRootImpl: jank_removeInvalidNode jank list is null
12-07 23:50:16.727 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:50:16.657 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:50:16.621 21202 3382 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
12-07 23:50:16.620 21202 3382 W libEGL : EGLNativeWindowType 0x6ff8922010 disconnect failed
12-07 23:50:16.618 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:50:16.618 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@77fdd30,androidx.appcompat.view.ContextThemeWrapper@216f476
12-07 23:50:16.618 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:50:16.618 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:16.618 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:16.618 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:16.618 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:50:16.618 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@39106e2,androidx.appcompat.view.ContextThemeWrapper@216f476
12-07 23:50:16.618 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:50:16.618 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:16.618 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:16.618 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:16.618 21202 21202 I HiTouch_HiTouchSensor: ORIENTATION_LANDSCAPE
12-07 23:50:16.597 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:50:16.597 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@a79f8c4,androidx.appcompat.view.ContextThemeWrapper@216f476
12-07 23:50:16.597 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:50:16.597 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:16.597 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:16.597 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:16.596 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:50:16.596 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@3bfc318,androidx.appcompat.view.ContextThemeWrapper@216f476
12-07 23:50:16.596 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:50:16.596 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:16.596 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:16.596 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:16.596 21202 21202 I HiTouch_HiTouchSensor: ORIENTATION_LANDSCAPE
12-07 23:50:05.604 21202 21202 I TestAlertService: Next run at 2019-12-09T12:00+01:00[Europe/Zurich]; wait ms: 130194396
12-07 23:50:05.603 21202 8311 I TestAlertService: Service cycle; pikett state: ON; initial: true
12-07 23:50:05.585 21202 21202 W InputMethodManager: startInputReason = 5
12-07 23:50:05.585 21202 8310 I SignalStrengthService: Service cycle
12-07 23:50:05.575 21202 21202 W InputMethodManager: startInputReason = 1
12-07 23:50:05.560 21202 21202 I PikettService: Next run in 86400000
12-07 23:50:05.548 21202 21202 I ViewRootImpl: jank_removeInvalidNode jank list is null
12-07 23:50:05.510 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:50:05.439 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:50:05.250 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:50:05.143 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:50:05.069 21202 3382 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
12-07 23:50:05.056 21202 8239 D HiTouch_PressGestureDetector: onAttached, package=com.github.frimtec.android.pikettassist, windowType=1, mHiTouchRestricted=false
12-07 23:50:05.055 21202 8239 I HiTouch_HiTouchSensor: enabledInPad = false,isPcCastMode = false
12-07 23:50:05.050 21202 21202 I HwPhoneWindow: updateLayoutParamsColor false mSpecialSet=false, mForcedNavigationBarColor=false, navigationBarColor=ff000000, mNavBarShow=true, mIsFloating=false
12-07 23:50:05.048 21202 3382 D OpenGLRenderer: HWUI Binary is enabled
12-07 23:50:05.039 21202 8238 I PikettService: Service cycle
12-07 23:50:05.031 21202 3382 D OpenGLRenderer: HWUI Binary is enabled
12-07 23:50:04.988 21202 21202 D ZrHung.AppEyeUiProbe: notify runnable to start.
12-07 23:50:04.987 21202 21202 D ActivityThread: add activity client record, r= ActivityRecord{2d5e46e token=android.os.BinderProxy@9f0ccdd {com.github.frimtec.android.pikettassist/com.github.frimtec.android.pikettassist.activity.MainActivity}} token= android.os.BinderProxy@9f0ccdd
12-07 23:50:04.824 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:50:04.824 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@bf5e202,androidx.appcompat.view.ContextThemeWrapper@216f476
12-07 23:50:04.824 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:50:04.824 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:04.824 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:04.824 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:04.823 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl: mScrollerVelocity is 0, value is 0
12-07 23:50:04.823 21202 21202 D HwSplineOverScrollerExImpl: initSplineOverScrollerImpl paras: android.widget.OverScroller$SplineOverScroller@f346b11,androidx.appcompat.view.ContextThemeWrapper@216f476
12-07 23:50:04.823 21202 21202 D FeatureFactory: loadFeature() new IHwSplineOverScrollerEx()
12-07 23:50:04.823 21202 21202 D FeatureFactory: loadFeature() : com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:04.823 21202 21202 I FLTAG_SFM: getRequireClassLoader() succ ! className: com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:04.823 21202 21202 I FLTAG_FM: loadFeature class:com.huawei.featurelayer.systemfeature.HwWidget.IHwSplineOverScrollerEx
12-07 23:50:04.820 21202 21202 I HwPhoneWindow: updateLayoutParamsColor true mSpecialSet=false, mForcedNavigationBarColor=false, navigationBarColor=ff000000, mNavBarShow=false, mIsFloating=false
12-07 23:50:04.820 21202 21202 I HwPhoneWindow: updateLayoutParamsColor false mSpecialSet=false, mForcedNavigationBarColor=false, navigationBarColor=0, mNavBarShow=false, mIsFloating=false
12-07 23:50:04.812 21202 21202 V ActivityThread: callActivityOnCreate
12-07 23:50:04.795 21202 21202 V ActivityThread: Skipping new config:{1.0 228mcc1mnc [de_CH] ldltr sw360dp w360dp h679dp 480dpi nrml long hdr port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 2037) mAppBounds=Rect(0, 81 - 1080, 2118) mWindowingMode=fullscreen mActivityType=undefined} nonFullScreen=0 suim:1 s.1532}, config:{1.0 228mcc1mnc [de_CH] ldltr sw360dp w360dp h679dp 480dpi nrml long hdr port finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 2037) mAppBounds=Rect(0, 81 - 1080, 2118) mWindowingMode=fullscreen mActivityType=undefined} nonFullScreen=0 suim:1 s.1532} for app:com.github.frimtec.android.pikettassist
--------- beginning of system
12-07 23:50:04.795 21202 3356 D ZrHung.AppEyeUiProbe: restart watching
12-07 23:50:04.795 21202 21202 D ZrHung.AppEyeUiProbe: notify runnable to start.
12-07 23:50:04.790 21202 21202 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@9f0ccdd
12-07 23:49:34.970 21202 21202 I TestAlertService: Next run at 2019-12-09T12:00+01:00[Europe/Zurich]; wait ms: 130225036
12-07 23:49:34.957 21202 8118 I TestAlertService: Service cycle; pikett state: ON; initial: true
12-07 23:49:34.896 21202 8117 I SignalStrengthService: Service cycle
12-07 23:49:34.837 21202 21202 I PikettService: Next run in 86400000
12-07 23:49:34.809 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:49:34.784 21202 8111 I PikettService: Service cycle
12-07 23:49:34.778 21202 8110 I SignalStrengthService: Service cycle
12-07 23:47:34.307 21202 8109 I SignalStrengthService: Service cycle
12-07 23:46:11.314 21202 8108 I SignalStrengthService: Service cycle
12-07 23:37:26.316 21202 8106 I SignalStrengthService: Service cycle
12-07 23:24:11.346 21202 8104 I SignalStrengthService: Service cycle
12-07 23:22:26.321 21202 7963 I SignalStrengthService: Service cycle
12-07 23:15:33.320 21202 7959 I SignalStrengthService: Service cycle
12-07 23:13:02.344 21202 21212 E : [ZeroHung]zrhung_get_config: Get config failed for wp[0x0008]
12-07 23:13:02.313 21202 7876 I SignalStrengthService: Service cycle
12-07 23:09:02.303 21202 7875 I SignalStrengthService: Service cycle
12-07 23:03:17.312 21202 7874 I SignalStrengthService: Service cycle
12-07 23:02:02.300 21202 7873 I SignalStrengthService: Service cycle
12-07 23:00:34.696 21202 7872 I SignalStrengthService: Service cycle
12-07 22:59:34.603 21202 7871 I SignalStrengthService: Service cycle
12-07 22:58:34.519 21202 7869 I SignalStrengthService: Service cycle
--------- beginning of main

`

Publish PAssist in Google-Play

Due to the required SMS permissions (SMS_SEND, SMS_RECEIVE) this seems to be a difficult task.
Google is treating SMS permissions as highly sensitive.

Unfortunately without these permissions, PAssist is useless.

Remove SMS-Permissions from PAssist

  • Remove SMS-Permissions from PAssist.
  • Add alarming API for external Apps:
    • Add possibility to listen for external SMS received events.
    • Add possibility to send SMS via external API.

Cleanup

  • Remove Feature.SMS_ADAPTER
  • Translation of registration errors

Can not convert signal strength level '5' from HUAWEI CLT-L29

I get the following error when the app is started.

Regards,
bakito (Marc)

Android version: 28
Device: HUAWEI CLT-L29
App version: 1693
Thread name: main

Exception stack trace:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.github.frimtec.android.pikettassist/com.github.frimtec.android.pikettassist.activity.MainActivity}: java.lang.IllegalArgumentException: Unknown level: 5
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3430)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199)
at android.os.Handler.dispatchMessage(Handler.java:112)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7625)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
Caused by: java.lang.IllegalArgumentException: Unknown level: 5
at com.github.frimtec.android.pikettassist.helper.SignalStrengthHelper$SignalLevel.from(SignalStrengthHelper.java:73)
at com.github.frimtec.android.pikettassist.helper.SignalStrengthHelper$SignalLevel.access$000(SignalStrengthHelper.java:49)
at com.github.frimtec.android.pikettassist.helper.SignalStrengthHelper.getSignalStrength(SignalStrengthHelper.java:45)
at com.github.frimtec.android.pikettassist.activity.StateFragment.regularStates(StateFragment.java:301)
at com.github.frimtec.android.pikettassist.activity.StateFragment.createAdapter(StateFragment.java:194)
at com.github.frimtec.android.pikettassist.activity.AbstractListFragment.refresh(AbstractListFragment.java:51)
at com.github.frimtec.android.pikettassist.activity.AbstractListFragment.onCreateView(AbstractListFragment.java:42)
at android.app.Fragment.performCreateView(Fragment.java:2537)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1301)
at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2433)
at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2212)
at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2168)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2069)
at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3059)
at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3006)
at android.app.FragmentController.dispatchActivityCreated(FragmentController.java:182)
at android.app.Activity.performCreate(Activity.java:7465)
at android.app.Activity.performCreate(Activity.java:7448)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1286)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3409)
... 11 more``

NPE on calendar event with no title

2019-09-06 19:27:41.863 15708-15708/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.github.frimtec.android.pikettassist, PID: 15708
    java.lang.NullPointerException: Attempt to invoke interface method 'int java.lang.CharSequence.length()' on a null object reference
        at java.util.regex.Matcher.reset(Matcher.java:280)
        at java.util.regex.Matcher.<init>(Matcher.java:186)
        at java.util.regex.Pattern.matcher(Pattern.java:1034)
        at com.github.frimtec.android.pikettassist.helper.CalendarEventHelper.getPikettShifts(CalendarEventHelper.java:57)
        at com.github.frimtec.android.pikettassist.activity.ShiftListFragment.createAdapter(ShiftListFragment.java:45)
        at com.github.frimtec.android.pikettassist.activity.AbstractListFragment.refresh(AbstractListFragment.java:34)
        at com.github.frimtec.android.pikettassist.activity.AbstractListFragment.onCreateView(AbstractListFragment.java:29)
        at android.app.Fragment.performCreateView(Fragment.java:2534)
        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1303)
        at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2431)
        at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2210)
        at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2166)
        at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2067)
        at android.app.FragmentManagerImpl$1.run(FragmentManager.java:742)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

Do not send sms adapter loopback SMS before first registration

Exception stack trace:
java.lang.RuntimeException: Cannot create AES key
at com.github.frimtec.android.securesmsproxyapi.utility.Aes.<init>(Aes.java:28)
at com.github.frimtec.android.securesmsproxyapi.SecureSmsProxyFacadeImpl.sendSms(SecureSmsProxyFacadeImpl.java:88)
at com.github.frimtec.android.pikettassist.activity.StateFragment$4.onContextItemSelected(StateFragment.java:298)
at com.github.frimtec.android.pikettassist.activity.StateFragment.onContextItemSelected(StateFragment.java:542)
at android.app.Fragment.performContextItemSelected(Fragment.java:2684)
at android.app.FragmentManagerImpl.dispatchContextItemSelected(FragmentManager.java:3198)
at android.app.FragmentController.dispatchContextItemSelected(FragmentController.java:384)
at android.app.Activity.onMenuItemSelected(Activity.java:3566)

API-25: WakeLock under-locked exception

Android version: 25
Device: HMD Global Nokia 2
App version: 1217
Thread name: main

Exception stack trace:
java.lang.RuntimeException: Unable to destroy activity {com.github.frimtec.android.pikettassist/com.github.frimtec.android.pikettassist.activity.LowSignalAlarmActivity}: java.lang.RuntimeException: WakeLock under-locked LowSignalAlarmActivity:alarm
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4203)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4221)
at android.app.ActivityThread.-wrap6(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1538)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: java.lang.RuntimeException: WakeLock under-locked LowSignalAlarmActivity:alarm
at android.os.PowerManager$WakeLock.release(PowerManager.java:1411)
at android.os.PowerManager$WakeLock.release(PowerManager.java:1377)
at com.github.frimtec.android.pikettassist.activity.AbstractAlarmActivity.onDestroy(AbstractAlarmActivity.java:209)
at android.app.Activity.performDestroy(Activity.java:6949)
at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1154)
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4190)
... 9 more

Test alarm detail view

Test alarm detail view opened from click on test alarm state in state overview.

Things to show:

  • Context name
  • Time of last received test alarm
  • Content of test alarm SMS
  • Alarm state

Actions:

  • Close alarm state if alarm state is on
  • Delete context

Day- & Night-Profile

Automatic activation of day and night profiles during on-call state.
For example:

  • Internet on/off => unfortunately not allowed anymore
  • Volume level => done

Crash on call log fragment when CALENDAR-PERMISSION is missing

When call-log fragment is shown and the calendar permission is not yet granted, the following exception is raced:

Exception stack trace:
java.lang.SecurityException: Permission Denial: opening provider com.android.providers.calendar.CalendarProvider2 from ProcessRecord{6538104 19299:com.github.frimtec.android.pikettassist/u0a215} (pid=19299, uid=10215) requires android.permission.READ_CALENDAR or android.permission.WRITE_CALENDAR
at android.os.Parcel.createException(Parcel.java:1950)
at android.os.Parcel.readException(Parcel.java:1918)
at android.os.Parcel.readException(Parcel.java:1868)
at android.app.IActivityManager$Stub$Proxy.getContentProvider(IActivityManager.java:4123)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:6199)
at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2641)
at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1963)
at android.content.ContentResolver.query(ContentResolver.java:831)
at android.content.ContentResolver.query(ContentResolver.java:762)
at android.content.ContentResolver.query(ContentResolver.java:720)
at com.github.frimtec.android.pikettassist.helper.CalendarEventHelper.getPikettShifts(CalendarEventHelper.java:48)
at com.github.frimtec.android.pikettassist.helper.CalendarEventHelper.hasPikettEventForNow(CalendarEventHelper.java:24)
at com.github.frimtec.android.pikettassist.state.SharedState.getPikettState(SharedState.java:68)
at com.github.frimtec.android.pikettassist.activity.CallLogFragment.addAction(CallLogFragment.java:93)
at com.github.frimtec.android.pikettassist.activity.AbstractListFragment.onCreateView(AbstractListFragment.java:35)
at android.app.Fragment.performCreateView(Fragment.java:2522)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1298)
at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2426)
at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2205)
at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2161)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2062)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:738)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6898)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.am.ActivityManagerService.getContentProviderImpl(ActivityManagerService.java:13968)
at com.android.server.am.ActivityManagerService.getContentProvider(ActivityManagerService.java:14384)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:357)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3829)
at android.os.Binder.execTransact(Binder.java:752)

Test SMS not matched if SMS split

If the test alarm SMS are split due to size, the test pattern can not match.
The SMS splits must be joined before the pattern matching.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.