Coder Social home page Coder Social logo

asteroidos / asteroidossync Goto Github PK

View Code? Open in Web Editor NEW
98.0 11.0 36.0 28.83 MB

Android application to synchronize a phone with a watch running asteroid-btsyncd.

License: GNU General Public License v3.0

Java 100.00%
hacktoberfest smartwatch asteroidos android

asteroidossync's Introduction

Contributors Stargazers Issues Good First Issues GPL License

AsteroidOS Sync


asteroidos logo

Synchronize the time, notifications and more with your AsteroidOS smartwatch.

Help us translate AsteroidOS Sync via Weblate

Explore the docs
Report Bug . Request Feature
Get it on F-Droid

Table of Contents

About The Project

AsteroidOS is an open-source operating system for smartwatches.

Freedom & Privacy

We believe that when it comes to wearable devices, users should have full control over their machines and data. AsteroidOS has been created from the ground-up with modularity and freedom in mind. For this reason, it is a free and open-source project.

Ready for your wrist

AsteroidOS unleashes the potential of your watch with up to 48 hours of autonomy and a set of apps including everything you need on a smartwatch: an agenda, an alarm clock, a calculator, a music controller, settings, a stopwatch, a timer and a weather forecast app.

Proven building blocks

AsteroidOS is built upon a rock-solid base system. Qt and QML are used for fast and easy app development. OpenEmbedded provides a full GNU/Linux distribution and libhybris allows easy porting to most Android and Wear OS watches.

Community-friendly

Since its creation in 2015, AsteroidOS has been led by Florent Revest, but is open towards external contribution and collaboration. The project is still in active development and if you want to help, make sure to check the Get Involved page.

Getting Started

AsteroidOSSync can be downloaded from f-droid here

If you don't have a device running AsteroidOS, instructions for installation can be found here

Development Instructions

To get started with a developing for AsteroidOSSync, fork and clone the project, and import into any Android IDE.

Architecture of AsteroidOSSync

The MainActivity manages the UI fragments based on the current IAsteroidDevice.ConnectionState and starts a backend that is responsible for communication with the watch.

The Bluetooth backend is the SynchronizationService. It is responsible for talking to the watch via the AsteroidBleManager and loading/unloading a service module that can talk to the watch.

A service, that implements IConnectivityService (e.g. the NotificationService), is a module that can send and receive data from a watch via a backend that implements the IAsteroidDevice interface.

Roadmap

See the open issues for a list of proposed features and known issues

Contributing

AsteroidOS is driven by a vibrant community. We would love your help!

Matrix

General discussions around AsteroidOS happen on the #asteroid:matrix.org channel on Matrix. Logs are available here.

asteroidossync's People

Contributors

532910 avatar 70h avatar bolbishvili avatar comradekingu avatar danialbehzadi avatar daniellandau avatar doomsdayrs avatar elchevive avatar emintufan avatar florentrevest avatar ilpianista avatar josprachi avatar jrtberlin avatar jsmakaayb avatar magnefire avatar milotype avatar mohammedbelkacem avatar myself5 avatar naofum avatar p-bo avatar playday3008 avatar rex07 avatar santossi avatar secularsteve avatar sourcediver42 avatar tytan652 avatar wannaphong avatar weblate avatar wendigogo avatar yarons avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

asteroidossync's Issues

Samsung 8+/Oreo - Signal messenger- no notification.

The asteroid OS sync app doesn't seem to see I have signal messenger installed, therefore no notifications are sent.

I'm happy to help test this if you let me know what is required.

Thanks for the app and all the work you have done.

Is Bluetooth Low Energy Mandatory?

Hello all,
I tried running the sync app on my phone (quite old, no BLE support). My watch (tetra) connects on Android Wear normally, but AsteroidOSSync fails to find my watch (recently received a backported BT subsystem). Is BLE mandatory for connecting my watch to my phone?

Thanks!

Issue with reliably reconnecting watch.

If I have my watch connected and wander too far from my phone the watch disconnects. Then when I get back in range the phone seems to have a hard time reconnecting. I can open the app and it will say connecting, then I get a notice on the watch saying they are connected, but the phone doesn't register the connection. So my phone will be left saying disconnected and my watch saying it is connected.

AsteroidOSSync disables vibrate mode

Hello,

I usually keep my phone in vibrate-only mode.
But since 0.13, everytime I start AsteroidOSSync, it automatically enables my ringtone.

It is probably a side-effect of #68.

Automatically reconnect on Bluetooth disconnect

