Business Client need Mobile App Development
Contact person: Business Client
Phone:Show
Email:Show
Location: Santo Domingo, Dominican Republic
Budget: Recommended by industry experts
Time to start: As soon as possible
Project description:
"I need the open-source Linphone client modified please read [login to view URL]
Main Linphone Android GitHub (THIS IS THE ONE YOU MODIFY)
Linphone Android App
GitHub:
[login to view URL]
This is the official Linphone Android client (Kotlin + Java) where you will enforce audio routing.
Key Submodules You MUST Modify (Critical)
Linphone uses native C/C++ + Java/Kotlin, so forcing audio jack requires changes in both layers.
Android Audio Routing (Java / Kotlin layer)
Path
linphone-android/
└── app/src/main/java/org/linphone/core/tools/
Files to edit
• [login to view URL]
• [login to view URL]
• [login to view URL]
What to FORCE here
You must hard-lock wired headset:
[login to view URL] = false
[login to view URL]()
[login to view URL] = false
[login to view URL] = AudioManager.MODE_IN_COMMUNICATION
Then reject all routes except WIRED_HEADSET / WIRED_HEADPHONES.
Core Audio Engine (C/C++) – HARD ENFORCEMENT
Path
linphone-android/
└── submodules/linphone/
└── coreapi/
Files to modify
coreapi/audio_device.c
coreapi/audio_device.h
What to do
Disable everything except AUDIO_DEVICE_WIRED_HEADSET
Example logic:
if (device->type != LinphoneAudioDeviceTypeWiredHeadset) {
return FALSE; // reject speaker, earpiece, bluetooth
}
MediaStreamer2 (MOST IMPORTANT FOR LOOPBACK)
Path
linphone-android/
└── submodules/mediastreamer2/
Files to modify
src/android/[login to view URL]
src/android/androidsound.h
Why this matters
This layer talks directly to Audio HAL.
You can force:
• Input → wired mic only
• Output → wired headset only
Example:
audio_source = AUDIO_SOURCE_MIC;
audio_stream_type = AUDIO_STREAM_VOICE_CALL;
Then block:
• AUDIO_DEVICE_OUT_SPEAKER
• AUDIO_DEVICE_OUT_EARPIECE
• AUDIO_DEVICE_OUT_BLUETOOTH_*
Disable Bluetooth at Compile Time (Recommended)
In:
mediastreamer2/src/android/[login to view URL]
Remove or comment:
enableBluetoothSco();
Build System (NDK + Gradle)
You must rebuild:
• Linphone native core
• MediaStreamer2
• Android APK
Build guide (official)
[login to view URL]
Optional BUT STRONGLY RECOMMENDED (Your Use Case)
Because you're doing SIM ↔ SIP loopback on Redmi 4A:
Add a HARD FAIL if headset not connected
if (![login to view URL]) {
throw RuntimeException("WIRED HEADSET REQUIRED")
}
This prevents Android from silently switching routes.
Summary – Repos You Need
Purpose Repo
Android app [login to view URL]
SIP core submodules/linphone
Audio engine submodules/mediastreamer2
.
Experience with VoIP stacks, SIP, C/C++, Java/Kotlin or Objective-C/Swift, and familiarity with Belledonne’s build system will be key. Please let me know the most complex Linphone (or comparable VoIP) customization you have shipped and the timeline you’d propose for this one." (client-provided description)
Matched companies (3)

April Innovations

TechGigs LLP
