Пользователь
0,0
рейтинг
18 марта 2012 в 13:57

Разработка → Запись разговоров на Android из песочницы

Я думаю, довольно многим хочется иметь возможность записывать собственные телефонные разговоры на своём смартфоне за 20 тысяч рублей. Задача вроде бы банальная, и вроде бы API Android’а позволяют это делать. Но почему запись не работает почти на всех устройствах без всяких шаманств и танцев с бубном?

Закон


Всё дело в том, что в некоторых странах запись является нелегальной и производители не тратят время на добавление такой возможности. Но как же быть тем, кто живёт в странах, где записывать разговоры не запрещено. Например, в России нет запрета на запись собственных телефонных разговоров, даже не нужно предупреждать собеседника о записи. Только прослушивать записи ваших разговоров имеете право только вы, т.е. если вы дадите прослушать запись третьему лицу, то это будет расцениваться, как нарушение 23-й статьи Конституции РФ.

Телефон


В некоторых устройствах ядро не содержит нужного драйвера, в некоторых устройствах запись отключена в системных библиотеках. Поэтому на этих телефонах запись не работает ни в одной из десятков программ в Market’e. Оно и не удивительно, ибо все они пишут разговоры одним и тем же способом. Но на некоторых телефонах запись работает без всяких танцев с бубном, например, на Samsung Galaxy S II. Но не на каждой прошивке, например, на Android 4 ICS запись уже не работает, видимо, Samsung посчитал, что пользователям она не нужна и убрал её.


Танцы с бубном


Однако, не всё так плохо. Существует способ записывать разговоры с помощью root-прав и специального кастомного ядра, которое содержит необходимый драйвер для записи разговоров. На некоторых устройствах данный драйвер уже содержится в стоковом ядре, поэтому нет надобности устанавливать кастомное ядро. Таким способом, на данный момент, можно добиться записи на устройствах, которые построены на таких чипсетах от Qualcomm, как QSD8250 (HTC Desire, Nexus One, HTC HD2 и др.), QSD8255 (HTC Desire HD, HTC Incredible S, SE Xperia Ray и др.) и QSD8260 (HTC Sensation, Samsung SGH-T989 Galaxy S II, HTC EVO 3D и др.). Так же запись возможна на некоторых старых чипсетах Qualcomm MSM72xx.

Запись через ядро


Первое, что необходимо сделать — это узнать на каком чипсете построен телефон. Затем необходимо найти специальное ядро с поддержкой записи с линии, это можно сделать на xda-developers.com или 4pda.ru. Если вы нашли ядро для вашего телефона, где заявлена поддержка записи (иногда обозначается 2wcr или CallRec), тогда можете приступить к разблокировке загрузчика/получению S-OFF, установке recovery, получению root-прав и прошивке найденного ядра. Если ядро с поддержкой записи вы не нашли для вашего телефона, но чипсет телефона точно должен её поддерживать, то напишите разработчику или разработчикам ядер для вашего телефона, просьбу добавить данный патч в своё ядро или ядра.

Запись через стандартные API Android’a


Если же запись через ядро невозможна на вашем телефоне, то есть шанс, что существуют специальные либы с поддержкой записи. Как правило, это три файла: libaudio.so, libaudioflinger.so и libaudiopolicy.so запакованные в .zip для прошивки через recovery. Также хочу подчеркнуть, что данный патч может работать только на определённых прошивках. Например, на Samsung Galaxy S записи можно добиться только на Android 2.2 Froyo, на других прошивках запись не работает. Как правило эти библиотеки вытащены из китайской прошивки. Как правило запись через Bluetooth-гарнитуру работает плохо.

Софт


Запись через ядро поддерживают несколько программ, одна из них rVoix, бесплатная программа с открытым исходным кодом. Автор этой программы является так же и автором патчей для ядер и благодаря нему запись стала возможной на многих устройствах.

Есть и другая программа с поддержкой записи через ядро — CallRecorder, автором которой я и являюсь.

