b6d6986b62
Adding and disposing remote data channels is done from different threads; they are added from the WebRTC signaling thread when "onDataChannel" is called, while they can be disposed potentially from any thread when "removePeerConnection" is called. To prevent race conditions between them now both operations are synchronized. However, as "onDataChannel" belongs to an inner class it needs to use a synchronized statement with the outer class lock. This could still cause a race condition if the same data channel was added again; this should not happen, but it is handled just in case. Moreover, once a data channel is disposed it can be no longer used, and trying to call any of its methods throws an "IllegalStateException". Due to this, as sending can be also done potentially from any thread, it needs to be synchronized too with removing the peer connection. State changes on data channels as well as receiving messages are also done in the WebRTC signaling thread. State changes needs synchronization as well, although receiving messages should not, as it does not directly use the data channel (and it is assumed that using the buffers of a disposed data channel is safe). Nevertheless a little check (which in this case requires synchronization) was added to ignore the received messages if the peer connection was removed already. Finally, the synchronization added to "send" and "onStateChange" had the nice side effect of making the pending data channel messages thread-safe too, as before it could happen that a message was enqueued when the pending messages were being sent, which caused a "ConcurrentModificationException". Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com> |
||
---|---|---|
.devcontainer | ||
.github | ||
.idea | ||
.tx | ||
app | ||
contribute | ||
docs | ||
drawable_resources | ||
fastlane | ||
gradle | ||
LICENSES | ||
scripts | ||
.drone.yml | ||
.editorconfig | ||
.gitignore | ||
build.gradle | ||
CHANGELOG.md | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
detekt.yml | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
gradlew.bat.license | ||
gradlew.license | ||
LICENCE.md | ||
README.md | ||
renovate.json5 | ||
renovate.json5.license | ||
REUSE.toml | ||
SECURITY.md | ||
settings.gradle | ||
SETUP.md | ||
spotbugs-filter.xml |
Nextcloud Talk for Android 💬
Please note that Notifications won't work with the F-Droid version due to missing Google Play Services.
Video & audio calls through Nextcloud on Android
Nextcloud Talk is a fully on-premises audio/video and chat communication service. It features web and mobile apps and is designed to offer the highest degree of security while being easy to use.
Nextcloud Talk lowers the barrier for communication and lets your team connect any time, any where, on any device, with each other, customers or partners.
Why is this so awesome? ✨
Because it is self hosted!!! Audio/video calls and text chat typically require a central server. Some projects go commendably far in trying to ensure they can't see the data, so nobody, not government, advertising company or somebody who broke in the servers, can follow conversations. But the servers still have to mediate every call and text message, allowing them to map out who talks to who and at what time. This 'metadata' is as useful, if not more, to track people, than the full content, especially for mass surveillance purposes. Even if the data is not stored by the chat server, the hosting provider or a hacker could simply gather the data.
By hosting your own server, all meta data stays on your server and thus under your control!
If you have suggestions or problems, please open an issue or contribute directly :)
How to contribute 🚀
If you want to contribute to Nextcloud, you are very welcome:
- on our public Talk team conversation
- our forum at https://help.nextcloud.com
- for translations of the app on Transifex
- opening issues and PRs (including a corresponding issue)
Contribution Guidelines 📜
GPLv3. All contributions to this repository are considered to be licensed under the GNU GPLv3 or any later version.
Please read the Code of Conduct. This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.
Please review the guidelines for contributing to this repository.
More information how to contribute: https://nextcloud.com/contribute/
Start contributing 🛠️
Make sure you read SETUP.md and CONTRIBUTING.md before you start working on this project. But basically: fork this repository and contribute back using pull requests to the master branch. Easy starting points are also reviewing pull requests and working on starter issues.
Testing 🧪
So you would like to contribute by testing? Awesome, we appreciate that very much.
To report a bug for the alpha or beta version, just create an issue on github like you would for the stable version and provide the version number. Please remember that Google Services are necessary to receive push notifications.
Beta versions (Release Candidates) 📦
via Google Play
Sign up at Google Play Beta channel to get Release Candidates via Google Play.
via github
You can also get the Release Candidates at github releases.
Alpha versions
via Google Play
To become an alpha tester you have to be signed up for the Google Play Beta channel and additionally you have to join the Alpha testing Google Group. After that you will receive the alpha versions via the Play Store (initially, this might take some minutes after signing up). However, in the Play Store the app will still be named "Nextcloud Talk (Beta)" even if you are an alpha tester, but you will receive the alpha versions. If a beta was released that is newer than the alpha version, you will get the beta in the alpha channel.
via Download page
In addition to google play, the alpha and beta apps can also be obtained from the Nextcloud Download page Please make sure to remember that these versions might contain bugs and you don't use them in production.
Support ⛑️
If you need assistance or want to ask a question about the Talk Android app, you are welcome to ask for community help in our forums. If you have found a bug, feel free to open a new issue on GitHub. Keep in mind, that this repository only manages the Nextcloud Talk for Android app. If you find bugs or have problems with the server/backend, you should ask the Nextcloud server team for help!
Notifications
If you have problems to receive talk notifications on your android phone, please have a look at this checklist.
Credits 📜
Ringtones 🔔
- Ringtones by Librem author: feandesign
- Telefon-Freiton in Deutschland nach DTAG 1 TR 110-1, Kap. 8.3 author: arvedkrynil
Remarks 📜
Google Play and the Google Play logo are trademarks of Google Inc.