Подтвердить что ты не робот

Отправка паузы в дозвонщик

В аналогичном ключе Отправка Паузы и ввода DTMF в андроиде, я пытаюсь отправить символ паузы "," на номер. Это работает на телефонах HTC Sense и даже на Xoom, но не на "биржевых" телефонах, таких как Nexus One или T-Mobile G2 (и я подозреваю Motorola Droid).

У этих телефонов, похоже, есть дозвонщик, который пытается упорядочить число (например, добавляет тире) и останавливается при попадании запятой. Интересно, что он не задыхается от персонажа "p", хотя он будет выделять "p" s и продолжать добавлять номера.

Вот что видит ActivityManager:

I/ActivityManager(   92): Starting activity: Intent { act=android.intent.action.DIAL dat=tel:8883333,444 cmp=com.android.contacts/.DialtactsActivity }

Я также пробовал кодированную форму, "tel: 8883333% 2C444", без разницы в поведении на этих телефонах. Я попробовал "p", как уже упоминалось, но эти символы были опущены, что привело к неправильному заполнению номеров 888-333-3444, и я не уверен, что "p" в любом случае верен.

Итак, вопрос: есть ли способ указать паузу, которая работает для большинства или всех дозвонщиков Android?

4b9b3361

Ответ 1

Короткий ответ: Не похоже, что это возможно с помощью собственного набора номера.

Длинный ответ:

Нативный наборщик в Android использует следующий код, чтобы извлечь номер, который вы передаете в номер, используя Intent

if ("tel".equals(uri.getScheme())) {
  // Put the requested number into the input area
  String data = uri.getSchemeSpecificPart();
  setFormattedDigits(data, null);
  return true;
} 

В рамках метода setFormattedDigits число преобразуется таким образом:

  String dialString = PhoneNumberUtils.extractNetworkPortion(data);

Взглянув на документы для extractNetworkPortion, вы заметите, что это: "Извлекает часть сетевого адреса [где]. Сетевая адресная часть - это все до разделителей цифр DTMF (пауза или ожидание).

Таким образом, код намеренно прерывает символ паузы и все, что приходит после него. Единственная альтернатива, которую я могу придумать, это заменить дозвонщик или использовать действие ACTION_CALL вместо ACTION_DIAL. Это будет обходить дозвонщик, поэтому его следует использовать с осторожностью.

Ответ 2

От android латинский исходный код:

<!-- Pause is a comma. Check PhoneNumberUtils.java to see if this has changed. -->
<Key 
    android:codes="44"
    android:keyLabel="Pause" />

Я не уверен на 100%, если он открыт, но вы можете использовать:

PhoneNumberUtils.PAUSE

Ответ 3

пауза для набора номера была запятой в течение 30 лет

Если телефон android совместим с ITUT V.250, ATS8 = 2 должен установить задержку, вызванную запятой, на 2 секунды. (возможно, что оно каким-то образом установлено на 0s)

ITUT - отличная система сертификации, вы можете бесплатно скачать их стандарты.

Ответ 4

',' является стандартным, но HTC использовал 'p' в магии rogers, вы пробовали с 'p'? HTC Magic использует p

Ответ 5

Это ужасно и опасно. Деловые люди, получающие телефонные звонки по телефону, должны постоянно переключаться туда и обратно, чтобы получить номер.

Просто сделайте так, как надо:

tel://+1-877-555-1212,,,2345678#

Наберите номер 877 number number, затем введите код конференции участника и 'enter' (#), если он выбран в любом месте на телефоне.

Это так просто. Тот факт, что это не работает в Android, - это шаг продаж iPhone.

Ответ 6

В дальнейшем для справки RFC-2806 указывает сохранение телефонных номеров в формате:

tel:number;postd=post-dial

Где number может начинаться с + для преднамеренного набора и может включать - или . в качестве визуального разделителя, а post-dial может содержать числа, буквы верхнего регистра AD, #, *, p для паузы и w для ожидания.