Автоответчик для Android. Руководство пользователя.

Обзор

Это единственный телефонный Автоответчик для Android, который действительно ГОВОРИТ в линию во время телефонного звонка. Вы сможете принимать входящие звонки, записывать голосовые сообщения, вводить цифры в тональном наборе, и отвечать на все это заранее записанными фразами или тональными сигналами по программе-сценарию на Java.

https://drive.google.com/open?id=1VBJd9M85HOpHxsWgcgK24OPXL2VdjDkV

Используются версии Приложения по нарастанию уровня сложности:

Demo - Классический телефонный автоответчик с уже готовыми фразами. Простой интерфейс. Бесплатная версия.

Home - Классический телефонный автоответчик с возможностью записи собственных фраз. Простой интерфейс.

Professional - Используются 10 готовых программ-сценариев и возможность создания новых. Встроенный компилятор Java. Сложный интерфейс для продвинутых пользователей.

Expert - Можно создать свой или модифицировать язык программ-сценариев Java, редактируя файл синтаксиса языка (в текущей упрощенной версии языка всего 160 строк). Очень сложный интерфейс для особо продвинутых пользователей.

При установке версии Expert жителям РФ может быть БЕСПЛАТНО в качестве подарка выслан по почте красивый адаптер (красненький с надписью RICH TECH, с золотыми выводами) - обращайтесь, нужен почтовый адрес.

В режиме телефонного разговора используется специальный адаптер, который вставляется в гнездо наушника. Без адаптера Приложение не будет говорить в линию. Вынимаете адаптер – становится обычный телефон, вставляете адаптер – телефон превращается в автоответчик.

Чтобы быстро проверить работает Приложение или нет можно использовать обычную гарнитуру, надо только скотчем присоединить наушник левого канала к микрофону. Звук при этом будет хуже, чем с адаптером.

Приложение достаточно сложное, содержит 10 примеров, автоответчик - это только самый простой пример. ПОЖАЛУЙСТА!!!! Прочитайте подробное описание на веб-сайте разработчика: https://sites.google.com/view/answering-machine-ru. Оно также есть в Приложении в разделе Помощь.

К сожалению, на некоторых моделях Приложение в режиме телефонного разговора действительно может работать неправильно. В этом случае просто удалите Приложение и примите мои извинения за причиненные неудобства. Но в 90% случаев пользователи просто не прочитали описание, и ткнули не те кнопки. Потратьте 5 минут, чтобы потом не оказаться в положении «не работает», когда на самом деле вы были в одном шаге от успеха. Если не получилось на одной модели телефона, можно попробовать на другой.

Для работы приложения требуются четыре Разрешения. Необходимо понимать, что если Вы не согласитесь Приложение не сможет правильно работать:

Память - доступ к внутренней, внешней памяти и SD-карте (файлы надо хранить).

Микрофон - запись аудио (необходима для записи голоса).

Контакты - доступ к контактам (нужен для определения имени абонента по номеру).

Телефон - получение данных о входящем звонке.

В Приложении кроме answering.java нет готовых фраз, все фразы нужно озвучить голосом. После нажатия кнопки Запись и звукового сигнала говорите громко и четко – фразы будут выделяться автоматически и затем повторяться. Порог можно изменить в настройках.

В Android нельзя разрешенным образом программно снять трубку, поэтому необходимо установить режим "Автоматическое снятие трубки при использовании гарнитуры". Он есть практически во всех телефонах. Если у вас такого режима нет, то Приложение не сможет работать правильно.

Если Вам очень нужна своя программа-сценарий, но Вы не программист, можете обратиться за помощью к автору.

Вы пишете программу-сценарий с нуля, модифицируете готовый пример или используете его без изменений. Запускаете по команде Start (Старт), сначала тестируете в текстовом режиме, затем озвучиваете все тексты монотонным голосом по команде Voice (Голос), тестируете уже со звуком без адаптера, наконец вставляете адаптер и Ваш Android работает как автоответчик.

Программа-сценарий может быть достаточно сложной. Один пользователь написал программу для реалити-квеста длиной 450 строк с задачами, паролями, явками, загадками и итоговым призом. Такое неожиданное применение.

Вообще автор рассчитывал на коммерческое применение в небольших магазинах и фирмах. Такие примеры конечно есть, но их меньше чем хотелось бы.

Вы можете закрыть Приложение или отключить дисплей. Как только Вам позвонят, телефон сам снимет трубку и программа начнет работать. Все что вводил или говорил вызывающий абонент фиксируется и затем вы можете просмотреть и прослушать это по команде Log (Журнал).

