Commit Graph

244 Commits (10b5c571bb220e7fff96e7605261698a6d004cd7)

Author SHA1 Message Date
cpfeiffer 854a7ee1ac Avoid NPE when DeviceInfo is null
(when a notification comes in while we're connected, but not initialized yet)
2015-12-09 17:55:46 +01:00
cpfeiffer 794ae6d800 Well, we better return something usefull instead of just false :-]
Please try again #178
2015-12-09 17:54:54 +01:00
Andreas Shimokawa 18726eca33 Pebble: Correct setting the timezone on firmware 3.x (pebble expects the "ID" eg. Europe/Berlin) 2015-12-08 14:59:24 +01:00
Andreas Shimokawa 3ac00a004f Pebble: Support installing .pbl (language files) on firmware 3.x 2015-12-08 12:07:14 +01:00
Andreas Shimokawa f20e11d517 Pebble: Increase maximum notification body length from 255 to 512 bytes on firmware 3.x 2015-12-07 12:25:34 +01:00
cpfeiffer 365ce61cb6 Support for firmware upgrade/downgrade on Mi 1A.
I hope I didn't break firmware upgrades on some Mi 1 models
other than mine (my hardware revision is 2).

Upgrades for Mi 1S are currently disabled, we need some brave
souls who can help us test this.

Closes #173
Also see: #169
2015-12-07 01:14:06 +01:00
cpfeiffer 6b053c4240 Make method protected, for future use 2015-12-07 01:13:47 +01:00
cpfeiffer aa60ce4b56 Disable some notifications also for update-firmware operation
(introduce a common superclass to do that)
2015-12-07 01:13:47 +01:00
cpfeiffer 8cd6bf09a4 Fix NPE when an error occurs during activity synchronization
(activityDataStruct is null after handleActivityFetchFinish())

Also remove superfluous log statement -- toasts are logged as well.
2015-12-07 01:13:47 +01:00
Andreas Shimokawa b05cfc6aac Pebble: fix crash on firmware 3.x when pebble requests a pbw that is not in Gadgetbridge's cache 2015-12-06 17:56:46 +01:00
Andreas Shimokawa 39e09946cd fix missing assignment *cough* 2015-12-06 15:39:34 +01:00
Andreas Shimokawa 112dfa184a Catch securtiy exception if contacts can't be read on Android 6.0. Closes #182 2015-12-06 15:32:48 +01:00
Andreas Shimokawa aca0149b45 use DeviceHelper in DeviceSupportFactory to determine supported device from bt addresses
This fixes a bug when Pebble was detected as Mi when unpaired.
Since we were not able to read the device name, it was considered MI by duplicated and
faulty code. Fixes #177.
2015-12-01 11:39:34 +01:00
cpfeiffer 40d7f3b19f Improved log output for progress actions 2015-11-30 23:42:59 +01:00
cpfeiffer 4b42a9a4f6 Improved log output for abort actions 2015-11-30 23:42:59 +01:00
cpfeiffer 8585572197 Improved log output for plain actions 2015-11-30 23:42:59 +01:00
cpfeiffer bd0716ba58 Some more lint warnings fixed 2015-11-23 23:04:46 +01:00
cpfeiffer 81c2f657bd Some lint fixes 2015-11-23 22:46:12 +01:00
cpfeiffer a53f1c21eb Simplification 2015-11-23 21:39:08 +01:00
Andreas Shimokawa 1734e58f70 Pebble: Initial try to interpret sleep 2015-11-15 10:30:28 +01:00
cpfeiffer f349846f4a Another small change to BTLE device connection #156 2015-11-13 23:53:48 +01:00
cpfeiffer 58cfd0fef9 For a start, connect with "false" #156
My connection problems went away with this. Let's see how it works out.
2015-11-03 20:23:48 +01:00
cpfeiffer c27459b6cc It's recommended to cancel discovery before connecting 2015-11-01 23:32:25 +01:00
cpfeiffer 952a383856 Use batched database commits for Mi Band activity samples 2015-11-01 21:41:36 +01:00
cpfeiffer d4f070f0aa Simplify external dir handling again -- prefer the primary dir
The primary external dir is often a user-partition on the internal
storage medium. This one is safe in multi-user environments.

The "removable storage" (sdcard) on the other hand can be read by
everyone. If the former is not available or not writable, use the
latter.