I know this is a device problem, but it's something AsteroidOS could work around. Sometimes (and with that I mean quite often), my Android phone decides to kill the connection with all Bluetooth devices. My Bluetooth headset automatically reconnects, yet AsteroidOS switches to disconnected state and doesn't seem to try to reconnect. It would be great if AsteroidOS could automatically reconnect when this happens.

Text notifications getting lost

Once I connect the watch I will get the first text notification, every text after the first though will not trigger a notification on the watch.

This is with the stock Messaging app on LineageOS.

Lenok and redmi 8 wont pair/sync

if i open the asteroidos sync app and pair my watch my phone will ask me to pair it without a need to enter a pin afterwards a 2nd pair popup comes up and asks for a pin then after a minute the connection to my watch is dropped and will never be able to connect again

Orbot notification spamming watch

Hello, I have an LG G Watch (Dory) with bluetooth and the AsteroidOS Sync (installed from F-Droid).

Every second, a notification pops up on the watch with the notification from orbot. Orbot uses a persistent notification that updates with the speed over the tor network. How can I make it so that the watch ignores this notification or stops displaying it on the watch? At present it does not allow for the watch screen to turn off.

Notification actions

Hello,

On Android Wear, it is possible to swipe to various actions on a notification:
screen2
screen3 screen4

Whereas on AsteroidOS I can't execute an action from the notification:
screen

Are there any plans to support this?

Crash on start in SDK 19

If i build app on minSdk 19 i have crash

E/AndroidRuntime: FATAL EXCEPTION: main Process: org.asteroidos.sync, PID: 25870 java.lang.NoClassDefFoundError: org.asteroidos.sync.ble.MediaService at org.asteroidos.sync.services.SynchronizationService$SynchronizationHandler.handleMessage(SynchronizationService.java:99) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5299) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645) at dalvik.system.NativeStart.main(Native Method)

F-Droid Summary

F-Droid will update how we display summary text in our next app release. Summary text will now always be highlighted and prepended to the long app description.

Your long description text starts with the same text you've got in your summary. This will look redundant. I recommend to remove the summary text from your long description.

here are more infos/screenshots about this update: fdroidclient!855

Notification content

Hello,

When a notification has a text content (e.g. the content of a message), AsteroidOS does not display it:
screen2
screen

App is crashing after connecting to watch.

The app will connect to the watch then after a few seconds it will crash and close out. If you open it back up it will connect back to the watch for a few seconds before crashing again. I am including what looks like relevant part of the log.

CrashLog.txt

Harmony watch paired but not connected.

Using 0.14 from F-Droid, I was able to pair the harmony watch (a Kingwear 88 Pro, using an MT6580 chipset) with AsteroidOS Sync exactly once, to look at the options. Every subsequent attempt to connect the watch via Bluetooth has the app find the watch (it displays "harmony"), but attempting to connect to the watch has the app say that it has trouble connecting to the watch. The watch does not show up in the list of connected bluetooth devices on my Android phone (a Pixel running Android 10), and when I ask the watch to try connecting through bluetoothctrl in a ceres session, I get back the error "Failed to pair: org.bluez.Error.AuthenticationRejected"

The watch has stored the phone's bluetooth address and indicates that it is a paired device, so I believe the initial pairing procedure worked correctly, but it won't connect, and it won't display in the list of previously paired Bluetooth devices on my phone.

I'm not sure what the problem is, or even how to investigate further to try and figure out why the connection isn't working.

Phone disconnects on application close

Phone: Pixel 2 XL
Android 8.1.0 (OPM1.171019.013)

Watch: LG G Watch (Dory)
Asteroid OS Alpha 1.0

Application: AsteroidOS Sync
Version 0.8

Upon syncing my watch with my Android device via Bluetooth, the watch will work as intended, sharing messages, weather, time etc. as expected.
However, if I close the AsteroidOS Sync application (Recent Applications menu -> Swipe away) the watch will disconnect and stop communicating with the watch.
For comparison, with applications like Android Wear, if the phone-side application is closed it will still run as a background service and continue to communicate with the watch.

No incoming call notification

Currently, there is no incoming call notification. (At least on Lineage 16 [Android 9])
For this, we need theREAD_PHONE_STATE and the READ_CALL_LOG permission.

"If the receiving app has Manifest.permission.READ_CALL_LOG and Manifest.permission.READ_PHONE_STATE permission, it will receive the broadcast twice; one with the EXTRA_INCOMING_NUMBER populated with the phone number, and another with it blank." Source: TelephonyManager - developer.android.com

Should be fairly simple to implement. This issue serves primarily as a reminder for myself however, if someone has nothing to do, feel free to implement.

