Coder Social home page Coder Social logo

cmeng-git / atalk-android Goto Github PK

View Code? Open in Web Editor NEW
158.0 10.0 58.0 490.43 MB

xmpp/jabber client for android

License: Apache License 2.0

Makefile 0.10% C++ 0.05% C 37.26% Shell 0.17% CSS 0.01% HTML 0.03% Java 62.08% JavaScript 0.01% AIDL 0.01% Kotlin 0.31%

atalk-android's Introduction

aTalk (Jabber / XMPP)

  • an encrypted instant messaging with video call and GPS features for android

aTalk   FAQ   Google PlayStore   F-Droid   YouTube

Features

aTalk is an xmpp client designed for android and supports the following features:

  • Instant messaging in plain text and End-to-End encryption with OMEMO or OTR
  • SSL Certificate authentication, DNSSEC and DANE Security implementation for enhanced secure Connection Establishment
  • OMEMO encryption in group chat session enhancing privacy and security
  • OMEMO Media File Sharing for all files including Stickers, Bitmoji and Emoji rich contents
  • Support http file upload for file sharing with offline contact and in group chat
  • Support Stickers, Bitmoji and Emoji rich content sharing via Google Gboard
  • Send and receive files for all document types and images with thumbnail preview and gif animation
  • Auto accept file transfer with max file size option
  • Implement fault-tolerance file transfer algorithm, via Jingle File Transfer, Legacy In-Band/SOCK5 Bytestreams and HttpFileUpload protocols to ease and enhance file sharing reliability
  • Enhance and harmonize UI for file sharing in chat and chatRoom
  • Support share, quote and forward of messages and media with previews prior to sending
  • Support multi-instances of audio media player with functions: Play, Pause, Resume, Stop and Seek
  • Support unread message badges in contact and chatRoom list views
  • User selectable option for heads-up notification and quite hours
  • Share of social media links are tagged with thumbnail and title
  • Support Text to Speech and speech recognition UI with enable option per chat session (contact and group chat)
  • XEP-0012: Last Activity time associated with contacts
  • XEP-0048: Bookmarks for conference room and autoJoin on login
  • XEP-0070: Verifying HTTP Requests via XMPP entity for user authentication without password entry
  • XEP-0071: XHTML-IM Support chat messages containing lightweight text markup
  • XEP-0085: Chat State Notifications
  • XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH) with Proxy support
  • XEP-0178: Use of SASL EXTERNAL with TLS Certificates for client authentication
  • XEP-0184: Message Delivery Receipts with user enable/disable option
  • XEP-0215: External Service Discovery
  • XEP-0251: Jingle Session Transfer: Support both Unattended and Attended call transfer
  • XEP-0313: Message Archive Management
  • XEP-0391: Jingle Encrypted Transports for OMEMO encrypted media file sharing
  • Implement call waiting to accept a second incoming call by placing the in-progress call on hold; and allow switching between calls
  • Implement Jabber VoIP-PBX gateway Telephony, allowing PBX phone call via service gateway
  • Join or create room with full room configuration support for owner
  • Integrated captcha protected room user interface with retry on failure
  • Support both voice and video call with ZRTP, SDES and DTLS SRTP encryption modes
  • ZRTP crypto algorithms uses SHA-2 384, 256bit ciphers AES256 & TWOFISH-256, enabling elliptic with Curve 25519
  • SDES encryption with AES256 and AES192, acceleration using OpenSSL
  • Support simultaneous media call and message chat sessions
  • Unique GPS-Location implementation as standalone tool, send locations to your desired buddy for real-time tracking or playback animation
  • A 360° street view of your current location use for self-guided tour. The street view tracks and follows your direction of sight
  • Built-in demo for GPS-Location features
  • Integrated photo editor with zooming and cropping, user can update the avatar with ease
  • Last message correction, message carbons and offline messages (OMEMO)
  • Stream Management and mobile network ping interval self-tune optimization support
  • In-Band Registration with captcha option support
  • Multiple accounts creation
  • User selectable Themes support
  • Multi-language UI support (Bahasa Indonesia, Chinese Simplify, English, German, Portuguese, Russian, Slovak and Spanish)

XMPP Standards Implemented

aTalk works seamlessly with almost every XMPP servers available on network, limited only by servers features supported.
It supports the following XEP's, standards for XMPP clients.

Acknowledgements

Libraries used in this project:

Other contributors:

Documentation

