android / fit-samples

Multiple samples showing the best practices using the Fit APIs on Android.
Apache License 2.0
151 stars 111 forks source link

Error: Fitness api can't request data for big time intervals [E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!] #57

Open Hesowcharov opened 3 years ago

Hesowcharov commented 3 years ago

Hello! My google fit app doesn't work for 2 months. I started to debug the application and I was able to find these errors from adb logcat:

2020-11-22 17:04:48.804 16111-16143/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!  (parcel size = 1330200)
E/FitAndroidFutures: While reading data with request: DataReadRequest{bucket by intervals: active_minutes heart_minutes calories.expended distance.delta d:step_count.delta:gms:estimated_steps (2020-11-22 00:00:00 - 2020-11-22 17:04:41) +server}
    him: java.lang.IllegalStateException: hrb: 8: 
        at hii.a(Unknown Source:4)
        at qei.a(PG:2)
        at rhf.e(Unknown Source:2)
        at rhh.run(PG:11)
        at rjp.execute(PG:1)
        at rhv.r(PG:1)
        at rhv.n(PG:11)
        at rhv.l(PG:5)
        at rlm.run(PG:10)
...

Please pay attention to the line "FAILED BINDER TRANSACTION !!! (parcel size = 1330200" - google fit can't get the data from the android service because the response is too large to be returned through IPC.

Also, I'm developing an application that uses the fitness api and also I noticed that gms Task api doesn't return anything and even doesn't call "onComplete" listener in similar cases when google fit service can't deliver the result to a requester. I think a reading task should be completed anyways if Binder fails for some reason.

krobert commented 3 years ago

Hi, i'm facing the same issue. The api cannot handle large runs. Did you find any solutions?

braver-tool commented 2 years ago

Hi, I'm also facing the same issue, My google fit app have lots of data over the last 3 months. I tried to get these all data used 'setTimeRange' in DataReadRequest, which returns nothing, I mean the data between the range is nearly 1800(approx), and there is no exception printed in logs, also any callbacks not triggered. So we struggle to get total data from GoogleFit. I think the large data responses don't parsable. I request a pagination functionality from the server and the problem may be solved. Please file the issue and find any solution! Thankyou);-

Bethany91live commented 1 year ago

Hello! My google fit app doesn't work for 2 months. I started to debug the application and I was able to find these errors from adb logcat:

2020-11-22 17:04:48.804 16111-16143/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!  (parcel size = 1330200)
E/FitAndroidFutures: While reading data with request: DataReadRequest{bucket by intervals: active_minutes heart_minutes calories.expended distance.delta d:step_count.delta:gms:estimated_steps (2020-11-22 00:00:00 - 2020-11-22 17:04:41) +server}
    him: java.lang.IllegalStateException: hrb: 8: 
        at hii.a(Unknown Source:4)
        at qei.a(PG:2)
        at rhf.e(Unknown Source:2)
        at rhh.run(PG:11)
        at rjp.execute(PG:1)
        at rhv.r(PG:1)
        at rhv.n(PG:11)
        at rhv.l(PG:5)
        at rlm.run(PG:10)
...

Please pay attention to the line "FAILED BINDER TRANSACTION !!! (parcel size = 1330200" - google fit can't get the data from the android service because the response is too large to be returned through IPC.

Also, I'm developing an application that uses the fitness api and also I noticed that gms Task api doesn't return anything and even doesn't call "onComplete" listener in similar cases when google fit service can't deliver the result to a requester. I think a reading task should be completed anyways if Binder fails for some reason.

No worries

Bethany91live commented 1 year ago

@lawsuit

lambui09 commented 3 months ago

same issue. I have 86400 record in 2 months. But return error when request: 5022: Cannot bucket into more than 86400 intervals.