2012-03-19 28 views
6

Estoy usando PhoneGap Api 1.4.1 y también probé con 1.5.0, el botón VolumeUpbutton de PhoneGap Event y el botón volumedown no funcionan, ni funciona en el dispositivo Android ni funciona en el emulador. cuando se pulsa el botón de volumen hacia arriba o hacia abajo se debe mostrar la alerta ver el código:PhoneGap Event volumeupbutton y volumedownbutton no funciona

<!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

También intenté esto en el iphone, pero tampoco funciona :( – AsadYarKhan

+0

Pregunta incorrecta no admitida en Iphone y Android: P – AsadYarKhan

+0

¿Qué es una pregunta incorrecta? Puede eliminarla o responderla usted mismo si siente que su pregunta es innecesaria. –

Respuesta

8

puede hacer lo siguiente, para obtener el botón de volumen se ejecuta 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; 
} 

copié esta código de un informe de error de cordova. Este código es válido para cordova 2.0. Me delgada que tendrá que cambiar "cordova.fireDocumentEvent" a "phonegap.fireDocument" o "PhoneGap.fireDocumentEvent"

actualización: acaba de escribir un pequeño blog-post sobre el insecto, que fue resuelto por el codigo arriba. El enlace a la Córdoba-Edición-Tracker se puede encontrar en ese puesto: http://christian-kuetbach.de/blog/post/13

actualización 2: La cuestión parece ser fijado dentro de Cordova 1.9: https://issues.apache.org/jira/browse/CB-871

Espero que esto ayude.

+0

puede proporcionarla como complemento de hueco de teléfono –

+0

tengo cordova-1.8.1.js necesito para este también –

+0

Creo que sería más fácil, si sobrescribe su punto de entrada nativo (la clase , que hereda de DroidGap) y simplemente lo dirijo allí. Creo que voy a presentar un informe de error en el proyecto cordova. –

Cuestiones relacionadas