Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PhoneGap事件volumeupbutton和volumedownbutton不工作_Javascript_Android_Cordova_Phonegap Plugins - Fatal编程技术网

Javascript PhoneGap事件volumeupbutton和volumedownbutton不工作

Javascript PhoneGap事件volumeupbutton和volumedownbutton不工作,javascript,android,cordova,phonegap-plugins,Javascript,Android,Cordova,Phonegap Plugins,我使用的是PhoneGap Api 1.4.1,也尝试了1.5.0,PhoneGap事件volumeupbutton和volumedownbutton不起作用,在android设备上也不起作用,在emulator上也不起作用。当按下音量按钮up或down时,它必须显示警报,请参见代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/str

我使用的是PhoneGap Api 1.4.1,也尝试了1.5.0,PhoneGap事件volumeupbutton和volumedownbutton不起作用,在android设备上也不起作用,在emulator上也不起作用。当按下音量按钮up或down时,它必须显示警报,请参见代码:

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

PhoneGap音量下降按钮示例
//加载PhoneGap时调用onDeviceReady。
//
//此时,文档已加载,但phonegap.js尚未加载。
//加载PhoneGap并与本机设备通话时,
//它将调用事件“DeviceRady”。
//
函数onLoad(){
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
}
//PhoneGap已加载,现在可以安全地调用PhoneGap方法
//
函数ondevicerady(){
//注册事件侦听器
document.addEventListener(“volumedownbutton”,On VolumeDownKeyDown,false);
文件。添加的文件列表(“volumeupbutton”,onVolumeUpKeyDown,false);
}
//处理音量下降按钮
//
函数onVolumeDownKeyDown(){
警惕(“下降”);
}
函数onVolumeUpKeyDown(){
警惕(“向上”);
}

要在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;
}
我从cordova bug报告中复制了这段代码。此代码对cordova 2.0有效。我想您必须将“cordova.fireDocumentEvent”更改为“phonegap.fireDocument”或“phonegap.fireDocumentEvent”

更新: 刚刚写了一篇关于这个bug的小博文,上面的代码解决了这个问题。可在该帖子中找到Cordova问题跟踪程序的链接:

更新2: 该问题似乎在cordova 1.9中得到了解决:


希望这能有所帮助。

我也在iphone上试用过,但它也不起作用:(Iphone和Android不支持错误的问题:P什么是错误的问题?如果您觉得您的问题不必要,您可以自由删除您的问题或自己回答。您可以提供电话间隙插件吗?我需要cordova-1.8.1.js我想这一个也会更容易,如果您覆盖您的本地入口点(继承自DroidGap的类)并将其传递到那里。我想我会在cordova-project中提交一份错误报告。坦率地说,我仍然不知道java代码我是一名学习者,请帮助meSolution 1:phonegap 1.9解决方案2的更新:(如果不使用phonegap构建)打开您唯一的*.java文件并将代码添加到该文件的上面。(搜索最后一个}并将其添加到前面)。