closes #153
2015-11-01 20:49:50 +01:00
cpfeiffer 1f599c660f Improved file and error handling 2015-10-28 23:54:08 +01:00
cpfeiffer 54c316778b Add exception to GB.toast() to get it logged 2015-10-25 00:13:32 +02:00
Andreas Shimokawa f287c04ad9 Pebble: simplify Misfit data parsing, since all assumptions seem to be wrong :/ 2015-10-24 11:12:40 +09:00
Andreas Shimokawa e809c490dc add method for batch inserts in ActivityDatabaseHandler. Closes #150 2015-10-23 22:13:12 +09:00
Andreas Shimokawa 4aff3c8e8e Pebble: try to improve Misfit steps parsing. Should be really close now. 2015-10-22 23:56:45 +09:00
cpfeiffer c350f04fa9 Make "Locate device" work with newer firmware and MI1A. (#136)
Separate the different notification logic into distinct strategy classes.
2015-10-22 00:53:27 +02:00
cpfeiffer 88fb81f921 Make onStartCommand() synchronized, to be sure
(or does Android take care of not calling this concurrently?)
2015-10-22 00:52:45 +02:00
cpfeiffer ac120dc7d6 Small improvement to connect() 2015-10-22 00:32:16 +02:00
Andreas Shimokawa 44a36a5f1d Pebble: First try to receive at least steps from the Misfit pebble watchapp 2015-10-21 23:11:59 +09:00
cpfeiffer aa5749cd40 Some improvements to live activity.
Still rather inaccurate due to missing timing information.
2015-10-21 00:36:18 +02:00
cpfeiffer 52f3ca5253 Always name things positively. Negating things is bad for comprehension :-) 2015-10-19 23:36:10 +02:00
cpfeiffer 5a3990b9d2 Guard logging with LOG.isDebugEnabled() 2015-10-19 20:56:56 +02:00
Carsten Pfeiffer 4096e50681 Merge pull request #146 from sarg/master
Fix DeviceInfo checksum function.
2015-10-19 20:56:49 +02:00
Daniele Gobbetti cee03debbb - add code to send the confirmation of the activity data transfer after a timeout.
==> This is currently commented out because it was done to solve #141 but while doing this #143 popped out.
- send a stop_sync message to the band if the data doesn't fit the buffer. This way the data remains on the band.
2015-10-19 16:17:03 +02:00
Daniele Gobbetti 6460b391d9 Be dump the content of the notification to the debug log 2015-10-19 15:16:21 +02:00
Sergey Trofimov 94cbf2f301 Fix DeviceInfo checksum function. 2015-10-19 15:02:56 +03:00
cpfeiffer 4e0fed8857 Improvements to how and when alarms are sent to the device
They are now sent whenever the Alarms activity is finished.
Display "All alarms disabled" when no alarm is enabled.

