Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
57903fb
Switch to NTgCalls instead of TgCalls
Laky-64 Oct 10, 2024
9513771
Added Video Calls with Camera and Screen Sharing
Laky-64 Oct 29, 2024
9cc048a
Fixed missing permissions
Laky-64 Oct 29, 2024
aa2ff70
Merge remote-tracking branch 'origin/main' into main-tgcalls
Laky-64 Oct 29, 2024
ba4de35
Updated NTgCalls Library
Laky-64 Oct 29, 2024
0885a5e
Fixed NTgCalls Build Variants
Laky-64 Oct 30, 2024
8b88b65
Updated R8 Problems
Laky-64 Oct 30, 2024
69056da
Fixed Android 14+ permissions
Laky-64 Oct 30, 2024
1dc743f
Fixed missing call closing
Laky-64 Oct 30, 2024
d805d57
Fixed Android 14+ camera permissions
Laky-64 Oct 30, 2024
f6a33e1
Switch to the new NTgCalls package name
Laky-64 Nov 1, 2024
33ce035
Merge remote-tracking branch 'origin/main' into main-tgcalls
Laky-64 Nov 1, 2024
74e918c
Updated NTgCalls Interface
Laky-64 Nov 13, 2024
a82885a
Fixed missing speaker
Laky-64 Nov 14, 2024
4825b2c
Use Library from Maven Central
Laky-64 Nov 14, 2024
0257f3f
Switch to beta3 of NTgCalls
Laky-64 Nov 16, 2024
5819bef
Return Library Version Name
Laky-64 Nov 16, 2024
ef01057
Code Cleanup
Laky-64 Nov 16, 2024
0553305
Updated NTgCalls Version
Laky-64 Mar 5, 2025
d26e5d4
Merge remote-tracking branch 'origin/main' into main-tgcalls
Laky-64 Mar 5, 2025
8164b4b
Merge remote-tracking branch 'origin/main' into main-tgcalls
Laky-64 Mar 8, 2025
65a485a
Fixed Wrong P2P Video Codecs
Laky-64 Mar 8, 2025
eb6e8f6
Fixed possible "invalid updates"
Laky-64 Mar 12, 2025
f60662b
Adapted NTgCalls to use the new beta 15 changes
Laky-64 Mar 12, 2025
76bca15
Updated Dependencies
Laky-64 Mar 12, 2025
7740057
Merge remote-tracking branch 'origin/main' into main-tgcalls
Laky-64 Mar 16, 2025
c2aeb83
Switch to stable version of NTgCalls
Laky-64 Mar 16, 2025
de44279
Merge remote-tracking branch 'origin/main' into main-tgcalls
Laky-64 May 24, 2025
04eb2bb
Fixed Deprecated NTgCalls Methods
Laky-64 May 24, 2025
393b49f
Updated Dependencies
Laky-64 Jun 1, 2025
b30f01c
Merge remote-tracking branch 'origin/main' into main-tgcalls
Laky-64 Aug 24, 2025
dc32a4f
Updates ntgcalls library to version 2.0.6
Laky-64 Aug 24, 2025
cb1e9b5
Merge remote-tracking branch 'TGX-Android/main'
Laky-64 Aug 29, 2025
78e2fb4
Merge remote-tracking branch 'TGX-Android/main'
Laky-64 Aug 30, 2025
6efe484
Added Optional NTgCalls Library Usage
Laky-64 Aug 30, 2025
bbd6883
Fixed Video Calls with latest TgX Update
Laky-64 Aug 30, 2025
1617e78
Merge remote-tracking branch 'upstream'
Laky-64 Jan 22, 2026
944b9c7
Merge remote-tracking branch 'upstream/main'
Laky-64 Feb 2, 2026
7055da8
Sync submodules with 'upstream/main'
Laky-64 Feb 2, 2026
50b94ed
Fixed merge conflicts
Laky-64 Feb 2, 2026
48536dd
Sync submodules with 'upstream/main'
Laky-64 Feb 3, 2026
cd5680e
Upgrades ntgcalls dependency
Laky-64 Feb 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,5 @@ obj
/local.properties

