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

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

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

Вот что видит 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?

Solutions Collecting From Web of "Отправка паузы в дозвонщик"

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

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

На родном дозвонщике в Android используется следующий код, чтобы извлечь номер, который вы передаете в dialer, используя 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 вы заметите, что это: « extractNetworkPortion часть сетевого адреса [где]. Сетевая адресная часть – это все до разделителей цифр DTMF (пауза или ожидание) .

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

Из исходного кода android's latin ime :

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

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

 PhoneNumberUtils.PAUSE 

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

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

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

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

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

Просто заставьте его работать так, как должно:

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

Если наберите номер паузы 877 тогда наберите код участника конференции и «введите» (#), если он выбран в любом месте на телефоне.

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

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

 tel:number;postd=post-dial 

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