Unrelated: pass exceptions to GB.toast() where applicable.
2015-10-18 23:52:59 +02:00
cpfeiffer 86d17c7792 Pass the exception to GB.toast() 2015-10-18 23:43:27 +02:00
cpfeiffer ef15bf8ce8 Prevent firmware update for Mi Band 1A for now #136 2015-10-18 22:57:04 +02:00
cpfeiffer dcd776e09a Attempt to fix never finishing activity data fetching #142
(by disabling unrelated notifications)
2015-10-18 22:27:52 +02:00
cpfeiffer 7a44ea9596 Small comment 2015-10-18 21:33:07 +02:00
Sergey Trofimov d57c6166b9 Fix pairing with MI1A 2015-10-18 21:54:22 +03:00
Sergey Trofimov 7591d4a8af Fix typo 2015-10-18 18:29:41 +03:00
Sergey Trofimov a1fd31c260 Show toast when no valid DeviceSupport found for pairing. 2015-10-18 09:34:51 +03:00
Sergey Trofimov 1c1f8e8535 Make DeviceSupportFactory recognize device names starting with MI 2015-10-18 09:20:18 +03:00
Andreas Shimokawa a9186791dc register/unregister receivers at runtime instead of enabling/disabling them via packagemanger 2015-10-16 00:23:16 +09:00
Andreas Shimokawa cd7acf6572 Pebble: Do not reboot after language file installation (does not seem to be necessary)
NOTE: This still does not work since crc calculation is missing
2015-10-07 00:44:29 +09:00
Andreas Shimokawa 5860c4f4f9 Pebble: WIP support for flashing language files (.pbl)
NOTES:
- YOU SHOULD NOT TRY THIS YET ;)
- This was only tested with the unoffical japansese language pack
- Problably needs proper crc calculation (I just hardcoded the one for the japanese language pack)
2015-10-06 23:56:01 +09:00
Andreas Shimokawa d21b5e68b5 Pebble: Cleanup AppMessage handlers 2015-10-04 22:53:11 +09:00
cpfeiffer 9db7d13a94 Log any exceptions during ble callbacks, if any #91 2015-10-04 00:00:53 +02:00
cpfeiffer 5b8bf468f5 Remove some superfluous checks 2015-10-03 23:52:33 +02:00
cpfeiffer 321c0ff125 Log when we get bogus timestamps #91 2015-10-03 23:42:22 +02:00
cpfeiffer d6f9eac711 Revert to previous BLE connection method:
- first, connectGatt(true) to support automatic (re-) connection
- second, bluetoothGatt.connect() to connect immediately
2015-10-03 00:21:31 +02:00
cpfeiffer 586d959055 Merge branch 'master' into live-activity-data 2015-10-02 23:49:03 +02:00
cpfeiffer baa2d0b27a Displaying live activity data works well enough 2015-10-02 23:38:07 +02:00
Daniele Gobbetti d14ccf1c5c Get device name from the BLE Standard Characteristic.
Always log read and notify characteristics, even if unhandled.
Changed Log statements for write action to make them clearer.
2015-09-28 16:47:43 +02:00
Daniele Gobbetti f8edf5c525 Move BLE standard characteristic and services debug names to the right class. 2015-09-28 16:28:08 +02:00
Daniele Gobbetti 18f952250a First working code for vibrations on firmware version 1.0.10.14 2015-09-28 12:53:42 +02:00
Daniele Gobbetti deea721090 Add verbatim Official BLE Services, Descriptors and Characteristics.
Move the already defined constants to these new classes.
2015-09-28 12:51:01 +02:00
cpfeiffer 4250a002b4 Merge branch 'master' into live-activity-data 2015-09-27 00:16:04 +02:00
Daniele Gobbetti 720eaa111d Add generic service for immediate alert and prepare the code to support characteristics from different services 2015-09-25 17:45:06 +02:00
Andreas Shimokawa e3533a2b18 Pebble: Allow muting (blacklisting) Apps from within generic notifications on the watch
Closes #113
2015-09-25 00:53:40 +02:00
Andreas Shimokawa 1d41f2f8e4 Refactoring
The notfification APIs now use NotificationSpec as their only parameter, which
contains all information (required and optional ones).
We no longer have separate methods and actions for SMS/EMAIL/GENERIC anymore.
The type of notification is important now, not how we received them technically.
2015-09-24 14:45:21 +02:00
Daniele Gobbetti e1ea8270ca Add a progress notification for the activity data transfer. 2015-09-24 14:03:01 +02:00
Daniele Gobbetti 5578691321 Fix progress bar 2015-09-24 14:02:33 +02:00
Andreas Shimokawa ab78d167d9 update CHANGELOG.md 2015-09-23 23:53:16 +02:00
Andreas Shimokawa 3bb673d33a Pebble Time Round support ("chalk" platform) 2015-09-23 23:20:49 +02:00
cpfeiffer d9b4bbe550 Move activity data and progress manipulation into dedicated methods
I did this in trying to understand the code better and to easier allow
for error handling/transaction rollback to be added.
2015-09-23 23:16:42 +02:00
cpfeiffer 3852fcd756 Reuse MiBandDateConverter 2015-09-23 23:16:42 +02:00
Andreas Shimokawa f6ef72e9fb Pebble: fix some hardware revision strings to match strings in firmware json file
This should enable firmware upgrade on Pebble Time and might fix pbw installation on Pebble Time Steel
2015-09-20 18:27:41 +02:00
Andreas Shimokawa 60b24e004a Pebble: Fix bug for Pebble Intent Notifications not arriving on FW 2.x 2015-09-19 21:35:02 +02:00
Andreas Shimokawa 0c4dbf75e0 Pebble: fix for PebbleKit AppMessages containing non-latin characters 2015-09-19 15:32:09 +02:00
Andreas Shimokawa e1b02e1be4 Pebble: add option for PebbleKit support (default is disabled)
Also fix an endless loop when number of reconnects is set to 0
2015-09-19 12:49:34 +02:00
Andreas Shimokawa e6a8a1a36c Pebble: Better support for 8 and 16 bit integers in AppMessages 2015-09-18 00:03:34 +02:00
Andreas Shimokawa 041bd1a7f4 Treat Conversations messagess as chat messages, even if arrived via Pebble Intents (which is the default) 2015-09-17 23:08:05 +02:00
Andreas Shimokawa a5ef952e37 Pebble: Implement WIP outbound communication with PebbleKit Android Apps
This improves #106

