Commit graph

10592 commits

Author SHA1 Message Date
Eric House
61dc8e837e cleanup 2018-12-12 22:21:02 -08:00
Eric House
c2f5949623 use AutoCloseable rather than a hack of my own 2018-12-11 15:14:51 -08:00
Eric House
f7258f29e8 saw a crash, so gather more info if it happens again. 2018-12-11 14:40:57 -08:00
Eric House
68bb8a1268 fix bluetooth bootstrapping
Separate processing of sockets from accepting them so that when an ACL
CONN notification is received and we open a socket (but don't yet have a
Service running because the ACL thing is most likely for some other app)
we can set it aside to be processed once we do have a service. Use the
same block-until-non-null thing as in RelayService to keep that thread
free of NPEs.
2018-12-11 14:38:40 -08:00
Eric House
48c06acef5 new debug util method 2018-12-11 08:28:07 -08:00
Eric House
4f8f14c83b kill thread when wait() fires InterruptedException
Rather than just dropping it and going back to a wait that will likely
last forever. I *think* wait() throwing that exception means the
thread's being killed, in which case the exception should be thrown up
to the containing loop that will then exit.
2018-12-11 06:57:59 -08:00
Eric House
f2322d7e81 cleanup (no behavior change) 2018-12-11 06:57:18 -08:00
Eric House
bfad324bb4 add stop button to notification
And keep the service alive (and the notification present) for 15
minutes.
2018-12-10 19:17:05 -08:00
Eric House
ea03c855e4 cleanup: remove logs and unneeded code
pull too much logging and stuff starting service on going into
background. RelayService isn't that type of Service.
2018-12-10 11:56:40 -08:00
Eric House
e797a28a6d cleanup: use marker instance rather than instanceof 2018-12-10 10:14:17 -08:00
Eric House
0a4b8549cf Don't block UI thread until service instances released
I thought I had to stop using a service instance before returning from
its onDestroy(), but that made the UI incredibly laggy AND appears not
to be necessary. At least in a bit of testing things still work.
2018-12-10 09:45:24 -08:00
Eric House
fe6996b663 decouple networking threads from RelayService
Oreo's creating a new service instance for every single intent passed to
enqueueWork, meaning a brand new set of threads with a new queue, empty
set of messages to be retried, etc. was created every time, and all
attempts to optimize and retry were broken. So: make the threads a
static singleton that are given a Service instance from onCreate() and
told to drop it from onDestroy(). The threads proceed until they need an
instance, then block until one's available. Seems to work on Oreo and an
older Android as well.
2018-12-09 18:26:59 -08:00
Eric House
a2fa841947 new DebugUtils method 2018-12-09 18:26:59 -08:00
Eric House
c5c081e8bd make RelayService descend from JobIntentService
Required moving most of XWService into a class to which all services
could delegate what they used to inherit.

