Closed

Capture all Android-internal outgoing raw-audio (PCM) via Android-NDK (C, C++) or Android-JDK (Java)

This project received 6 bids from talented freelancers with an average bid price of €1392 EUR.

Get free quotes for a project like this
Employer working
Project Budget
N/A
Total Bids
6
Project Description

Hello,

I have a concrete, not simple requirement for an experienced Android-NDK/C-developer:

About one year ago I have decided to write an Android app, which should capture all outgoing audio (PCM) of my Android device.
The captured audio should then for example be streamed to wireless loudspeakers (like Apple's AirTunes).

This means, that at least STREAM_MUSIC should be captured, so you can listen to your music with the music-app of you choice.
The goal is NOT to write a player which can play MP3s to a remote speaker (apps like this already exist)!


The problem is, that it is not possible to capture the outgoing sound with standard Android-APIs, you can only capture from microphone.

My attempts so far:

1. I have tried all possible ways with the standard Android-SDK (Java)
2. I have tried to implement /dev/snd/pcmC0D0p as a character device (LKM)
3. I have tried to implement /dev/snd/pcmC0D0p as a character device in userspace via FUSE (shipped with Android)
4. I have tried to hook [url removed, login to view] & [url removed, login to view] with GOT/ELF-hook to intercept the mmap()-method.

My conclusions so far:

1. it is not possible with standard Android-APIs
2. the character device worked, but pcmC0D0p is not always the right device and kernel-coding is not applicable for an Android-app
3. it is not possible to implement a character device with FUSE, you need CUSE for this (not shipped with Android)
4. the ELF-hook worked for own shared libraries, but the system-libraries seem to be protected (maybe RELRO)


I have very good knowledge of Java and similar programming languages, but C is not my thing.


Now, my requirements:

- a piece of code or a small binary, which can capture/intercept ALL (or at least STREAM_MUSIC) PCM-audio outgoing of an Android-phone and stream it e.g. into a non-blocking pipe/FIFO

- I'm not interested in capturing phone-calls, so that's not required

- I must be able to compile the code on a Windows-PC with help of Android-NDK (ndk-build)

- the audio must be captured non-blocking (but there must not be a large buffer)

- you can assume a rooted Android-phone with at least Android 4.2.1 Jelly Bean and the newest Android-NDK (but it's better to supply more versions!)

- I must be able to build-in your code into my existing code and be able to get the raw PCM-audio from your code into my app

- the code must run on ARM-devices

My test-device is a rooted Samsung Galaxy Nexus with Android 4.2.1 Jelly Bean, stock kernel.


My payment:

I will pay up to 250€ for a good, stable, code-documented and readable piece of code which can solve my requirements listed above.
I will pay up to 300€ if your code runs smoothly on multiple Android-versions and does NOT require rooting.


--------------------

Please, only contact me if you read & understood my requirements and only if you are (quite) sure you can solve them.
I will NOT reply to impersonal standard-messages like "Hey, we can make a good app" - please write me how you will solve my problem.


Best regards & thanks in advance!

Looking to make some money?

  • Set your budget and the timeframe
  • Outline your proposal
  • Get paid for your work

Hire Freelancers who also bid on this project

    • Forbes
    • The New York Times
    • Time
    • Wall Street Journal
    • Times Online