2012-03-19 14 views
6

Używam PhoneGap Api 1.4.1, a także próbowałem z 1.5.0, przycisk PhoneGap Event volumeup i volumedown nie działa, ani nie działa na urządzeniu z Androidem, ani nie działa na emulatorze. gdy zostanie naciśnięty przycisk głośności w górę lub w dół, należy go wyświetlić alert zobaczyć kod:PhoneGap Event volumebutton i volumedownbutton nie działa

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

Próbowałem tego również w iPhonie, więc nie działa na nim również :( – AsadYarKhan

+0

Złe pytanie nie jest obsługiwane w Iphone i Android: P – AsadYarKhan

+0

Co to jest złe pytanie? Możesz usunąć swoje pytanie lub odpowiedzieć samodzielnie, jeśli czuć, że twoje pytanie jest niepotrzebne –

Odpowiedz

8

można wykonać następujące czynności, aby uzyskać przycisk głośności działa z Androidem:

@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; 
} 

skopiowałem ten kod z raportu o błędzie Cordova. Ten kod jest ważny dla cordova 2.0. I cienki musisz zmienić „cordova.fireDocumentEvent” na „phonegap.fireDocument” lub „PhoneGap.fireDocumentEvent”

zmiana: Właśnie napisałem mały blog-post o błąd, który został rozwiązany przez kod powyżej. Link do Cordova-Emisji-Tracker można znaleźć w tym poście: http://christian-kuetbach.de/blog/post/13

Aktualizacja 2: Zagadnienie wydaje się ustalić w Cordova 1.9: https://issues.apache.org/jira/browse/CB-871

Nadzieja to pomaga.

+0

możesz podać go jako wtyczkę luki telefonicznej –

+0

Mam cordova-1.8.1.js potrzebuję tego również –

+0

Myślę, że byłoby łatwiej, jeśli nadpisałeś swój natywny punkt wejścia (klasa , który dziedziczy z DroidGap) i po prostu tam to ścieżki.Myślę, że zgłoszę raport o błędzie w projekcie cordova –

Powiązane problemy