2015-02-17 5 views
-2

Я посмотрел и посмотрел, но удивлен, обнаружив, что я не могу найти плагин или функцию, чтобы просто щелкать звуками клавиатуры через Phonegap. Мой вариант использования - то, что я реализовал пользовательскую цифровую клавиатуру, и я хочу просто предоставить звуковой щелчок, когда пользователь нажимает кнопки. Это просто случай использования медиа-плагина и воспроизведения звука? Я как бы понял, что простой вызов ОС будет проще.телефонный зазор - клавиатура iOS нажмите звук

Проведенный иногда просмотр пользовательского плагина, но я новичок в PhoneGap, поэтому хотел собрать варианты.

Предложения приветствуются.

ответ

0

Диалоги плагин имеет функцию звукового сигнала

Установите плагин:

cordova plugin add org.apache.cordova.dialogs 

Используйте гудок

navigator.notification.beep(1); 

Если вы хотите играть в родной раскладку клавиатуры звук, вы должны использовать этот код в пользовательском плагине:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),  
^{ 
    AudioServicesPlaySystemSound(1104); 
}); 

или

[[UIDevice currentDevice] playInputClick]; 

список других идентификаторов звуков вы можете использовать

http://iphonedevwiki.net/index.php/AudioServices

+0

Спасибо за ответ. Функция звукового сигнала несколько странная в iOS и не такая же, как обычная клавиатура ОС. – Dave

+0

звуковой сигнал - это единственная звуковая кордова. Обычная клавиша «клавиатура» операционной системы вызывается местной клавиатурой, если у пользователя есть звук активным, см. Мое редактирование, чтобы проверить, как воспроизводить входной звук клавиатуры. – jcesarmobile

+0

Отлично. Теперь прогресс в плагине. Поделитесь, когда я получу его работу. – Dave

0

OK - принято довольно долго, но сделал это .. Довольно запутанный для вновь PhoneGap/HTML парень. Как jcesarmobile указал - PhoneGap не делает этого для вас и navigator.notification.beep (1) не то, что я был после.

Невозможно написать плагин.

Номер обучения 1: PhoneGap 3 имеет аккуратный механизм для установки плагинов, что позволяет вам загружать файлы в нужное место в проекте и добавлять теги функций в нужном файле config.xml. Не все примеры в сети упоминают об этом.

Номер обучения 2: Проекты без буквы «Столица» в начале имени, похоже, вызывают проблему при добавлении плагинов ». Я использовал «плагины для телефонии add xxxx» на века, но файлы .h и .m не копировались, как ожидалось.

Номер обучения 3: у плагина есть функция «создать», которая сочетает в себе приятный шаблон плагина для вас. Я нашел это после того, как сделал свой собственный вручную, но там вы идете.

Учимся номер 4: plugman шаблон Сета цель для «cordova.plugins.xxx», так что не забудьте использовать, чтобы позвонить вам родную функцию от вашего Javascript (т.е. cordova.plugins.yourMethod)

Примечание 1: plugman создает пример с помощью одного метода (coolMethod). Вам нужно будет изменить это (очевидно). Кроме того, у него есть один файл .m, а не более типичные файлы .h и .m.

Уверен, что на пути было больше препятствий, но они не могут их вспомнить сейчас.

В конце концов, нативный код был очень прост. Я уже давно использовал вызов AudioServicesPlaySystemSound в быстром проекте, так что родной бит был намного легче для меня, чем для остальных.

Код приведен ниже. Вы заметите, что я возвращаю только успешный результат и устраняю обработку всех параметров.

  • (пустоты) clickSound: (CDVInvokedUrlCommand *) Команда { CDVPluginResult * pluginResult = ноль;

    dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^ { AudioServicesPlaySystemSound (0x450); }); pluginResult = [CDVPluginResult resultWithStatus: CDVCommandStatus_OK messageAsString: @ "done"]; [self.commandDelegate sendPluginРезультат: pluginResult callbackId: command.callbackId];

}

@end

Смежные вопросы