I should add that in combination with the "auto silence phone" feature ( #68 ) you can miss calls. So I would categorize this issue as very important.

Buttons don't fit screen

I can't tell if this silence phone thing is on or not (Fairphone 2, Android 7.1.2, AsteroidOS Sync 0.12):

image

Port for Ubuntu touch?

Thanks to the ubports community Ubuntu touch is still alive. Ubuntu touch and asteroid should be a good team.

Dissable "battery optimization"

App should request to be excluded from battery optimization. I noticed notifications would not come to my watch if phone was asleep. Once I woke the phone they would all sync.

I found the setting in the OS and told it to allow the app to run all the time and this fixed the issue.

AsteroidOSSync no found device

  • I experienced too that AsteroidOSSync no found the device after the first connection. To solve this problem I have to restart the cell, and then AsteroidOSSync detects dory again. Although the issue connection and disconnection of BT still persists in the last dev-build.

new icon idea

current one:
image

my suggestion:
image

(just a 5 minutes gimp concept)

Don't keep location lock

The app seems to constantly ask the OS for the location if set weather location automatically is turned on. This causes significant battery drain. Especially because the weather info itself doesn't update every second, the location checks should probably be about as common as the weather updates.

Crash on tapping notification

Phone: Motorola Moto E 2015 LTE
Phone OS: CyanogenMod 14.1-20161216-NIGHTLY-surnia (Android 7.1.1)
Watch: LG G Watch (dory) running the official AsteroidOS alpha 1.0 build

I see the following crash when I tap the notification (which often still says "Connected to dory"):

12-17 15:58:56.670 11527 11527 E AndroidRuntime: FATAL EXCEPTION: main
12-17 15:58:56.670 11527 11527 E AndroidRuntime: Process: org.asteroidos.sync, PID: 11527
12-17 15:58:56.670 11527 11527 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toUpperCase()' on a null object r
eference
12-17 15:58:56.670 11527 11527 E AndroidRuntime:        at com.idevicesinc.sweetblue.utils.Utils_String.normalizeMacAddress(Utils_String.java:37)
12-17 15:58:56.670 11527 11527 E AndroidRuntime:        at com.idevicesinc.sweetblue.BleManager.normalizeMacAddress(BleManager.java:3362)
12-17 15:58:56.670 11527 11527 E AndroidRuntime:        at com.idevicesinc.sweetblue.BleManager.getDevice(BleManager.java:2235)
12-17 15:58:56.670 11527 11527 E AndroidRuntime:        at org.asteroidos.sync.services.SynchronizationService$SynchronizationHandler.handleMessage(SynchronizationService.java:78)
12-17 15:58:56.670 11527 11527 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:102)
12-17 15:58:56.670 11527 11527 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:154)
12-17 15:58:56.670 11527 11527 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:6126)
12-17 15:58:56.670 11527 11527 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
12-17 15:58:56.670 11527 11527 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
12-17 15:58:56.670 11527 11527 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
12-17 15:58:56.693  1073  6207 W ActivityManager:   Force finishing activity org.asteroidos.sync/.DeviceDetailActivity
12-17 15:58:56.702  1073  6207 W ActivityManager:   Force finishing activity org.asteroidos.sync/.DeviceDetailActivity

This never seemed to happen on me on Android 6, it may have to do with bugs in the new CyanogenMod 14.1 nightlies, but most other apps remain stable.

Android Q housekeeping and discussion

With Android Pie (9) there was the introduction of AndroidX as a replacement for the support libraries. Android Q is (if you believe the annotations in Android Studio) the last version of Android that supports the use of support libraries.