aTalk apk build for android

  • Following development environment setups are used to build aTalk.apk
    a. Android Studio Hedgehog | 2023.1.1 Patch
    b. distributionUrl=https://services.gradle.org/distributions/gradle-8.5-bin.zip c. classpath 'com.android.tools.build:gradle:8.2.2' d. Ubuntu 22.04 with proper environment setup for development
    Note: all shell scripts in aTalk are written to run on linux OS only e.g. Ubuntu
  • aTalk uses native jni libraries, required to be built manually or downloaded prior to android NDK build.
    The static jni libraries must be built prior to android studio apk build process.
  • You must run the gradle task 'initJniLibs' to build all the jni libraries used in aTalk.
    See aTalk/jni/static_library_build directory readme files for more information
    on linux environment setup, and the execution of jni libraries build scripts.
  • You must run the gradle task 'getJniLibs' to fetch the jni libraries prior to android ndk build process.
    These libraries sources include: opus, speex and ogg

Feedback and Contributions

Cannot found an UI language and would like to help; translate the content in strings.xml.
Create a pull request or forward the file to the developer.

If you have found bug, wish for new feature, or have other questions, file an issue.

License

aTalk, android VoIP and Instant Messaging client

Copyright 2014-2022 Eng Chong Meng
    
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Privacy Policy

atalk-android's People

Contributors

butyoutried avatar cmeng-git avatar izzysoft avatar milankral avatar pirujo avatar streaps avatar susobaco avatar toha372 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  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

atalk-android's Issues

Feature request: Show photos in the conversation

Right now sending photos and videos can be done using the send attachment option. But unlike other mobile messaging apps, there is no special support for viewing photos and videos right within the app in the conversation view.

Documentation for setting up the servers

Hi,
Thank you for making this app. I would like to ask, is there any documentation how to setup the server for XMPP and VOIP and connect them together using jingle (if jingle is being used). Moreover, the documentation for modules what is it doing. If there is any, it would be great to have that available as well.

Thank you.

this happy

That this app is under active development makes me very happy!

I know, not the right use of a ticket, but there you have it.

YAY

🎉

jitsi-desktop

Is jitsi-desktop still available from jitsi.org at all?

(I guess atalk is not compatible with jitsi meet.)

MUC bookmark support?

Many XMPP clients supporrt server side bookmarking of MUCs, so that you can easily join MUCs added on another client or just saving them for later without actually joining them.

Would be great if this could also be supported in aTalk.

Android 7 turn server is not saved

Android 7 (Motorola G5 Plus, clean Android system)
I am trying to add STUN (TURN) server IP, the account setting is not saved)
Can you advise something?

Don't add account unless logged in

Steps:

  1. Write "user" and password
  2. Press add
  3. Account added in background
  4. Account is active
  5. Account is always offline (Can't login since no domain was specified)
  6. Write "[email protected]" and password
  7. Account added in background
  8. Account is active
  9. Account always offline (Can't login, bad username)
  10. Write "[email protected]" and wrongpassword
  11. Account added in background
  12. Account is active
  13. Account always offline (Can't login, bad password)

Expected behaviour:

  1. Try to login
  2. Fail
  3. Stay in the same view
  4. Ask the user to correct the input data until you can actually login

Actual results:

  1. Look at accounts screen see 3-4-6 useless accounts
  2. Feel ashamed of your dumbness
  3. Try to deactivate them, fail
  4. Start deleting them one by one

Hello, compile time error

Hello, compile time error:
org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':aTalk:ndkClean'.
at org.gradle.initialization.exception.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:99)
at org.gradle.initialization.exception.DefaultExceptionAnalyser.collectFailures(DefaultExceptionAnalyser.java:65)
at org.gradle.initialization.exception.MultipleBuildFailuresExceptionAnalyser.transform(MultipleBuildFailuresExceptionAnalyser.java:39)
at org.gradle.initialization.exception.StackTraceSanitizingExceptionAnalyser.transform(StackTraceSanitizingExceptionAnalyser.java:29)
at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:174)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:165)
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:134)
at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:58)
at org.gradle.internal.invocation.GradleBuildController$1.execute(GradleBuildController.java:55)
at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:82)
at org.gradle.internal.invocation.GradleBuildController$3.create(GradleBuildController.java:75)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:183)
at org.gradle.internal.work.StopShieldingWorkerLeaseService.withLocks(StopShieldingWorkerLeaseService.java:40)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:75)
at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:55)
at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:54)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:58)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:39)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:51)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:45)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:49)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$1.transform(InProcessBuildActionExecuter.java:46)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:78)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:46)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:31)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:42)
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:28)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:52)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:59)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:68)
at org.gradle.tooling.internal.provider.SessionScopeBuildActionExecuter.execute(SessionScopeBuildActionExecuter.java:38)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:37)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:26)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43)
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:60)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:32)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:48)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:32)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:81)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':aTalk:ndkClean'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:151)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:148)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:141)
at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionStateTaskExecuter.execute(ResolveBeforeExecutionStateTaskExecuter.java:75)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:108)
at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67)
at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:73)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
at org.gradle.execution.plan.DefaultPlanExecutor.process(DefaultPlanExecutor.java:74)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.executeWithServices(DefaultTaskExecutionGraph.java:178)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.execute(DefaultTaskExecutionGraph.java:154)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:41)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:24)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:46)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:49)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:40)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:33)
at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:383)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:247)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:159)
... 75 more