Чтобы выйти из режима автоответчика надо либо извлечь адаптер, либо выбрать команду Stop (Стоп).

Благодарю Вас за использование приложения для Android Answering Machine (Автоответчик).

Успехов.

С уважением, Владимир Юхлин.

Адаптер гарнитуры

В режиме телефонного разговора используется специальный адаптер, вставляемый в гнездо гарнитуры. Адаптер содержит 4-контактный штырь Jack Audio и два резистора. В некоторых случаях может потребоваться более сложная универсальная схема. На рисунке приведены схемы обеих вариантов .

Чтобы быстро проверить работает Приложение или нет можно использовать обычную гарнитуру, надо только скотчем присоединить наушник левого канала к микрофону. Звук при этом будет хуже, чем с адаптером.

Еще один, на мой взгляд, лучший вариант - доработка гарнитуры. Для этого надо вскрыть отсек микрофона, найти точки между контактами разъема 1 и 4 с помошью тестера, и добавить между ними ОДИН резистор 4.7 кОм.

Простой интерфейс без кнопок

В версиях Demo и Home используется очень простой интерфейс. Если адаптер вынут - это обычный телефон, если вставлен - автоответчик. Прослушивать сообщения можно в любом из этих режимов.

Для быстрого старта установите режим "Автоматическое снятие трубки при использовании гарнитуры". Затем просто запускаете программу, вставляете адаптер и звоните с любого другого телефона. Телефон снимет трубку. Вы должны услышать прияный женский голос"Здравствуйте...", звуковой сигнал и после паузы для записи вашего сообщения "До свидания". Это значит, что Приложение работает.

В версии Home можно озвучить собственные фразы Здравствуйте, Извините и До свидания, в версии Demo все фразы по умолчанию записаны приятным женским голосом и сменить их нельзя. В остальном версии ничем не отличаются.

Вы можете войти в Меню (3 вертикальных точки), затем в Настройки. В Настройках отметить те пункты, что Вам нужны.

Вы можете перезаписать фразы командами Здравствуйте, Извините и До свидания. После звукового сигнала произнесите любую нужную вам фразу. Говорите четко и уверенно - фраза будет выделена автоматически. Наилучшее качество получается при записи с гарнитуры. В принципе можно экспортировать файлы WAV (8 кГц, 16-бит, моно) с любыми звуками и голосами, но это на будущее.

Вы можете проверить как работает приложение без звонка по команде Проверка и прослушать все имеющиеся сообщения по команде Журнал. После того как нужный вам сценарий отработан - вставляйте адаптер в гнездо и звоните. Будет то же самое, но по телефону. В телефоне можно вообще отключить звук.

Удалить все сообщения можно по команде Очистка.

Фразы Здравствуйте и До свидания используются если абонент есть в списке ваших контактов и вы хотите записать его сообщение. Если абонента нет в списке ваших контактов можно настроить автответчик так, чтобы он произносил фразу Извините и имитировал короткие гудки.

Пример (нестандартный подход, изобретенный одним из пользователей):

  1. Оставляете крыжики: Запись, Здравствуйте, Пауза 5 секунд, До свидания.
  2. Контакты, Звуковой сигнал и Короткие гудки убираете
  3. Озвучиваете Здравствуйте следующим текстом "Алло!...1 сек.. Здравствуйте!..." типа вы тут и готовы разговаривать
  4. Озвучиваете До свидания следующим текстом "да... 1 сек... да-да... 1 сек... так... 1 сек... да... 2 с... так... так". Такие междометия помогают клиенту сказать что он хотел.
  5. Вы в это время отключаете звук и спокойно спите.
  6. Просыпаетесь и прослушиваете всех кто звонил. Получается такой "диалог":

Вы: "Алло!"

Клиент: "Алло".

Вы: "Здравствуйте!".

Клиент: "Добрый день.... Я по поводу шкафа... Вы продаете шкаф?"

Вы: "Да".

Клиент: "А сколько стоит?"

Вы: "да-да".

И т.д. Смысл разговора Вам понятен, номер зафиксирован, перезваниваете и, ссылаясь на плохую связь, договариваетесь дальше.

https://drive.google.com/open?id=1VBJd9M85HOpHxsWgcgK24OPXL2VdjDkV

Сложный интерфейс с вкладками и кнопками

Управлять приложением в вериях Pro и Expert можно с помощью меню.

