Как отключить поток телефонных звонков (uplink) при звонках на Android
Я никогда не задавал вопросов - всегда мог найти материал, но на этот раз я действительно не знаю, даже где копать.
Я пытаюсь отключить входящий восходящий поток (во время разговора с кем-то) и воспроизвести звук в это время через телефонный звонок-динамик.
Нет проблем с воспроизведением звука, но с приглушением потока это так. Вот что я попробовал:
1) Java Reflection для вызова методов внутреннего класса Android Telephony.
Вот блог авторов (Prasanta Paul): http://prasanta-paul.blogspot.com/2010/09/call-control-in-android.html И его виджет: http://code.google.com/p/phoneaway/
Я пытался изменить закомментированные функции в ITelephony.aidl, чтобы отключить поток вызовов, но это не сработало - "нет такой процедуры..."
2) получить поток через AudioManager
audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
audioManager.setStreamMute(AudioManager.STREAM_VOICE_CALL, true);
audioManager.setStreamMute(AudioManager.STREAM_DTMF, true);
audioManager.setStreamMute(AudioManager.STREAM_ALARM, true);
audioManager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
audioManager.setStreamMute(AudioManager.STREAM_RING, true);
а также
audioManager.setStreamSolo(AudioManager.STREAM_MUSIC, true);
Это не делает ничего для восходящего потока вызовов. Даже на рутированном телефоне.
3) В сети есть несколько статей и jar о реализации скрытого API. Нет статей, чтобы ответить, как отключить поток телефонных звонков.
Существует множество приложений, в которых используются недокументированные функции и функции, требующие root-доступа. Мне очень интересно, как люди нашли эти скрытые функции и как их использовать. Я не нашел ни одного из них, чтобы отключить звук.
Android ver: 2.2
Устройство: Samsung i5500
Если у вас есть идеи, как осуществить приглушение телефонного звонка - ответьте.
PS: если subj невозможен на стандартном телефоне, скажите, пожалуйста, как это сделать с root-доступом