acomminos / jumble Goto Github PK
View Code? Open in Web Editor NEWAn Android service implementation of the Mumble protocol.
License: GNU General Public License v3.0
An Android service implementation of the Mumble protocol.
License: GNU General Public License v3.0
It would be neat to have this on F-Droid https://f-droid.org/
Would it be feasible?
Are there any Documentation how to programm with this as library?
I'd like to start versioning Jumble for API stability once AIDL is killed (#14).
Users must explicitly give their permission inside the application to use the microphone in Android 6.0 and later. And these permission checks should happen as late as possible so the user can understand the purpose. However, these use-cases are not handled in the library.
Specifically:
Right now Jumble will simply fail with an exception. No input or output audio. I did a quick test and added additional checks to the AudioHandler.java class along with an additional method to start recording later (triggered after the user has granted the permission). Seems to work. Not sure about side-effects.
private boolean canRecordAudio() {
return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ContextCompat.checkSelfPermission(mContext, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) ? false : true;
}
// Usage sample
if(canRecordAudio()) {
mInput = new AudioInput(this, mAudioSource, mSampleRate);
} else {
mInput = null;
}
// Additional checks later
Hi,
I'm trying to change the target on voice data message but I can't find where tho.
What I want to do is create another push to talk button that will target another registered voicetargetId instead of the default 0 (Normal talking). Is there a way to do it? If not, Could you give me a hint of where in the code I can change it?
Sorry if it's a dumb question. I already tried to find on my own but I'm still an android beginner.
Thank you a lot, you have done a great work so far!
EDIT:
Sorry I posted the question in the wrong spot.
A couple of clarifications:
Is the whisper target limit per server or per user? Do all users share the same set of whisper targets on one server, or is the limit just a matter of the number of targets that one user can transmit to at once.
Secondly, how quickly can the registered targets be changed? Is it fast enough that one can expect to reconfigure the registered targets before each transmission?
Thank you
Is it possible to use Jumble to connect to two or more servers simultaneously? I'm considering making a voice bridge that would benefit from being able to do that.
If not, can you advise which areas of the code would need to be modified to allow such a configuration please?
Hi
How about to add options to use NoiseSuppressor and
AcousticEchoCanceler?
Also hope this can help with https://github.com/acomminos/Plumble/issues/126
When other users talk to me, I can hear them, but they're really quiet
hi:
When I download celt-0.11.0 code ,build Jumble in Abdrid Studio v2.3 , I found error, anyone know what cause?
Thanks!
:libraries:Jumble:ndkBuild
Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-14.
Android NDK: WARNING: APP_PLATFORM android-14 is higher than android:minSdkVersion 1 in /work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/AndroidManifest.xml. NDK binaries will not be comptible with devices older than android-14. See https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md for more information.
make: Entering directory `/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni'
[armeabi-v7a] Compile thumb : jnicelt11 <= bands.c
In file included from /work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/bands.c:41:
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/mathops.h:155:49: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
static const celt_word16 C[5] = {-6801+(1<<13-DB_SHIFT), 15746, -5217, 2545, -1401};
~~~~^~~~~~~~~
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/mathops.h:155:49: note: place parentheses around the '-' expression to silence this warning
static const celt_word16 C[5] = {-6801+(1<<13-DB_SHIFT), 15746, -5217, 2545, -1401};
~~^~~~~~~~~
。。。。。
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/mathops.h:155:49: note: place parentheses around the '-' expression to silence this warning
static const celt_word16 C[5] = {-6801+(1<<13-DB_SHIFT), 15746, -5217, 2545, -1401};
~~^~~~~~~~~
1 warning generated.
[armeabi-v7a] Compile thumb : jnicelt11 <= plc.c
In file included from /work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/plc.c:34:
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/mathops.h:155:49: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
static const celt_word16 C[5] = {-6801+(1<<13-DB_SHIFT), 15746, -5217, 2545, -1401};
~~~~^~~~~~~~~
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/mathops.h:155:49: note: place parentheses around the '-' expression to silence this warning
static const celt_word16 C[5] = {-6801+(1<<13-DB_SHIFT), 15746, -5217, 2545, -1401};
~~^~~~~~~~~
1 warning generated.
[armeabi-v7a] Compile thumb : jnicelt11 <= quant_bands.c
In file included from /work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/quant_bands.c:33:
In file included from /work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/quant_bands.h:36:
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/mathops.h:155:49: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
static const celt_word16 C[5] = {-6801+(1<<13-DB_SHIFT), 15746, -5217, 2545, -1401};
~~~~^~~~~~~~~
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/mathops.h:155:49: note: place parentheses around the '-' expression to silence this warning
static const celt_word16 C[5] = {-6801+(1<<13-DB_SHIFT), 15746, -5217, 2545, -1401};
~~^~~~~~~~~
1 warning generated.
[armeabi-v7a] Compile thumb : jnicelt11 <= rate.c
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/rate.c:498:44: warning: operator '>>' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
extra_fine = IMIN(excess >> stereo+BITRES, MAX_FINE_BITS-ebits[j]);
~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/arch.h:68:21: note: expanded from macro 'IMIN'
#define IMIN(a,b) ((a) < (b) ? (a) : (b)) /< Minimum int value. */
^
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/rate.c:498:44: note: place parentheses around the '+' expression to silence this warning
extra_fine = IMIN(excess >> stereo+BITRES, MAX_FINE_BITS-ebits[j]);
~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/arch.h:68:21: note: expanded from macro 'IMIN'
#define IMIN(a,b) ((a) < (b) ? (a) : (b)) /< Minimum int value. */
^
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/rate.c:498:44: warning: operator '>>' has lower precedence than '+'; '+' will be evaluated first [-Wshift-op-parentheses]
extra_fine = IMIN(excess >> stereo+BITRES, MAX_FINE_BITS-ebits[j]);
~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/arch.h:68:33: note: expanded from macro 'IMIN'
#define IMIN(a,b) ((a) < (b) ? (a) : (b)) /< Minimum int value. */
^
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/rate.c:498:44: note: place parentheses around the '+' expression to silence this warning
extra_fine = IMIN(excess >> stereo+BITRES, MAX_FINE_BITS-ebits[j]);
~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/arch.h:68:33: note: expanded from macro 'IMIN'
#define IMIN(a,b) ((a) < (b) ? (a) : (b)) /< Minimum int value. */
^
2 warnings generated.
[armeabi-v7a] Compile thumb : jnicelt11 <= vq.c
In file included from /work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/vq.c:33:
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/mathops.h:155:49: warning: operator '<<' has lower precedence than '-'; '-' will be evaluated first [-Wshift-op-parentheses]
static const celt_word16 C[5] = {-6801+(1<<13-DB_SHIFT), 15746, -5217, 2545, -1401};
~~~~^~~~~~~~~
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/celt-0.11.0-src/libcelt/mathops.h:155:49: note: place parentheses around the '-' expression to silence this warning
static const celt_word16 C[5] = {-6801+(1<<13-DB_SHIFT), 15746, -5217, 2545, -1401};
~~^~~~~~~~~
1 warning generated.
[armeabi-v7a] Compile++ thumb: jnicelt11 <= jnicelt11.cpp
/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/jnicelt11.cpp:1047:22: error: use of undeclared identifier 'celt_mode_info'
int rvalue = celt_mode_info((const CELTMode*)ptr0, arg1, ptr2);
^
1 error generated.
make: *** [/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/obj/local/armeabi-v7a/objs/jnicelt11//work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni/jnicelt11.o] Error 1
make: Leaving directory `/work_studio/mumbleServer/Plumble-android/libraries/Jumble/src/main/jni'
:libraries:Jumble:ndkBuild FAILED
FAILURE: Build failed with an exception.
Process 'command '/Users/huanghuorong3/Library/Android/sdk/ndk-bundle/ndk-build'' finished with non-zero exit value 2
BUILD FAILED
mDecodeExecutorService gets leaked.
need to shutdown the executor on stopPlaying in AudioOutput.java
../../libs/sc-morlunk-prov-1.51.0.0.jar: Invalid package reference in library; not included in Android: javax.naming.directory. Referenced from org.spongycastle.jce.provider.X509LDAPCertStoreSpi.
../../libs/sc-morlunk-prov-1.51.0.0.jar: Invalid package reference in library; not included in Android: javax.naming. Referenced from org.spongycastle.jce.provider.X509LDAPCertStoreSpi.
as well as "incomplete translation"
Hello,
I have a problem with build. When I want to build Jumble with NDK I got this issues:
Jumble/src/main/jni/celt-0.7.0-src/libcelt/celt.c:660: error: undefined reference to 'find_spectral_pitch' Jumble/src/main/jni/celt-0.7.0-src/libcelt/celt.c:1250: error: undefined reference to 'find_spectral_pitch' Jumble/src/main/jni/celt-0.7.0-src/libcelt/modes.c:379: error: undefined reference to 'pitch_state_alloc' Jumble/src/main/jni/celt-0.7.0-src/libcelt/modes.c:451: error: undefined reference to 'pitch_state_free'
I downloaded celt from http://www.celt-codec.org/downloads/.
thanks
JumbleConnection.addTCPMessageHandlers(mModelHandler)
gets called in both JumbleService.connect()
and JumbleService.connectionSynchronized()
, putting JumbleService.mModelHandler
in JumbleConnection.mTCPHandlers
twice, and causing the handler to be called twice for every message.
The easiest way to repro this is with text messages in Plumble master
. For each one you receive, you'll have two in the chat view.
If the handler needs to be added in both places, checking if a handler is in JumbleConnection.mTCPHandlers
before actually adding it in JumbleConnection.addTCPMessageHandlers()
might work.
I'm making an app integrating Jumble, and connecting to my server is now working, but now I get this:
java.lang.UnsatisfiedLinkError: Couldn't load jnicelt11 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/sh.weme.wemesh.debug-123.apk", zip file "/data/data/sh.weme.wemesh.debug/code_cache/secondary-dexes/sh.weme.wemesh.debug-123.apk.classes2.zip"],nativeLibraryDirectories=[/data/app-lib/sh.weme.wemesh.debug-123, /vendor/lib, /system/lib]]]: findLibrary returned null
This'd make transitioning between WiFi and 4G when using Plumble less painful.
Could probably do something like
try {
IChannel currChannel = mBinder.getSessionChannel();
if (currChannel != null)
mReconnectChannel = currChannel.getId();
} catch (RemoteException e) {}}
in setReconnecting()
and then rejoin that channel in connect()
, but I'm not that clear on how state should be managed between connection attempts, so I haven't been able to get it to work.
It isn't very likely that proper multi-{threading,process} support will ever be introduced in Jumble, making our use of AIDL a crutch. It makes sense to continue the development of Jumble as a library that may have an external interface exposed by client implementations, such as Plumble's IPC.
..
I am trying to connect to a server with a self-signed certificate, and I just want to ignore the ssl handshake failure -- how can I do that?
hi
I'm trying to compile or import the source code to android studio and can not.
Can you tell me as to import android studio?
Thank you
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.