App going offline if not in foreground

Mate 9 stock Pie

Notification is ON, was excluded from battery optimizations

Server log says:

[info] <0.1064.0>@mod_stream_mgmt:transition_to_pending:451 (tls|<0.1064.0>) Closing c2s connection for [email protected]/atalk: Connection failed: connection closed; waiting 300 seconds for stream resumption

I look at the notification, still says Online, I open the app and there is says Offline.
Look at the notification now, it says Offline too.

Server logs some info again, aTalk is reconnecting.

4 more minutes pass... I upload a file that aTalk should react to.

Notification says Offline, aTalk reconnects, notification says Online and a new one appears with the file.

OMEMO issue

I can't establish omemo encryption with this program.
I have installed Conversations first, and everything worked.
Then I notice that conversations didn't had videocall so I found atalk.
With atalk the video chat works (tested to another atalk client) but the omemo text chat encyption is not working.
OTR and unencrypted chat is working though.

CreateProcess error=2, The system cannot find the file specified

I have cloned this repo and while trying to run this I got the same error,
CreateProcess error=2, The system cannot find the file specified

org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'C:\Users\admin31\AppData\Local\Android\Sdk\ndk-bundle/ndk-build''
at org.gradle.process.internal.DefaultExecHandle.execExceptionFor(DefaultExecHandle.java:231)
at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:209)
at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:355)
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:85)
at org.gradle.internal.operations.CurrentBuildOperationPreservingRunnable.run(CurrentBuildOperationPreservingRunnable.java:42)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:745)
Caused by: net.rubygrapefruit.platform.NativeException: Could not start 'C:\Users\admin31\AppData\Local\Android\Sdk\ndk-bundle/ndk-build'
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
at net.rubygrapefruit.platform.internal.WindowsProcessLauncher.start(WindowsProcessLauncher.java:22)
at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:67)
... 7 more
Caused by: java.io.IOException: Cannot run program "C:\Users\admin31\AppData\Local\Android\Sdk\ndk-bundle/ndk-build" (in directory "D:$$Gunaseelan\SIP-JITSI\atalk-android-master\aTalk"): CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
... 10 more
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.(ProcessImpl.java:386)
at java.lang.ProcessImpl.start(ProcessImpl.java:137)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 11 more

letsencrypt certificate recognized als self-signed

I'm using a letsencrypt cetificate with my private prosody server. atalk issues a warning that it is a self-signed certificate. With other clients this is not happening, e.g. Conversations and AstraChat accept it as a regular cert.

Translate to spanish

Hello, what files should I choose for the Spanish translation? (and probably the other languages of Spain)

Report bugs action should ask for storage permission

..if not granted yet, and not just crash

