Connect IQ Android SDK throwing internal exception during mConnectIQ.sendMessage processing?

Former Member
Former Member

Hello - I am developing a Garmin Connect IQ app that is generally behaving quite well on several types of watches (Fenix 5x, Forerunner 235).  I've integrated your latest Android SDK into our Mobile Medical Application to deliver important information, alerts, etc.  Since it's a medical device, the reliability & timeliness of the phone messages are important.  On an Android Pixel 2 running the latest Android 9, API 28, I am experiencing fairly frequent FAILURE_DURING_TRANSFER message status returns which may delay the watch updates until SUCCESS eventually occurs.  I only send messages when the watch is connected according to the device status returned from onDeviceStatusChanged in the IQDeviceEventListener.  It appears (please see the below Android logcat extracts) that an exception internal to the ConnectIQ SDK is occurring somewhat frequently.  Interestingly, the phone message send succeeds at times even after the exception (traces of both success/failure below).  I do not see this exception on a Samsung S9+ (also running latest Android 9, API 28) running identical software.  Is this a likely or known bug in the Connect IQ SDK?  Perhaps my app is behaving in a way that causes the link to be fragile?  Is this normal?  The phone messages are slightly more than 1K bytes in length generally occurring at 5 minute intervals.  Any insights or suggestions would be most welcome.  Thanks, Matthew

2019-09-12 17:40:55.646 1385-1385/com.senseonics.androidapp W/Bundle: Key com.garmin.android.connectiq.EXTRA_REMOTE_DEVICE expected Long but value was a com.garmin.android.connectiq.IQDevice. The default value 0 was returned.
2019-09-12 17:40:55.646 1385-1385/com.senseonics.androidapp W/Bundle: Attempt to cast generated internal exception:
java.lang.ClassCastException: com.garmin.android.connectiq.IQDevice cannot be cast to java.lang.Long
at android.os.BaseBundle.getLong(BaseBundle.java:1070)
at android.content.Intent.getLongExtra(Intent.java:7397)
at com.garmin.android.connectiq.IQMessageReceiver.onReceive(IQMessageReceiver.java:134)
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1391)
at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(Unknown Source:2)
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:6718)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
2019-09-12 17:40:55.649 1385-1385/com.senseonics.androidapp D/RichWatch: RichWatchUtility sendMessage status # 1509 - FAILURE_DURING_TRANSFER

2019-09-12 17:44:00.399 1385-1385/com.senseonics.androidapp W/Bundle: Key com.garmin.android.connectiq.EXTRA_REMOTE_DEVICE expected Long but value was a com.garmin.android.connectiq.IQDevice. The default value 0 was returned.
2019-09-12 17:44:00.400 1385-1385/com.senseonics.androidapp W/Bundle: Attempt to cast generated internal exception:
java.lang.ClassCastException: com.garmin.android.connectiq.IQDevice cannot be cast to java.lang.Long
at android.os.BaseBundle.getLong(BaseBundle.java:1070)
at android.content.Intent.getLongExtra(Intent.java:7397)
at com.garmin.android.connectiq.IQMessageReceiver.onReceive(IQMessageReceiver.java:134)
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1391)
at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(Unknown Source:2)
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:6718)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
2019-09-12 17:44:00.413 1385-1385/com.senseonics.androidapp D/RichWatch: RichWatchUtility sendMessage status # 1542 - SUCCESS