Pebblebike aka Ventoo works to some extent sometimes now ;)
2015-09-17 19:21:22 +02:00
Daniele Gobbetti b73ff49681 Use data type constant instead of hardcoded value 2015-09-17 16:56:23 +02:00
Andreas Shimokawa 58bbcb0035 Pebble: allow to configure reconnect attempts
This should help #89
2015-09-17 15:31:12 +02:00
Andreas Shimokawa 6e3c839608 Allow to select preferred music player in preferences, closes #112 2015-09-16 00:53:54 +02:00
Andreas Shimokawa de74a033f6 Try to support controlling multiple music players
This tries to control the last player that played a (new) song.
It is very limited since we cannot get the source of an intent.
Instead we try to guess from the Action.
The problem is that we cannot support players that use only the action "com.android.music.XXXX" and not something own.
Also try to blindly support getting spotify metadata (for testing #112)
2015-09-15 01:36:33 +02:00
Julien Pivotto 21d59b23c1 Allow QKSMS notifications to be handled as a generic notification if SMS notification mode is set to "never"
This makes it possible to use the "Open on Phone" and individial dismiss feature with QKSMS.
2015-09-13 22:51:05 +02:00
Andreas Shimokawa 95e22a4e32 Pebble: Allow stopping apps though PebbleKit messages (also in the API) 2015-09-13 21:44:26 +02:00
Andreas Shimokawa 6fff4fb7ba Pebble: support byte arrays for Appmessages (including PebbleKit ones) 2015-09-13 18:37:59 +02:00
Andreas Shimokawa 9a32be97cb Pebble: work towards PebbleKit support #106
- Untested features have to be turned on.
- We will accept data from any source.
- One way, we do not send out replies.

This already works with the minimalistic sports demo from the sdk
2015-09-13 18:20:15 +02:00
Andreas Shimokawa d3dbde6917 Some refactoring:
- Put Pebble icon ID constants in its own class
- remove ICON_ and COLOR_ prefixes from constants
2015-09-13 15:21:07 +02:00
Julien Pivotto 1027336591 Pebble: Support colors in 3.x notifications (Pebble Time)
* Generic notifications are still red
* Colors are in a separated static class

Closes #120.
2015-09-13 14:54:43 +02:00
Andreas Shimokawa 4f80844016 noficicaion_kind -> notificationKind 2015-09-13 13:38:11 +02:00
Andreas Shimokawa 44d8294f8c Pebble: use Hipchat icon for chat notifications on FW 3.x 2015-09-13 13:32:18 +02:00
Andreas Shimokawa a85c04c02a Pebble: use constant for icons where possible 2015-09-13 12:55:10 +02:00
Julien Pivotto d50a82d495 Pebble: Set application icons for generic notifications
Closes #116.
2015-09-13 00:39:53 +02:00
Julien Pivotto 986e7e0450 Improve Pebble Time notifications icons
* Add a list of icons in the source code
* Generic notification now use the correct icon instead of the SMS icon
2015-09-12 22:14:36 +02:00
cpfeiffer 80d15573af Avoid tiny window where a gatt callback of an operation could be unset 2015-09-10 00:00:52 +02:00
cpfeiffer c23905070c Some more logging improvelets 2015-09-09 23:39:57 +02:00
cpfeiffer 22a9ff1819 Log when no listener is registered for a characteristic change 2015-09-09 23:23:38 +02:00
cpfeiffer e80a3cc591 Log the number of samples being flushed #91 2015-09-09 22:33:06 +02:00