2015-07-07 2 views
-1

Я пытаюсь создать приложение, которое может работать на Android, iOS и Windows Phone с помощью PhoneGap. В настоящее время у меня есть только телефоны с Android, поэтому я не могу знать, существует ли проблема, с которой я столкнулся, в iOS и WP.PhoneGap: API устройства не работает

Я попробовал уведомление (предупреждение, звуковой сигнал и вибрация) и API-интерфейсы камеры. Я взял строки кода из документации Apache Cordova. Я построил приложение на сайте PhoneGap Built, отсканировал штрих-код и т. Д. Приложение установлено и запущено отлично на телефонах, но ничего не работает (например, когда я нажал на ссылку «Вибрация», он не вибрирует) ,

Установка и все были выполнены моими преподавателями (я нахожусь в межсезонье), поэтому, я думаю, это нормально для этой части. Я проверил разрешения использования в AndroidManifest.xml, и все в порядке.

Я искал ответы, поиск в google, форумах и т. Д., Но до сих пор я не нашел ничего, что соответствовало бы или исправляло мою проблему. Вот почему я публикую это сообщение (пожалуйста, не обращайте внимания на ошибку языка, я не являюсь носителем английского языка).

Заранее благодарю вас за помощь.

Edit:первого телефона: Samsung Galaxy Гранд Plus (GT-I9060I), Android: 4.4.4. 2-й телефон: Samsung Galaxy S5 Prime (SM-G901F), Android: 5.0.2

Использование версии Cordova 5.0.0. Необходимые функции плагина уже добавлены.

код из документации Apache Cordova для уведомлений:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Notification Example</title> 

<script type="text/javascript" charset="utf-8" src="cordova-1.5.0.js"></script> 
<script type="text/javascript" charset="utf-8"> 

// Wait for PhoneGap to load 
// 
document.addEventListener("deviceready", onDeviceReady, false); 

// PhoneGap is ready 
// 
function onDeviceReady() { 
    // Empty 
} 

// Show a custom alert 
// 
function showAlert() { 
    navigator.notification.alert(
     'You are the winner!', // message 
     'Game Over',   // title 
     'Done'     // buttonName 
    ); 
} 

// Beep three times 
// 
function playBeep() { 
    navigator.notification.beep(3); 
} 

// Vibrate for 2 seconds 
// 
function vibrate() { 
    navigator.notification.vibrate(2000); 
} 

    </script> 
    </head> 
    <body> 
    <p><a href="#" onclick="showAlert(); return false;">Show Alert</a></p> 
    <p><a href="#" onclick="playBeep(); return false;">Play Beep</a></p> 
    <p><a href="#" onclick="vibrate(); return false;">Vibrate</a></p> 
</body> 

+0

Укажите версию Android/API. Также укажите модель и сделайте свой Android-телефон (ы). – Sufian

+0

Я отредактировал свое сообщение. –

+1

показать код вашего кода –

ответ

0

Если у вас возникли Cordova версии до 3.0.0, то вы должны включить плагины вручную в config.xml, который проживает в ресурсах папка. Если версия cordova> = 3.0.0, вы должны включить эти собственные функции через командную строку.

В методе OnDeviceReady() вам необходимо указать такие события, как click, touchhend, pagebeforeshow и т. Д. т. е. вы должны регистрировать слушателей в элементах HTML, чтобы они слушали события.

+0

У меня есть Cordova 5.0.0, и я уже добавил функции через командную строку (согласно документации Apache Cordova для этой версии: плагин cordova add cordova-plugin-vibration) , поэтому он не является источником проблемы. Но спасибо за ваш ответ. –

0

Кажется, что я не использовал правильную версию Apache Cordova Documention (5.0.0), но более старую версию. Следующий код берется из документа и работает только для vibrate(), и еще раз ничего не происходит для playBeep() и showAlert(). Это не имеет смысла.

Я также попробовал API-интерфейс камеры (из правильной версии документа), и он тоже не работает. Я действительно не понимаю, почему это нормально для вибрации, а не для другого API.

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Notification Example</title> 

     <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
     <script type="text/javascript" charset="utf-8"> 

     document.addEventListener("deviceready", onDeviceReady, false); 
     function onDeviceReady() { 
      console.log(navigator.notification); 
      console.log(navigator.vibrate); 
     } 
     function alertDismissed() { 
      alert('Dismissed'); 
     } 
     function showAlert() { 
      navigator.notification.alert(
        'You are the winner!', // message 
        alertDismissed, // callback 
        'Game Over', // title 
        'Done'     // buttonName 
        ); 
     } 
     function playBeep() { 
      navigator.notification.beep(2); 
     } 
     function vibrate() { 
      navigator.vibrate(3000); 
     } 

    </script> 
</head> 
    <body> 
     <p><a href="#" onclick="showAlert(); 
      return false;">Show Alert</a></p> 
     <p><a href="#" onclick="playBeep(); 
      return false;">Play Beep</a></p> 
     <p><a href="#" onclick="vibrate(); 
      return false;">Vibrate</a></p> 
    </body> 
</html> 
Смежные вопросы