What we have to/should do in my opinion:

  • Move to AndroidX
  • Implement a dark mode: Q has a system-wide dark mode that is automatically applied when in energy saving mode or via quick toggle.
    • Option A: custom dark theme (requires a lot of work but looks nice)
    • Option B: Force Dark "inverts" the app and we can exclude specific components. (probably doesn't look as polished as it could be)
    • Option C: Do nothing, leave it glaring white on phones with a dark UI.
  • Check if we use non-SDK interfaces

If someone has any additional things that we have to/should address for Q (API 29, Android 10) please feel free to comment.

Frequent pairing requests with PIN

Greetings team,

After pairing dory to One Plus 5 (android 9.0.5) the watch is spammed with pairing requests with PIN mostly when trying to reconnect (after disconnection) or sometimes when being shown as connected (on watch, but disconnected on the phone app).

Expected behaviour is for the watch to re-connect without asking for pairing each time.

Let me know if you would be needing logs.

Lenok will pair, but then loses connection and won't connect anymore

Hi there,

I have just installed AsteroidOS (1.1-nightly) on my LG G Watch R Lenok and AsteroidOS Sync (version 0.14) on my Fairphone 2 (running on LinneageOS version 16.0-20200107-MicroG-FP2).
Directly after installing Sync, I can find my Lenok and connect to it. That seems to work for a short while: I can already fiddle with some settings within the Sync-app, before I have to enter a PIN (I'm not sure if that's supposed to be possible). After entering the PIN and clicking the ok-icon on the phone, the connection between the devices drops a few seconds later. Any attempt to reconnect is met with a message "cannot communicate with lenok". I tried it again a few minutes later, at wich point the message had changed to "cannot communicate with AA:AA:AA:AA:AA:AA", which might indicate an issue with the MAC-address. If I uncouple the device, the Lenok is still in my list of devices, but reconnection is again met with the fist message. I have already uninstalled Wear OS, as that seemed to have worked for J0SH1X in #100, but that didn't change anything for me.

Any idea what might cause this?

Kind regards,

Bombatomba

Add watch update notifications

It would be nice if I could get a notification on my phone when new Asteroid builds with significant changes (bug fixes, new features) are available for download. That way I won't have to go through the IRC logs or GitHub commit history every few days.

Bass watch can't connect to phone

Hi.

I have a problem connecting my watch with my phone. It does not seems to be on the watch side because I successfully sync it with my girl friend phone. So I assume that the Android phone side is to blame.

When I try to pair the watch using AsteroidOSSync, the app detect the phone and try to connect to it. The Watch write "Connected", the phone give me options to sync with the watch and then both devices gives me a confirmation pairing key. I confirm the key on both device. The phone then write "Connecting..." and after some time, it give me a "Can't connect to Bass" toast alert and write "Disconnected" on both device.

You can see the logcat at https://nuage.libreti.net/index.php/s/69LnwGQWWyPQXzf and the bluetooth snooping log file at https://nuage.libreti.net/index.php/s/RcKdbFarDyebAwS . For the log, the watch is called "bass" and the address is "43:43:A0:12:1F:AC".

Crash on pairing with device

Hello,
i have a moto z2 play with android 7

when trying to pair with an asteroidOS install on my smartwatch 3 it crashes

Do you need any log? how can i get them?

Thanks

Launch on startup

Hello,
It would be nice to have an option to launch the app when Android starts, so we don't have to remember to launch it after a reboot.

Find Alternative to SweetBlue

SweetBlue, the BLE library we use, is deprecated.
SweetBlue v3 is expensive, proprietary and closed source.
Although the code has some entertaining value (unnecessary code, code styling issues, deprecated APIs all over the place,...) I don't have any sentimental thoughts about it and we should replace it.

We have the following options:

  • Search for a maintained library with a similar feature set (I haven't found one yet)
  • Write and maintain our own library (a lot of work)
  • Fork the library and maintain it (headaches and entertaining code reviews included)
  • Use the native Android BLE stack (not a great option)

I think the best option would be to write a new library that uses the same interface to make it a 'drop-in' replacement.

Sync more often

Currently, data are only synchronized on connection.
Some data should be synchronized daily (for instance weather data), I guess we could use an AlarmManager for that.
Some data should be synchronized only when changed (for instance, time and date), I guess we could filter ACTION_TIME_CHANGED and ACTION_TIMEZONE_CHANGED intents for that.

add caldav sync for events app

Hello!
I was wondering if there was any plans to get the events app to sync using caldav to sync events with nextcloud?

Not sure if I should be making this issue on the events app, or here (or both!), but it would be really useful!

Feature Request: Disable phone notifications when watch is connected

Currently with AsteroidOSSync, if a notification is received, the watch and phone will both vibrate.

Conversely, Wear OS (Former Android Wear) has options to "Silence phone while wearing watch", with toggles to:

  • Silence incoming calls
  • Silence alerts and notifications

Such options could be added under the existing "Notification settings" menu of AsteroidOSSync, as an alternative to per-app settings for the watch.

Note: This can likely be implemented using the setRingerMode API, with either RINGER_MODE_SILENT or the depreciated VIBRATE_SETTING_OFF flags.

Weather-related crash on establishing watch connection

Phone: Motorola Moto E 2015 LTE
Phone OS: CyanogenMod 14.1-20161216-NIGHTLY-surnia (Android 7.1.1)
Watch: LG G Watch (dory) running the official AsteroidOS alpha 1.0 build

How to reproduce:

  1. Start AsteroidOS Sync app
  2. Scan for watches
  3. Click dory
  4. Wait for the state to switch to Connected

Expected result:
The watch stays connected and everything works without issue.

Actual result:
AsteroidOS Sync instantly crashes with the following log (I have hidden the app ID to make it less easy to scrape for bots and the uuid for my privacy):

12-17 15:26:07.700 10131 10162 D OkHttp  : --> GET http://api.openweathermap.org/data/2.5/forecast?appid=<hidden>&q=NewYork http/1.1
12-17 15:26:07.700 10131 10162 D OkHttp  : --> END GET
12-17 15:26:07.709 10131 10131 D BluetoothManager: getConnectionState()
12-17 15:26:07.709 10131 10131 D BluetoothManager: getConnectedDevices
12-17 15:26:07.714 10131 10131 D BluetoothGatt: setCharacteristicNotification() - uuid: <hidden> enable: true
12-17 15:26:07.754 10131 10162 D OkHttp  : <-- 200 OK http://api.openweathermap.org/data/2.5/forecast?appid=<hidden>&q=NewYork (53ms)
12-17 15:26:07.754 10131 10162 D OkHttp  : Server: openresty
12-17 15:26:07.754 10131 10162 D OkHttp  : Date: Sat, 17 Dec 2016 14:26:07 GMT
12-17 15:26:07.754 10131 10162 D OkHttp  : Content-Type: application/json; charset=utf-8
12-17 15:26:07.754 10131 10162 D OkHttp  : Transfer-Encoding: chunked
12-17 15:26:07.754 10131 10162 D OkHttp  : Connection: keep-alive
12-17 15:26:07.754 10131 10162 D OkHttp  : X-Cache-Key: /data/2.5/forecast?q=newyork
12-17 15:26:07.754 10131 10162 D OkHttp  : Access-Control-Allow-Origin: *
12-17 15:26:07.754 10131 10162 D OkHttp  : Access-Control-Allow-Credentials: true
12-17 15:26:07.754 10131 10162 D OkHttp  : Access-Control-Allow-Methods: GET, POST
12-17 15:26:07.754 10131 10162 D OkHttp  : OkHttp-Sent-Millis: 1481984767728
12-17 15:26:07.755 10131 10162 D OkHttp  : OkHttp-Received-Millis: 1481984767752
12-17 15:26:07.761 10131 10162 D OkHttp  : {"city":{"id":5128581,"name":"New York","coord":{"lon":-74.005966,"lat":40.714272},"country":"US","population":0,"sys":{"population":0}},"c
od":"200","message":0.0209,"cnt":27,"list":[{"dt":1481986800,"main":{"temp":272.1,"temp_min":272.1,"temp_max":274.318,"pressure":1028.82,"sea_level":1032.36,"grnd_level":1028.82,"hum
idity":100,"temp_kf":-2.22},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":92},"wind":{"speed":4.43,"deg":216.502},"rain":{"3h":0.05},"s
now":{"3h":3.7875},"sys":{"pod":"d"},"dt_txt":"2016-12-17 15:00:00"},{"dt":1481997600,"main":{"temp":273.91,"temp_min":273.91,"temp_max":275.578,"pressure":1024.33,"sea_level":1027.8
,"grnd_level":1024.33,"humidity":100,"temp_kf":-1.67},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":92},"wind":{"speed":2.58,"deg":220.
5},"rain":{"3h":2.67},"snow":{"3h":1.6025},"sys":{"pod":"d"},"dt_txt":"2016-12-17 18:00:00"},{"dt":1482008400,"main":{"temp":274.72,"temp_min":274.72,"temp_max":275.834,"pressure":10
22.84,"sea_level":1026.44,"grnd_level":1022.84,"humidity":100,"temp_kf":-1.11},"weather":[{"id":501,"main":"Rain","description":"moderate rain","icon":"10d"}],"clouds":{"all":92},"wi
nd":{"speed":2.52,"deg":229.505},"rain":{"3h":3.43},"snow":{},"sys":{"pod":"d"},"dt_txt":"2016-12-17 21:00:00"},{"dt":1482019200,"main":{"temp":275.21,"temp_min":275.21,"temp_max":27
5.763,"pressure":1022.36,"sea_level":1025.88,"grnd_level":1022.36,"humidity":100,"temp_kf":-0.56},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10n"}],"clouds
":{"all":92},"wind":{"speed":1.82,"deg":207.503},"rain":{"3h":0.4},"snow":{},"sys":{"pod":"n"},"dt_txt":"2016-12-18 00:00:00"},{"dt":1482030000,"main":{"temp":278.275,"temp_min":278.
275,"temp_max":278.275,"pressure":1020.43,"sea_level":1023.96,"grnd_level":1020.43,"humidity":98,"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10
n"}],"clouds":{"all":88},"wind":{"speed":3.31,"deg":199.502},"rain":{"3h":0.1},"snow":{},"sys":{"pod":"n"},"dt_txt":"2016-12-18 03:00:00"},{"dt":1482040800,"main":{"temp":281.632,"te
mp_min":281.632,"temp_max":281.632,"pressure":1018.25,"sea_level":1021.76,"grnd_level":1018.25,"humidity":94,"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"light rain
","icon":"10n"}],"clouds":{"all":92},"wind":{"speed":4.66,"deg":210},"rain":{"3h":0.25},"snow":{},"sys":{"pod":"n"},"dt_txt":"2016-12-18 06:00:00"},{"dt":1482051600,"main":{"temp":28
3.605,"temp_min":283.605,"temp_max":283.605,"pressure":1016.56,"sea_level":1020,"grnd_level":1016.56,"humidity":92,"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"ligh
t rain","icon":"10n"}],"clouds":{"all":92},"wind":{"speed":5.67,"deg":214.505},"rain":{"3h":0.59},"snow":{},"sys":{"pod":"n"},"dt_txt":"2016-12-18 09:00:00"},{"dt":1482062400,"main":
{"temp":286.175,"temp_min":286.175,"temp_max":286.175,"pressure":1015.49,"sea_level":1018.91,"grnd_level":1015.49,"humidity":89,"temp_kf":0},"weather":[{"id":500,"main":"Rain","descr
iption":"light rain","icon":"10n"}],"clouds":{"all":100},"wind":{"speed":6.57,"deg":217.001},"rain":{"3h":0.35},"snow":{},"sys":{"pod":"n"},"dt_txt":"2016-12-18 12:00:00"},{"dt":1482
073200,"main":{"temp":287.366,"temp_min":287.366,"temp_max":287.366,"pressure":1016.63,"sea_level":1020.04,"grnd_level":1016.63,"humidity":90,"temp_kf":0},"weather":[{"id":500,"main"
:"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":92},"wind":{"speed":6.91,"deg":223.505},"rain":{"3h":0.69},"snow":{},"sys":{"pod":"d"},"dt_txt":"2016-12-18 15:00:00
"},{"dt":1482084000,"main":{"temp":287.055,"temp_min":287.055,"temp_max":287.055,"pressure":1018.94,"sea_level":1022.32,"grnd_level":1018.94,"humidity":89,"temp_kf":0},"weather":[{"i
d":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":92},"wind":{"speed":5.45,"deg":249.502},"rain":{"3h":0.72},"snow":{},"sys":{"pod":"d"},"dt_txt":"2016-1
2-18 18:00:00"},{"dt":1482094800,"main"
12-17 15:26:07.761 10131 10162 D OkHttp  : :{"temp":282.446,"temp_min":282.446,"temp_max":282.446,"pressure":1023.58,"sea_level":1027.02,"grnd_level":1023.58,"humidity":97,"temp_kf":
0},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"clouds":{"all":92},"wind":{"speed":5.44,"deg":279.5},"rain":{"3h":2.93},"snow":{},"sys":{"pod":"d"},"
dt_txt":"2016-12-18 21:00:00"},{"dt":1482105600,"main":{"temp":279.553,"temp_min":279.553,"temp_max":279.553,"pressure":1029.88,"sea_level":1033.4,"grnd_level":1029.88,"humidity":97,
"temp_kf":0},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10n"}],"clouds":{"all":92},"wind":{"speed":5.11,"deg":327.507},"rain":{"3h":0.52},"snow":{},"sys":{
"pod":"n"},"dt_txt":"2016-12-19 00:00:00"},{"dt":1482116400,"main":{"temp":275.766,"temp_min":275.766,"temp_max":275.766,"pressure":1035.07,"sea_level":1038.65,"grnd_level":1035.07,"
humidity":100,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":88},"wind":{"speed":4.76,"deg":336.502},"rain":{},"snow
":{},"sys":{"pod":"n"},"dt_txt":"2016-12-19 03:00:00"},{"dt":1482127200,"main":{"temp":273.785,"temp_min":273.785,"temp_max":273.785,"pressure":1039.01,"sea_level":1042.67,"grnd_leve
l":1039.01,"humidity":100,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds","icon":"04n"}],"clouds":{"all":92},"wind":{"speed":4.26,"deg":346},"rain":
{},"snow":{},"sys":{"pod":"n"},"dt_txt":"2016-12-19 06:00:00"},{"dt":1482138000,"main":{"temp":272.258,"temp_min":272.258,"temp_max":272.258,"pressure":1042.25,"sea_level":1045.8,"gr
nd_level":1042.25,"humidity":100,"temp_kf":0},"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03n"}],"clouds":{"all":32},"wind":{"speed":4.37,"deg":358.
004},"rain":{},"snow":{},"sys":{"pod":"n"},"dt_txt":"2016-12-19 09:00:00"},{"dt":1482148800,"main":{"temp":269.614,"temp_min":269.614,"temp_max":269.614,"pressure":1045.21,"sea_level
":1048.91,"grnd_level":1045.21,"humidity":100,"temp_kf":0},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"clouds":{"all":0},"wind":{"speed":4.65,"deg":
6.50052},"rain":{},"snow":{},"sys":{"pod":"n"},"dt_txt":"2016-12-19 12:00:00"},{"dt":1482159600,"main":{"temp":269.846,"temp_min":269.846,"temp_max":269.846,"pressure":1047.99,"sea_l
evel":1051.52,"grnd_level":1047.99,"humidity":100,"temp_kf":0},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02d"}],"clouds":{"all":24},"wind":{"speed":3.82
,"deg":15.0016},"rain":{},"snow":{},"sys":{"pod":"d"},"dt_txt":"2016-12-19 15:00:00"},{"dt":1482170400,"main":{"temp":271.084,"temp_min":271.084,"temp_max":271.084,"pressure":1047.12
,"sea_level":1050.67,"grnd_level":1047.12,"humidity":100,"temp_kf":0},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02d"}],"clouds":{"all":12},"wind":{"spee
d":3.01,"deg":6.5007},"rain":{},"snow":{},"sys":{"pod":"d"},"dt_txt":"2016-12-19 18:00:00"},{"dt":1482181200,"main":{"temp":270.833,"temp_min":270.833,"temp_max":270.833,"pressure":1
047.98,"sea_level":1051.67,"grnd_level":1047.98,"humidity":100,"temp_kf":0},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02d"}],"clouds":{"all":24},"wind":
{"speed":2.77,"deg":356.007},"rain":{},"snow":{},"sys":{"pod":"d"},"dt_txt":"2016-12-19 21:00:00"},{"dt":1482192000,"main":{"temp":269.512,"temp_min":269.512,"temp_max":269.512,"pres
sure":1049.59,"sea_level":1053.29,"grnd_level":1049.59,"humidity":100,"temp_kf":0},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"clouds":{"all":0},"wi
nd":{"speed":3.42,"deg":11.5001},"rain":{},"snow":{},"sys":{"pod":"n"},"dt_txt":"2016-12-20 00:00:00"},{"dt":1482202800,"main":{"temp":268.748,"temp_min":268.748,"temp_max":268.748,"
pressure":1049.66,"sea_level":1053.33,"grnd_level":1049.66,"humidity":100,"temp_kf":0},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"clouds":{"all":0}
,"wind":{"speed":2.95,"deg":32.0122},"r
12-17 15:26:07.761 10131 10162 D OkHttp  : ain":{},"snow":{},"sys":{"pod":"n"},"dt_txt":"2016-12-20 03:00:00"},{"dt":1482213600,"main":{"temp":268.25,"temp_min":268.25,"temp_max":268
.25,"pressure":1049.55,"sea_level":1053.32,"grnd_level":1049.55,"humidity":100,"temp_kf":0},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":"02n"}],"clouds":{"
all":20},"wind":{"speed":2.62,"deg":19.0007},"rain":{},"snow":{},"sys":{"pod":"n"},"dt_txt":"2016-12-20 06:00:00"},{"dt":1482224400,"main":{"temp":268.425,"temp_min":268.425,"temp_ma
x":268.425,"pressure":1049.37,"sea_level":1053.1,"grnd_level":1049.37,"humidity":100,"temp_kf":0},"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03n"}]
,"clouds":{"all":48},"wind":{"speed":2.51,"deg":17.5004},"rain":{},"snow":{},"sys":{"pod":"n"},"dt_txt":"2016-12-20 09:00:00"},{"dt":1482235200,"main":{"temp":267.975,"temp_min":267.
975,"temp_max":267.975,"pressure":1049.69,"sea_level":1053.44,"grnd_level":1049.69,"humidity":100,"temp_kf":0},"weather":[{"id":801,"main":"Clouds","description":"few clouds","icon":
"02n"}],"clouds":{"all":24},"wind":{"speed":2.45,"deg":16.502},"rain":{},"snow":{},"sys":{"pod":"n"},"dt_txt":"2016-12-20 12:00:00"},{"dt":1482246000,"main":{"temp":271.103,"temp_min
":271.103,"temp_max":271.103,"pressure":1049.89,"sea_level":1053.52,"grnd_level":1049.89,"humidity":100,"temp_kf":0},"weather":[{"id":800,"main":"Clear","description":"clear sky","ic
on":"02d"}],"clouds":{"all":8},"wind":{"speed":1.88,"deg":26.5005},"rain":{},"snow":{},"sys":{"pod":"d"},"dt_txt":"2016-12-20 15:00:00"},{"dt":1482256800,"main":{"temp":273.519,"temp
_min":273.519,"temp_max":273.519,"pressure":1046.98,"sea_level":1050.59,"grnd_level":1046.98,"humidity":99,"temp_kf":0},"weather":[{"id":803,"main":"Clouds","description":"broken clo
uds","icon":"04d"}],"clouds":{"all":56},"wind":{"speed":1.61,"deg":23},"rain":{},"snow":{},"sys":{"pod":"d"},"dt_txt":"2016-12-20 18:00:00"},{"dt":1482267600,"main":{"temp":273.41,"t
emp_min":273.41,"temp_max":273.41,"pressure":1045,"sea_level":1048.55,"grnd_level":1045,"humidity":97,"temp_kf":0},"weather":[{"id":804,"main":"Clouds","description":"overcast clouds
","icon":"04d"}],"clouds":{"all":88},"wind":{"speed":1.21,"deg":355.501},"rain":{},"snow":{},"sys":{"pod":"d"},"dt_txt":"2016-12-20 21:00:00"}]}
12-17 15:26:07.761 10131 10162 D OkHttp  : <-- END HTTP (10285-byte body)
12-17 15:26:07.807 10131 10131 D AndroidRuntime: Shutting down VM
12-17 15:26:07.807 10131 10131 E AndroidRuntime: FATAL EXCEPTION: main
12-17 15:26:07.807 10131 10131 E AndroidRuntime: Process: org.asteroidos.sync, PID: 10131
12-17 15:26:07.807 10131 10131 E AndroidRuntime: java.lang.ArrayIndexOutOfBoundsException: length=27; index=27
12-17 15:26:07.807 10131 10131 E AndroidRuntime:        at org.asteroidos.sync.ble.WeatherService$2.success(WeatherService.java:84)
12-17 15:26:07.807 10131 10131 E AndroidRuntime:        at github.vatsal.easyweather.WeatherMap$3.onResponseWeatherObject(WeatherMap.java:141)
12-17 15:26:07.807 10131 10131 E AndroidRuntime:        at github.vatsal.easyweather.WeatherMap$3.onResponseWeatherObject(WeatherMap.java:122)
12-17 15:26:07.807 10131 10131 E AndroidRuntime:        at github.vatsal.easyweather.retrofit.api.WeatherRetrofitCallback.onResponse(WeatherRetrofitCallback.java:33)
12-17 15:26:07.807 10131 10131 E AndroidRuntime:        at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
12-17 15:26:07.807 10131 10131 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:751)
12-17 15:26:07.807 10131 10131 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:95)
12-17 15:26:07.807 10131 10131 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:154)
12-17 15:26:07.807 10131 10131 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:6126)
12-17 15:26:07.807 10131 10131 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
12-17 15:26:07.807 10131 10131 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
12-17 15:26:07.807 10131 10131 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
12-17 15:26:07.809  1073  2801 W ActivityManager:   Force finishing activity org.asteroidos.sync/.DeviceDetailActivity

This crash does not occur when I disallow AsteroidOS internet access through AFWall+.

Tetra Bluetooth connect/disconnect loop and "incorrect PIN"

Phone: Moto E4, Android 7.1.2 (LineageOS 14.1)
Watch: Sony Smartwatch 3, AsteroidOS 1.0

When I try to pair my watch with the sync app, the watch is spammed with notifications saying Connected, then saying Disconnected, then Connected, Disconnected, etc. This loop goes on forever unless I tap Unpair in the app.

If I try to pair it from the phone's Bluetooth settings it says, "Couldn't pair with tetra because of an incorrect PIN or passkey."

Port to Sailfish OS?

I think it would be great if you could sync your asteroidOS watch with a sailfish os phone. Two alternatives to android working together.

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.