E (FileBackend.java:188)#getaTalkStore: Could not create atalk folder: /storage/emulated/0/Download/aTalk/atalk-logs
E (LogsCollector.java:92)#collectLogs: java.io.FileNotFoundException: /storage/emulated/0/Download/aTalk/atalk-logs.zip (No such file or directory)
E (LogsCollector.java:92)#collectLogs:   at org.atalk.android.aTalkApp.showSendLogsDialog(aTalkApp.java:517)
E (LogsCollector.java:92)#collectLogs:   at org.atalk.android.gui.About.onClick(About.java:217)
D AndroidRuntime: Shutting down VM
E AndroidRuntime: FATAL EXCEPTION: main
E AndroidRuntime: Process: org.atalk.android, PID: 24635
E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getCanonicalPath()' on a null object reference
E AndroidRuntime:        at androidx.core.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:723)
E AndroidRuntime:        at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:418)
E AndroidRuntime:        at org.atalk.persistance.FileBackend.getUriForFile(FileBackend.java:229)
E AndroidRuntime:        at net.java.sip.communicator.plugin.loggingutils.LogUploadServiceImpl.sendLogs(LogUploadServiceImpl.java:68)
E AndroidRuntime:        at org.atalk.android.aTalkApp.showSendLogsDialog(aTalkApp.java:517)
E AndroidRuntime:        at org.atalk.android.gui.About.onClick(About.java:217)
E AndroidRuntime:        at android.view.View.performClick(View.java:6648)
E AndroidRuntime:        at android.view.View.performClickInternal(View.java:6620)
E AndroidRuntime:        at android.view.View.access$3100(View.java:787)
E AndroidRuntime:        at android.view.View$PerformClick.run(View.java:26167)
E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:891)
E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:102)
E AndroidRuntime:        at android.os.Looper.loop(Looper.java:207)
E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7539)
E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)
E (UtilActivator.java:90)#uncaughtException:     at org.atalk.persistance.FileBackend.getUriForFile(FileBackend.java:229)
E (UtilActivator.java:90)#uncaughtException:     at org.atalk.android.aTalkApp.showSendLogsDialog(aTalkApp.java:517)
E (UtilActivator.java:90)#uncaughtException:     at org.atalk.android.gui.About.onClick(About.java:217)
E (ExceptionHandler.java:79)#uncaughtException:  at org.atalk.persistance.FileBackend.getUriForFile(FileBackend.java:229)
E (ExceptionHandler.java:79)#uncaughtException:  at org.atalk.android.aTalkApp.showSendLogsDialog(aTalkApp.java:517)
E (ExceptionHandler.java:79)#uncaughtException:  at org.atalk.android.gui.About.onClick(About.java:217)

omemo encryption not available (option is greyed out)

Hello,
I am trying to set up an encrypted chat, but I cannot chose omemo. My server works (prosody). I can use omemo encryption with both conversations and gajim. I tried to send unencrypted messages with atalk first (this sometimes help with establishing an omemo enabled chat), but atalk won't let me disable otr (on one device at a time). I disabled all otr options in the settings. Still I always get a 'message send failed' from one device. (Both devices are moto g falcon (2013) running lineageos (android 7).

I also tested zrtp calls -- they work when both devices are on the same wifi, but a connection cannot be established when one device uses the mobile network.

Autoretry after "undecided omemo identity" verification

Steps:

  1. write
  2. pop-up with verification, verify 2 out of 3
  3. message not sent
  4. write again
  5. pop-up with verification, verify last one
  6. message not sent
  7. write again
  8. message sent

Expected:

  1. write
  2. pop-up with verification, verify 2 out of 3
  3. pop-up with verification, verify last one
  4. message sent

F-Droid Version?

Hi, I accidentally stumbled over this app.
As it is an Apache-licensed open source app, it would be cool to see it in the F-droid store.

Currently it is hard to find this app / this repository.
Probably the "atalk.org" domain should be registered too...

Error when connection to xmpp server

Had error show when connection xmpp server:
encounter problem during xmppconnection: the following addresses faild: '_xmpp-client._tcp.chat.quangtri.gov.vn:5222' failed because: de.measite.minidns.hla.resolutionunsuccessfulException: asking for _xmpp-client._tcp.chat.quangtri.gov.vn. In SRV yielded an error response NX_DOMAIN, 'chat.quangtri.gov.vn:5222' failed because: de.measite.minidns.miniDNSException$NullResultException: the request yielded a 'null' result while resolving
Can help me

atalk asks on every start for permissions

Why won't atalk not accept that I don't want to give it access to my location, video, contacts, etc?

Shouldn't it work without any granted permission as a text messaging client?

status message / user's address is hidden

Minor UI issue:

If a user contact has set a status message, the status message is displayed instead of the jabber address. How can I figure out the jabber address, if it is hidden by a status message? Not even "Contact Info" shows the address.

I think it's also a potential phishing risk (even if I don't think it is a real threat at the moment). For example it's possible that a contact set the status message to "[email protected]" and it looks like it is the real jabber address.

call button neither displaying nor working most of time

I have installed atalk from playstore and connected to ejabberd server.
I have spent almost 1hr to call between two users( Samsung Galaxy 8 & Samsung On5). But able to call once successfully(audio only).

I have observed below problems:

  1. call button is not being displayed most of time
  2. even if it displayed, button press is not working most of time

I will try test more.

atalk does not remember changed password

  • change the password of an account on the server
  • atalk gets an authentication error
  • change the password in atalk to the new password
  • atalk connects successfully
  • next time atalk starts it tries to login with the old password

wow

This seems awesome.

Please say this isn't also the adware flavor of malware. 🍰

XEPs and RFCs support page with version

german translation

I'll start to translate strings.xml to German, if nobody else is already working on it.

