Отправка паузы в дозвонщик
В аналогичном ключе Отправка Паузы и ввода 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?
Ответы
Ответ 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
для ожидания.