2012-03-19 13 views
6

Sto usando PhoneGap Api 1.4.1 e anche io ho provato con 1.5.0, The PhoneGap Event volumebutton e volumedownbutton non funziona, né funziona su dispositivo Android né funziona su emulatore. quando si preme il pulsante del volume verso l'alto o verso il basso si deve visualizzare l'avviso vedere il codice:PhoneGap Event volume pulsante e volumedownbutton non funziona

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
         "http://www.w3.org/TR/html4/strict.dtd"> 
    <html> 
    <head> 
    <title>PhoneGap Volume Down Button Example</title> 

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

    // Call onDeviceReady when PhoneGap is loaded. 
    // 
    // At this point, the document has loaded but phonegap.js has not. 
    // When PhoneGap is loaded and talking with the native device, 
    // it will call the event `deviceready`. 
    // 
    function onLoad() { 
     document.addEventListener("deviceready", onDeviceReady, false); 
    } 

    // PhoneGap is loaded and it is now safe to make calls PhoneGap methods 
    // 
    function onDeviceReady() { 
     // Register the event listener 
     document.addEventListener("volumedownbutton", onVolumeDownKeyDown, false); 
     document.addEventListener("volumeupbutton", onVolumeUpKeyDown, false); 
    } 

    // Handle the volume down button 
    // 
    function onVolumeDownKeyDown() { 
     alert("Down"); 
    } 
    function onVolumeUpKeyDown() { 
     alert("Up"); 
    } 

     </script> 
    </head> 
    <body onload="onLoad()"> 
    </body> 
    </html> 
+0

Ho provato anche questo nel iphone non funziona su di esso pure :( – AsadYarKhan

+0

domanda sbagliata Non Supportato in Iphone e Android: P – AsadYarKhan

+0

Che cosa è una domanda sbagliata Tu sei libero di cancellare la tua domanda o rispondere da soli se si –

risposta

8

è possibile effettuare le seguenti operazioni, per ottenere il tasto del volume in esecuzione con Android:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    //If volumedown key 
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { 
     this.loadUrl("javascript:cordova.fireDocumentEvent('volumedownbutton');"); 
     return true; 
    } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { 
     this.loadUrl("javascript:cordova.fireDocumentEvent('volumeupbutton');"); 
     return true; 
    } else { 
     //return super.onKeyDown(keyCode, event); 
    } 
    //return super.onKeyDown(keyCode, event); 

    return true; 
} 

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    LOG.d(TAG, "KeyUp has been triggered on the view" + keyCode); 
    // If back key 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     this.loadUrl("javascript:cordova.fireDocumentEvent('backbutton');"); 
     return true; 
    } 
    // Legacy 
    else if (keyCode == KeyEvent.KEYCODE_MENU) { 
     this.loadUrl("javascript:cordova.fireDocumentEvent('menubutton');"); 
     return true; 
    } 
    // If search key 
    else if (keyCode == KeyEvent.KEYCODE_SEARCH) { 
     this.loadUrl("javascript:cordova.fireDocumentEvent('searchbutton');"); 
     return true; 
    } 
    return false; 
} 

ho copiato questo codice da una segnalazione bug di cordova. Questo codice è valido per Cordova 2.0. I sottili dovrete cambiare "cordova.fireDocumentEvent" a "phonegap.fireDocument" o "PhoneGap.fireDocumentEvent"

aggiornamento: appena scritto un piccolo blog-post riguardante il bug, che è stato risolto dalla codice sopra. Il link al Cordova-Issue-Tracker può essere trovato in questo post: http://christian-kuetbach.de/blog/post/13

aggiornamento 2: il problema sembra essere risolto entro Cordova 1.9: https://issues.apache.org/jira/browse/CB-871

Spero che questo aiuti.

+0

puoi fornirlo come plug gap telefonico –

+0

ho cordova-1.8.1.js ho bisogno anche di questo anche –

+0

Penso che sarebbe più facile, se sovrascrivi il tuo punto di accesso nativo (la classe , che eredita da DroidGap) e mi limito a tracciarlo lì. Penso che avrò un bug report nel progetto cordova –

Problemi correlati