Верхнее меню состоят из 4 вкладок:

  • Log (Журнал) - в нем отображаются результаты работы Приложения. Один файл с расширением .log соответствует одному запуску программы. Это может быть в режиме тестирования при нажатии кнопки Start (Старт) или при автоматическом приеме телефонного звонка. Можно выделить любой файл - просто нажмите на нужное место. Повторное нажатие позволяет прослушать запись. Длительное нажатие выделяет все файлы. Можно удалить файлы или сделать обратный звонок.

Edit (Программа) - позволяет редактировать текст программы-сценария. Программа написана на упрощенном языке похожем на C или Java c автоматическим определением типов. Файлы имеют расширение .java. Краткое описание языка будет дано в разделе Язык программирования сценариев.

Code (Код) - позволяет компилировать и редактировать непосредственно код виртуальной машины Java. Файлы имеют расширение .jvm.

Voice (Голос) - позволяет озвучить используемые в программе тексты голосом. Можно выделить любую фразу (файл), прослушать уже озвученный вариант, записать заново по команде Record (Запись), или выделить все фразы и озвучить сразу все. Выделение начала и конца фразы происходит автоматически. Просто произносите.

Нижнее меню меняется в зависимости от режима работы и содержит понятные из названий команды: Stop (Стоп), Start (Старт), Load (Загрузить), Save (Сохранить), Delete (Удалить), Record (Запись), Callback. (Обратный Звонок).

Главное меню состоит из пунктов:

  • Welcome (Приветствие) - вводный текст.
  • Help (Помощь) - данный документ по адресу в Интернете.
  • Syntax (Синтаксис) - файл синтаксиса языка программирования сценариев.
  • Example (Примеры) - готовые обучающие программы-сценарии.
  • Update (Обновление) - варианты обновления программы.
  • Settings (Настройки) - все уже настроено оптимальным образом и лучше поначалу ничего не трогать.


Готовые программы-сценарии

В качестве примеров прилагается несколько готовых обучающих программ-сценариев Examples (Примеры), которые можно модифицировать и озвучивать по своему.


  • answering.java - телефонный автоответчик (классический автоответчик).
  • chat.java - голосовой чат (выводится десять последних сообщений)
  • cinema.java - расписание кинотеатра (информация о кинотеатре, фильмах, времени сеанса).
  • control.java - контрольный звонок (как в некоторых программах обмена голосовыми сообщениями).
  • melody.java - "Подмосковные вечера" (простая мелодия по нотам).
  • number.java - числительные от нуля до миллиона (сложный пример счета попугаев с окончаниями и падежами русских числительных).
  • repeater.java - повторялка (повторяет все что скажешь).
  • security.java - охрана объекта (температура, влажность и звуки объекта)
  • voice.java - голосовая почта (получаем свои сообщения по номеру телефона и посылаем сообщения другим).

Рекомендуется начать с melody.java и затем с answering.java.

Последовательность действий на примере answering.java

1. В главном меню выберите команду Examples (Примеры).

2. Выберите пример answering.java.

play("Здравствуйте, это Владимир. К сожалению меня нет дома. Оставьте свое сообщение после звукового сигнала и я вам перезвоню.");
pause(1);
beep(1000,0.5);
record();
play();
play("До свидания");

Из текста программы видно, что сначала воспроизводится фраза "Здравствуйте...", затем после паузы 1 секунда и звукового сигнала, производится запись сообщения, которое тут же проигрывается обратно. В конце воспроизводится фраза "До свидания".

3. Проверьте в текстовом режиме, пока без адаптера. Нажмите Start (Старт), программа должна запуститься и напечатать "Здравствуйте...". После паузы 1 с и звукового сигнала скажите какую нибудь соответствующую фразу, например "Здравствуйте, это Иван". Фраза должна записаться и повториться.

4. Озвучьте используемые фразы, перейдите в режим Voice (Голос), и после команды Record (Запись) и звукового сигнала произнесите фразы "Здравствуйте..." и "До свидания".

5. Проверьте в голосовом режиме, пока без адаптера. Нажмите Start (Старт), программа должна запуститься и произнести "Здравствуйте...". Обратите внимание, что появилась надпись "answering.java - сервис запущен". Приложение готово к приему телефонных звонков.

6. Установите режим "Автоматическое снятие трубки при использовании гарнитуры". Он есть практически во всех телефонах. Вы можете закрыть Приложение или выключить телефон. Как только Вам позвонят, телефон сам снимет трубку и программа начнет работать. Все что вводил или говорил вызывающий абонент фиксируется и затем вы можете просмотреть и прослушать это по команде Log (Журнал).

7. Чтобы выйти из режима автоответчика надо либо извлечь адаптер, либо выбрать команду Stop (Стоп).