Если проблема была не в ядре, а в системных библиотеках, то запись должна заработать во всех остальных программах для записи разговоров, коих довольно много в Market’e.
Александр @skvalex
карма
19,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (69)

  • +2
    Спасибо огромное за статью, я очень долгое время сидел на ВинМобайл только из-за записи с лини.
    Вашей программой сейчас кстати и пользуюсь с огромным удовольствием, но хочу пожаловаться вам, что несмотря на то, что заявлена в последней версии поддержка записи в режиме блютуза, но она всё равно не работает. Мало того, что просто не работает, но ещё и собеседника не слышно. У меня самсунг галакси 2 с стандартной прошивкой без всяких рутов. Буду рад, если подскажите как быть с блютузом…
    • 0
      Если у вас прошивка Android 2.3, то на вашем телефоне записываться будет только голос собеседника при записи через Bluetooth, это проблемы прошивки и исправить их, увы, может только Samsung. Для этого в настройках для стандартных Android API должн быть включен пункт «Менять источник записи при подключении БТ гарнитуры» и «Источник записи когда БТ гарнитура подключена» должен быть выбран «Входной канал». Но эти настройки должны быть у вас по умолчанию, если телефон именно GT-I9100.
      • 0
        А как быть когда появится андройд 4, дайте ссылку пожалуйста где описан процесс шаманивания, т.к. для меня запись разговоров это самое главное…
        • 0
          В кастомной прошивке Resurrection Remix ics v9.7 заявлена запись, попробуйте установить её. Надеюсь, скоро и другие ромоделы добавлят поддержку записи в свои прошивки.
          • 0
            Было бы здорово, если в блютузе хотя бы не работала запись, но и собеседника было слышно, т.е. при разговоре через блютуз программа не включалась, такой версии у вас нет?
            • 0
              Сейчас такой возможности в программе нет, но она запланирована на следующую версию (1.2).
  • +1
    Одна из причин, по которой я хочу перейти с iOS на Android. Да, потребность в записи возникает редко, но когда возникает — то на вес золота.
  • 0
    как купил HTC Hero прошил сразу кастомную прошивку!
    поставил vRecorder (по моему даже с маркета) и беды с записью разговоров не знал (причем качество отличное), а через что оно пишет меня как то и не волновало ну рут права не просила!
    Ну вашу тоже попробую!
  • 0
    А как обстоят дела с Exynos 3110. Пользователи в пролёте?
    • 0
      Вы, должно быть, имеете ввиду Samsung GT-I9000 Galaxy S? Если да, то запись работает только на кастомной прошивке с Android 2.2.
      • 0
        Спасибо, но я имел ввиду Google Nexus S.
        • 0
          Да, с Nexus S дела обстоят гораздо хуже, до сих пор не удалось добиться записи на нём. Сейчас есть некие идеи, как это можно сделать, но без наличия телефона на руках, добавить поддержку практически невозможно.
          • 0
            да, действительно, не работает запись на Нексусе эС.
            В чем причина?
      • 0
        У меня на MintBerry 2.3.7 вполне себе работает запись с линии.
  • +1
    Практически на всех телефонах работает запись с микрофона. Это, конечно, не так круто, как запись с помощью драйвера. Но зато не нужен рут и бубен.
    • 0
      Кстати отличное приложение. Я как-то его не видел.
      • 0
        Спасибо :)
    • +3
      Это всё является полумерой. Так как, либо динамик орет и все слышат что вы пишите, либо, если запись идет с внутреннего динамика, то при шуме ничего хорошего на записи не слышно.
  • 0
    Было же вредоносное ПО для андроида, которое записывало разговоры) Говорят с неплохим качеством)
    • +11
      У нас не надо ПО ставить на телефон, вся запись идет еще на уровне операторов.

  • +1
    В маркете написано, что перед установкой нужно удалить пробную версию, что намекает на существование этой самой пробной версии. Только вот саму её я там не нашёл. Где её можно взять?
    • 0
      Да, я в статье специально сделал ссылку не на Market, а на тему CallRecorder на 4pda.ru, есть ещё и аналогичная тема на xda-developers.com. В описании программы на маркете есть эти ссылки.
  • 0
    О статье: о том что можно все же записывать через танец с бубном вроде всем было известно. В статье очень не хватает что да как или хотя бы ссылочки где почитать/ узнать какой чипсет и т.д.
    За разработку ПО — респект.
  • 0
    Гм. Вообще, странно это все. Кто в курсе деталей лицензионной политики Андроида? Какого хрена устройство не реализующее в полной мере API — тем не менее называется «Android» и сертифицируется (или у Андроида такого понятия вообще нет?) как совместимое с ним?
  • 0
    Я уже что-то подобное видел в продаже сервисом www.007-mobile.org. Разработчики утверждают, что есть поддержка IOS, Symbian, android, Blackberry… (слава богу, что до бабушка фонов не добрались). Программа ставиться на телефон и записывает все разговоры, смс, интернет трафик и пересылает данные на сервер.
    Потом можно зайти и прослушать записанные разговоры и прочие.
    Такой подход более удобен, чем если вы решите попытаться записать разговор с трубке (необходимо нажимать много кнопок).

    Кроме того если кому -то нужно то данная функция есть в телефонах Nokia X2-00 из коробки.
    • 0
      Стоимость пробной версии на 3 дня — 499 рублей, стоимость Pro версии на год — 13 890 руб, стоимость программы навсегда — 24 890 рублей.

      К тому же та программа для нашей страны не актуальна, ибо есть 138 статья УК РФ.

      И, скорее всего, запись у них идёт не с линии, а с микрофона.
      • –1
        10 $ — это тоже борщ, IMHO
        1..2 — ещё куда не шло, тем более у меня Андроид кЕтайскЕй, за 8 тыщ, а не за 20

        понимаю, что хочется красиво жить, но от одного взгляда на цену сразу понимаю, что мой выбор — Ру-Борд
  • 0
    А мне вот всегда хотелось странного — проигрывать трек со смартфона собеседнику напрямую, а не схемой динамик->воздух->микрофон. Возможно ли вообще такое?
    • 0
      Теоретически это возможно на нескольких старых телефонах, вроде HTC Hero или HTC Wildfire, в rVoix'e есть автоответчик для этих устройств. Но для этого нужен специальный модуль для ядра и надо будет реализовать это в интерфейсе программы.
  • 0
    Пользуясь случаем, хочу попросить android разработчиков запилить ядро для моего SE Experia Neo V. Дело в том, что уже существует патч, который открывает доступ к запись разговоров, надо лишь наложить его на оригинальные исходники и скомпилить. Сам я это делать опасаюсь, т.к. у меня никогда не было такого опыта, боюсь что нибудь запороть. Поэтому обращаюсь к профессионалам помочь мне в этом, за небольшую денюжку.

    У самого установлен callrecorder, но работает только запись с мика, из за чего собеседника почти не слышно.
    • 0
      Если у вас есть root-права, то можете попробовать записывать через ядро в формате .AMR, а затем прослушивать на компьютере, если Android откажется воспроизводить записанное.
  • 0
    Я правильно понимаю, что тот факт, что на моих Huawei Sonic и HTC Desire S запись разговоров работает, — чистое везение?
    • 0
      Насчёт Huawei — не знаю, а насчёт HTC Desire S, то если у вас запись идёт через стандартные API, то, скорее всего, она идёт с микрофона.
    • 0
      А подскажите, какой программой вы пользуетесь для Desire S? Я ничего стоящего так и не нашёл(
      • 0
        Скажите, в вы пробовали мой CallRecorder? Если да, то напишите, пожалуйста, что в нём не так… Если нет, то попробуйте. Только у вас должен быть root и ядро с поддержкой записи с линии.
      • 0
        The Call Recorder: play.google.com/store/apps/details?id=com.recorder.service.license

        автоматически записывает разговоры от выбранных абонентов — что мне бло нужно
  • 0
    Было бы здорово заливать записи сразу в Dropbox
    • +3
      Чего мелочиться? Сразу заливать на YouTube и постить в Твиттер.
    • 0
      В планах есть синхронизация с dropbox'ом
    • 0
      DropSync ставьте и не мучайтесь. Все давно работает.
  • 0
    Сделайте поддержку HTC Legend пожалуйста, всегда хотелось иметь лог всех разговоров, чтобы потом вспоминать о чем мы говорили 10 лет назад.
  • 0
    Для статистики — МТС 916, на обоих официальных прошивках (2.1 и 2.2) AutoCallRecorder на дефолтных настройках — пишет прекрасно.
  • 0
    У меня телефон (HTC Incredible S) не S-OFF, но root есть. Триальная версия программы не записывает разговор с ядра, но с API легко. Нужно искать ядро, делать S-OFF, я правильно понял?
    • 0
      Да, всё верно. Или можете попробовать поставить Android 4 ICS + root, тогда не придется менять ядро.
      • 0
        Для этого нужно будет делать S-OFF, а я что-то пока не готов :) Хочу подождать официального обновления от HTC. В мае вроде как обещают :)
  • +1
    у меня отлично все пишется на моей саге(HTC Desire S) с кастомной прошивкой(Endymion V3.4|Sense 3.5|GB 2.3.5][kernel V2.1, труба S-off) + CallRecorder(1.0.23алфа), который работает отлично.
    • 0
      Какая старая версия программы, очень советую обновиться. В версии, которую используете вы, могут быть проблемы с записью входящих вызовов после USSD запроса. Баг этот исправлен только в версии 1.0.43 alpha.
      • 0
        данная версия у меня кажись триал-анлимит ))) работает давно и без проблем(стабильность+триал-анлимит) а насчет данного changelog не знал, спасибо за инфу.
      • +2
        Подарите хабраюзерам фри версию программки. За это будем крайне благодарны.)
        • 0
          Поддерживаю.
          • 0
            Хорошо, давайте так: первые 15 человек, которые напишут мне в ЛС — получат полную верисю.
            • 0
              Блин, ну опять ограничения. И в итоге я не успел...((( сижу расстроенный…
              • 0
                Почему не успели? Вы только второй :)
  • 0
    А я на N900 пишу CallRecorder'ом.
    Пришлось, правда, писать скрипт, который вытягивает записи с телефона и сопоставляет их с контактами, которые в свою очередь так же вытягиваются с телефона (они там в sqlite-формате), а так же перекодирует в mp3.
  • +1
    У меня была потребность примонтировать к смартфону папку nfs.
    Соответствующих модулей в доступе не было.
    Что в итоге сделал?
    — С kernel.org утащил исходники ядра, ветку 'android'.
    — Вытащил конфиг из ядра на смартфоне (повезло — ядро было собрано с сохранением конфига).
    — Поставил toolchain для нужной архитектуры (arm).
    — Положил извлечённый конфиг в исходники. После чего в конфигураторе подключил нужный модуль.
    — make modules…

    Итог — никакого кастомного ядра не потребовалось; из модификации смартфона — лишь получил рута.
    (сам файл модуля совсем не обязательно класть куда-то в системную папку — он отлично подхватывается из любой другой).
    Что-то мне подсказывает, что с модулем записи звука всё примерно так же. В смысле — кастомное ядро скорее всего не нужно; можно обойтись «малой кровью».
    • 0
      Модули мы уже пробовали и ничего хорошего из этого не вышло. Проблем много было, вроде самопроизвольных ребутов. Ну а т.к. модуль всё равно нужно собирать для каждого ядра отдельно, то решили отказаться от этой идеи.
  • 0
    Коллеги! Посоветуйте стоковую прошивку, рутованную для нормальный работы callrecorder.
    Вчера обновил трубу до 4го андроида и все… назад на старую не хочу, но и запись хочу что была.
    • 0
      SGS2
  • 0
    Скажите, пожалуйста, будет ли работать в вашей программе CallRecorder автоматическая запись разговоров через линию, а не микрофон, на Galaxy S2 со стандартной прошивкой 2.3.4?
    • 0
      Надеюсь, но вы можете проверить сами скачав trial-версию программы.
  • 0
    «Например, на Samsung Galaxy S записи можно добиться только на Android 2.2 Froyo, на других прошивках запись не работает»

    На всех других или только на официальных? На CyanogenMod 9 будет, например?
  • 0
    юзаю SGS 2… прошивка MIUI ICS 4
    все пишет родными (встроенными в прошивку) средствами… никаких проблем…
  • +2
    Если нет рута, но к телефону, как правило, подключены наушники (я вот всегда по городу хожу с «затычками»), можно записывать разговор с собеседником в отличном качестве, просто поднеся один наушник к динамику. Криво, конечно, но когда других адекватных вариантов нет, а делать рут на телефоне ссыкатно/дорого/сложно — очень выручает.
  • 0
    Данные по статье немного устарели, что с Galaxy S3 и S4?
    • 0
      на родных прошивках — пишет… на кастомах (на базе родных) — тоже
      на CM — не пишет
      • 0
        конкретно про S4 i9505 (LTE) и запись с линии где почитать можно? думаю такой взять, это — останавливает — хочу конкретно представлять что и как будет… на 4pda ветку просматривал, не наткнулся…
    • 0
      На Galaxy S3 (Exynos4412) запись работает. Но при записи через Bluetooth пишется только голос собеседника.

      На Galaxy S3 US (Qualcomm MSM8960) запись работает при наличии root-прав. В том числе и через Bluetooth.

      На Galaxy S4 (Exynos5419) запись работает. Но при записи через Bluetooth пишется только свой голос.

      На Galaxy S4 LTE (Qualcomm MSM8960), вроде как, запись работает. Но это зависит от прошивки. Про Bluetooth неизвестно, но, думаю, что работает.

      На Galaxy S4 US (Qualcomm MSM8960) запись с линии не работает.
      • 0
        кстати я с гарнитурой не расстаюсь, поэтому запись по BT для меня очень важно…
  • +1
    Пол года назад самостоятельно получил Root на HTC Sensation Z710e.

    Получилось правда не с первого раза, прежде чем всё заработало пару раз удалил все данные с телефона, потом поставил какое-то кривое ядро, в связи с чем абонента было слышно плохо, потом другое, аналогичное предыдущему, но через пару недель нашёл оптимальное сочетание ядра и прошивки — после чего до сегодняшнего дня всё уверенно работает.

    В настоящий момент у меня стоит ядро UNITY V9 и прошивка ViperS 1.6.3. Всё пишется через Bluetooth, никаких проблем не испытываю.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.