libc++_shared.so
*.jks
keystore.properties
10 changes: 10 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ android {

buildConfigString("THEME_FILE_EXTENSION", App.THEME_EXTENSION)

buildConfigField("boolean", "USE_NTGCALLS", config.useNTgCalls.toString())

// Library versions in BuildConfig.java

var openSslVersion = ""
Expand Down Expand Up @@ -365,6 +367,8 @@ android {
ndk.abiFilters.addAll(variant.filters)
externalNativeBuild.ndkBuild.abiFilters(*variant.filters)
externalNativeBuild.cmake.abiFilters(*variant.filters)

externalNativeBuild.cmake.arguments.add("-DENABLE_TGVOIP=" + (if (config.useNTgCalls) "no" else "yes"))
}
}
}
Expand Down Expand Up @@ -578,6 +582,7 @@ dependencies {
exclude(group = "com.google.firebase", module = "firebase-analytics")
exclude(group = "com.google.firebase", module = "firebase-measurement-connector")
}
// implementation("com.google.firebase:firebase-appcheck-safetynet:16.1.2")
// Play Integrity: https://developer.android.com/google/play/integrity/reference/com/google/android/play/core/release-notes
flavorImplementation(
libs.google.play.integrity.legacy,
Expand Down Expand Up @@ -647,6 +652,11 @@ dependencies {

// mp4parser: https://github.com/sannies/mp4parser/releases
implementation(libs.mp4parser.isoparser)

// NTgCalls: https://github.com/pytgcalls/ntgcalls/
if (config.useNTgCalls) {
implementation(libs.pytgcalls.ntgcalls)
}
}

if (!config.isExperimentalBuild) {
Expand Down
2 changes: 0 additions & 2 deletions app/jni/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ set(TGX_ROOT_DIR "${PROJECT_SOURCE_DIR}/../..")
set(TDLIB_DIR "${TGX_ROOT_DIR}/tdlib")
set(UTILS_DIR "${THIRDPARTY_DIR}/jni-utils")

set(ENABLE_TGVOIP yes)

# Using webp only if building for 32-bit platform
#if (${ANDROID_ABI} STREQUAL "armeabi-v7a" OR ${ANDROID_ABI} STREQUAL "x86")
# set(USE_WEBP yes)
Expand Down
4 changes: 3 additions & 1 deletion app/src/latest/java/tgx/flavor/NLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ public static synchronized boolean loadLibraries () {
System.loadLibrary("sslx");
System.loadLibrary("tdjni");
System.loadLibrary("leveldbjni");
System.loadLibrary("tgcallsjni");
if (!BuildConfig.USE_NTGCALLS) {
System.loadLibrary("tgcallsjni");
}
System.loadLibrary("tgxjni");
N.setupLibraries();
loaded = true;
Expand Down
4 changes: 3 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"
Expand Down Expand Up @@ -261,7 +263,7 @@
<service
android:name=".service.TGCallService"
android:exported="false"
android:foregroundServiceType="phoneCall|microphone|mediaPlayback" />
android:foregroundServiceType="phoneCall|camera|microphone|mediaProjection|mediaPlayback" />
<receiver android:name=".receiver.VoIPMediaButtonReceiver"
android:exported="false">
<intent-filter>
Expand Down
50 changes: 50 additions & 0 deletions app/src/main/java/org/pytgcalls/ntgcallsx/CallInterface.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package org.pytgcalls.ntgcallsx;

import org.drinkless.tdlib.TdApi;
import io.github.pytgcalls.FrameCallback;
import io.github.pytgcalls.RemoteSourceChangeCallback;
import org.thunderdog.challegram.telegram.Tdlib;
import org.thunderdog.challegram.voip.NetworkStats;
import org.thunderdog.challegram.voip.annotation.CallNetworkType;

public interface CallInterface {
boolean isVideoSupported();

void setFrameCallback(FrameCallback callback);

void setRemoteSourceChangeCallback(RemoteSourceChangeCallback callback);

long getCallDuration();

void setAudioOutputGainControlEnabled(boolean enabled);

void handleIncomingSignalingData(byte[] data);

void setEchoCancellationStrength(int strength);

void setMicDisabled(boolean disabled);

void setCameraEnabled(boolean enabled, boolean front);

void setScreenShareEnabled(boolean enabled);

long getConnectionId();

void setNetworkType(@CallNetworkType int type);

void getNetworkStats(NetworkStats stats);

void performDestroy();

CharSequence collectDebugLog();

TdApi.Call getCall();

Tdlib tdlib();

boolean isInitiated();

String getLibraryName();

String getLibraryVersion();
}
Loading