8. После принятого звонка появляется уведомление со значком Приложения, номером телефона и именем вызывающего абонента. Нажмите на уведомление, Приложение запустится.

9. По команде Log (Журнал), прослушайте полученные сообщения, при необходимости сделайте ответный звонок выбрав команду Callback (Звонок).

10. Сотрите запись в журнале с помощью команды Delete (Удалить).

Следующие два раздела предназначены для программистов. Их можно пропустить, если вы не собираетесь создавать собственные сценарии..

Язык программирования сценариев.

Программа-сценарий написана на упрощенном языке похожем на C или Java. Для определенности файлы имеют расширение .java.

Используются комментарии;

  • /* комментарий */
  • // комментарий до конца строки

Используются определяемые в процессе вычислений типы данных:

  • bool - для логических значений 0 и 1 (любое целое не равное 0);
  • long - для целых числе 1234567890, 79139139999;
  • double - для вещественных чисел 3.1415926, 1.6e-19;
  • string - строковые литералы "Hellow, world.\n" в кодировке UTF-8

Тип переменной определяется в момент инициализации: n=10; a=3.14; Преобразование типов происходит в процессе вычислений.

Используются одномерные массивы любого размера. Если значение элемента массива не присвоено, то отдается значение 0. Индексы могут принимать любые значения long, в том числе и отрицательные.

array[-999999] = 123456; // допустимое выражение

Могут использоваться функции. a = sum(b,c); ... sum(x,y) {return(x+y);} Массивы в функции не передаются. Область видимости переменных соответствует области функции. Функция main() может отсутствовать.

Используются операторы:

  • присваивания: =, +=, -=, *=, /=, %=;
  • арифметические: +, -, *, /, %, ^- возведение в степень;
  • инкремента и декремента: ++, --;
  • логические: !, &&, || ;
  • сравнения: ==, <, >, <=, >=;
  • индексации: []

Используются следующие конструкции ветвления и циклов, где c - условие, p - оператор:

if(c1) p1; 
else if(c2) p2; 
else if(c3) p3; 
else p4;

switch(c0) {
case c1: p1;
  break;
case c2: p2;
case c3: p3;
  break;
default: p4;
}

for(p1, ..., p2; c1; p3, ... ,p4) {
  p5; 
  break;
  continue;
  return;
  p6;
}

while(c1) {
  p1; 
  break;
  continue;
  return;
  p2;
}

Есть метки и можно использовать goto :)


Используются следующие встроенные функции:

capture(); // запись разговора в файл yyyyMMdd-HHmmss.pcm
capture("Строка"); // запись разговора в файл xxxxxxxx.pcm
capture(123456);   // запись разговора в файл 123456.pcm

record(); // запись фразы в файл yyyyMMdd-HHmmss.pcm
record("Строка"); // запись фразы в файл xxxxxxxx.pcm
record(123456);   // запись фразы в файл 123456.pcm

play(); // проигрываем файл yyyyMMdd-HHmmss.pcm
play("Строка"); // проигрываем файл xxxxxxxx.pcm
play(123456);   // проигрываем файл 123456.pcm

yn=exist(); // 0 или 1 существует файл yyyyMMdd-HHmmss.pcm
yn=exist("Строка"); // существует файл xxxxxxxx.pcm
yn=exist(123456);   // существует файл 123456.pcm

delete(); // удаляем файл yyyyMMdd-HHmmss.pcm
delete("Строка"); // удаляем файл xxxxxxxx.pcm
delete(123456);   // удаляем файл 123456.pcm

n = number(); // номер вызывающего абонента

n = input(); // ввод с помощью тонального набора
// 10.0 - время до первой цифры, секунд
// 5.0 - время после ввода последней цифры, секунд
n = input(10.0, 5.0); 
n = input(10.0); 
// если ничего не введено, отдает 0

pause(1.0); // задержка на 1.0 секунды

beep(); // тональный сигнал
// 1000.0 - частота, Гц
// 0.5 - длительность, секунд
// 0.005 - длительность фронтов, с
beep(1000.0);
beep(0.5);
beep(1000.0, 0.5);
beep(1000.0, 0.5, 0.005);

Для отладки можно также использовать упрощенную функцию printf:

printf("Текст"); // один параметр
printf("Long=%d", i);   // второй параметр - long
printf("Double=%f", d); // второй параметр - double
printf("String=%s", s); // второй параметр - строка

Во избежание ошибок встроенные функции не рекомендуется использовать в сложных выражениях.

Посмотрите тексты готовых примеров.