Website, domain and xmpp server?

I am wondering about the project infrastructure... there seems to be some confusion over the status of the atalk.org domain and also the website hosting. In addition it might be nice to offer a default xmpp server with open registration?

I rent a basic server infrastructure and also run a Ejabberd instance, so if there is a need I can help out hosting some of it for the time being.

Just let us know what your thought are on this matter.

Discussing the possibility of adding news feed support

Hello team,

Great work with the app! I was looking at the readme file and it seems that atalk supports almost all of xmpp protocols and extension. That is a great achievement. I was thinking if it would be possible to add a news feed feature for atalk?

For instance take a look at movim that allows the users to post full posts that are publicly accessible.

The news feed feature would require the use of PUB-SUB and PEP protocols both of which are already supported by the app. This is different from private messaging where the communication is limited to parties talking. If this feature is implemented a talk can be used as a complete social media platform. Where users can post updates. Other people can reply to it or discuss it privately in their chat.

Thanks!

XEP-0184: Message Delivery Receipts

Hi,

can you please add message delivery receipts to this amazing client?
It is quite important feature on Android as mobile data can lost signal anytime and it is important to know if message actually arrives or not.

Thanks.
(Thanks for F-Droid version as well)

allow chatting and interacting also with email accounts?

The discussed support for integrating public news feeds / posts / blogs (#35) could really have great potential. (Creating a decentral social network, integrating backwards compatibility to web browsers.... There is no decentral open source frontend (app) that integrates the existing chatting and pub/sub protocols, yet... (like atalk + prosody mod_atom microblogging would).)

A natural completion might be to also make use of a library that would integrate that other online communication protocol, that is actually used by "everybody", i.e. E-Mail, in addition to XMPP:

All the needed SMTP and IMAP messaging and encryption stuff etc. is actually available with the deltachat-core library. The most interesting question might be if atalk's architecture allows to easily work with the structure of the high level C API (or its java bindings) provided by deltachat-core, see https://c.delta.chat/ ?

UI: contact context menu too small

A long touch on a contact opens the context menu:

Close current chat session
Close all active chats
[...]
Contact Info
Cancel

The menu is displayed above the touch point (your finger). On the first user the menu is very small (only one line in height), because there is not much space available above the touch point.

Setting custom notification sound

Can you please add option to set custom notification sound?
Preferably for each contact/buddy.
Because default notification sound is too quite (low volume).

Thanks

Joint effort to modernize the look?

Edit: I decided to work on my own XMPP client for Ubuntu Touch instead. But I leave this open in case people want to collaborate.

I would like to update the graphical look of aTalk taking interface graphics from other open source messaging apps. Probably Movim and/or the Telegramm client.

Is there any hints what the requirements are? Any other guidance?

I am planning some time for this probably in 4-6 weeks. (edit: hmm, early October most likely :( ) Maybe it can be a joint sprint with multiple contributors?

Implement in app downloading

...and not rely on Android Download manager which leaks user info like: Android version, Android device model.

make third-party services optional

Just as having a buld option that only includes open source free software it could make sense for privacy reasons, to have a switch to remove all code connecting to third-party services.

For example, this new:

Support downloadable Stickers, Bitmoji and Emoji rich content sharing via Google Gboard

(Possible alternative in this example might be to send the sticker with the first message.)

[Enhancement] - Uninterrupted Video Calling

checked: aTalk 1.6.2

Current aTalk application during video call, if tries to send message then video call pause until move back to call window. (personally that makes bored to use the app)
below're resources, may consider improve within upcoming releases. <3 ^_^


Request - 1 - Important

[sample]
Skype - android
https://play.google.com/store/apps/details?id=com.skype.raider&hl=en

on android app during video call even completely moved to chat window or for other task from video call window but another end user still can see him/ her without any interruption[no pause]
you can check with another skype windows http://go.skype.com/skype.download or mobile device


Request - 2
additional improvement,

[sample]
Hangout - android
https://play.google.com/store/apps/details?id=com.google.android.talk&hl=en_US

screenshot - https://prntscr.com/luw146
enhance for appear small chat window on the top for reply during video call when another end user send new message (it helps to not move to chat window always) however Request - 1 required (Important)
note: hangout pause video call same as current aTalk if moves to chat window for send message. that sample for request - 2


kindly try to have smooth UI, entire screen video call for aTalk as modern chat apps similar,
*skype.com - android
*wire.com - android (opensource) https://github.com/wireapp/wire-android (sample for UI)
it'll be great but please care about our phone battery :D

Thanks <3 ^_^

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.