squash me
2018-12-09 18:26:59 -08:00
Eric House
5f7e4aa1b9 refactor a tiny bit 2018-12-09 18:26:59 -08:00
Eric House
9c501b19a8 get RECEIVE_SMS permission with SEND_SMS
Apparently one of the newer Android SDK levels adds the requirement to
have RECEIVE_SMS permission in order for a broadcast receiver to get
called. Meaning receipt didn't work even if SEND_SMS had been
granted. Since they're both in the same group (for now) the OS will
grant the second silently if the first has been granted, but it still
has to be requested. So request both at the same time. This still leaves
the problem that a user who's never tried to create an SMS game won't
have been asked for either permission and so won't receive SMS
invitations, but fixing that is for a later release.
2018-12-09 18:26:59 -08:00
Eric House
3c861166de use TAG format that doesn't break logcat filtering 2018-12-09 18:26:59 -08:00
Eric House
e30466e096 include flavor in logged TAG
Tired of not being to tell variants' logs apart.
2018-12-09 18:26:59 -08:00
Eric House
7c804b9aad don't drop potential duplicate invitations after 5 seconds
Other code will take care of duplicates. This was meant to avoid a race
condition, for which 5 seconds is enough. Blocking forever complicates
testing.
2018-12-09 18:26:59 -08:00
Eric House
c4ac96ede8 fix NPE (race condition around deletion?)
Check for null. Not sure how I got it there, but there's little harm in
failing silently.
2018-12-09 18:26:59 -08:00
Eric House
95c11eec07 don't try to connect to non-phones
When a device is paired but not a phone (or computer, which is how
tablets identify), don't bother trying to scan it.
2018-12-09 18:26:59 -08:00
Eric House
051aeba57c fix crash by not creating Handler until on UI thread
Receiver is created and installed by a non-UI thread sometimes so can't
create the Handler there. onReceive() is called on an ok thread however
so create it there on demand. Fixes crash that showed when receiving
relay messages in background.
2018-12-09 18:26:59 -08:00
Eric House
68ae9790b4 launch service from ACTION_ACL_CONNECTED
Fire up the receiver thread, and start the service, on receipt of this
ACTION (if they're not already running.) On start, the service takes
over the thread and begins dispatching messages. Works to launch the app
when it's not running and in most cases, though messages received before
the service launches are currently dropped, things seem to work.
2018-12-09 18:26:59 -08:00
Eric House
3dbec328af fix NPE
It happened when too many timers were firing, but I think this code's
better anyway.
2018-12-09 18:26:59 -08:00
Eric House
271d43808f kill foreground service on a timer
reset timer on receiving meaningful data and on moving app to
background. If it fires and we're in background, kill the service.
(There's currently no way to restart it except bringing the app into the
foreground. Fixing that's coming.)
2018-12-09 18:26:59 -08:00
Eric House
c8fe57cc78 make listener thread static
remove relationship with BTService so it can be created independently.
2018-12-09 18:26:59 -08:00
Eric House
e984b10fea remove option of disabling foreground service
Since it's not going to be running all the time any more.
2018-12-09 18:26:59 -08:00
Eric House
d94821feb4 btinvite dlg shows results of scan not all paired devs
Moving toward a better BT invite experience: use BTService to scan for
ourselves on all paired devices, and only allow selecting from among
those on which we're running (and so likely to respond to an
invitation.)
2018-12-09 18:26:59 -08:00
Eric House
ece125c5dc change foreground-service notification text 2018-12-09 18:26:59 -08:00
Eric House
1e42156f4a remove assert
Constructor is called from JNI code and so not on the UI thread.
2018-12-09 18:26:59 -08:00
Eric House
faeaa60f87 replace junit's assert with my own
And have it log before throwing. Should be easier to track down asserts
coming from jni callbacks this way than in the C code.
2018-12-09 18:26:59 -08:00
Eric House
eaae9ed1c1 Always call startForeground after startForegroundService
It's an error to e.g. stopSelf() without having called startForeground,
so do it even when about to exit.
2018-12-09 18:26:59 -08:00
Eric House
0a0bd54ec7 include new permission to install third-party apks
Fixed upgrade of Dbg variant not working on Oreo.
2018-12-09 18:26:59 -08:00
Eric House
8bd4613c2a include X86 native library again
It's a pain to have to change code to run in Genymotion, and to have
upgrade not testable using Genymotion. Consider verting this change
before next release.
2018-12-09 18:26:59 -08:00
Eric House
50f448bb1f fix to contact relay in foreground on Oreo+
Background still needs a lot of work.
2018-12-09 18:26:59 -08:00
Eric House
ff2192f659 fix path name string causing JNI crash on emulator
And catch NPE that also seems to be emulator-only
2018-12-09 18:26:59 -08:00
Eric House
9eec5c37ef fix path name string causing JNI crash on emulator 2018-11-29 09:30:14 -08:00
Eric House
91828cb851 add more google()
still trying to fix travis builds
2018-11-28 21:21:48 -08:00
Eric House
b2bf3a6e80 move google() above maven (to fix travis?) 2018-11-28 20:38:43 -08:00
Eric House
ce3cb62f02 add reversed version of btservice notification icon
For the Dbg variant to match its normal notification icon.
2018-11-28 19:35:24 -08:00
Eric House
fc699caaa8 ensure channel id always setup before use 2018-11-28 19:27:32 -08:00
Eric House
7eb278033a revert change setting notifiction priority low 2018-11-28 19:20:43 -08:00
Eric House
843c95e7ae new icon for omnipresent BTService notification 2018-11-27 11:27:18 -08:00
Eric House
988ac55eaa tweak apk-cmp script 2018-11-27 10:06:38 -08:00
Eric House
0dbc976561 Merge branch 'android_branch' into making-it-work-with-api26 2018-11-24 13:19:34 -08:00
Eric House
88fe2739c1 fix crashes (NPE and RelayService trying to run in background)
Still need to figure out what RelayService does. It needn't run for long
except where GCM isn't present.
2018-11-24 13:04:14 -08:00
Eric House
eb6831ea12 add bt-in-background preference
And clear it from a button in the alert that's posted when the
foreground service notification is selected.
2018-11-23 09:47:18 -08:00
Eric House
f8e15bd3a0 add explanation for foreground service notification 2018-11-23 08:21:52 -08:00
Eric House
2ba5982ddf use foregroundService on devices that can handle it
And show the notification regardless. Tested only on pre-Oreo device so far.
2018-11-22 15:18:57 -08:00
Eric House
6177914213 add lifecycle lib (events only logged only so far) 2018-11-22 08:13:49 -08:00