SilvanaBanana

  • Nov 27, 2020
  • Joined Nov 4, 2020
  • 0 best answers
  • In case anyone is reading: This is obsolete, I have found another workaround to avoid this problem at all. (I remap the keys by modifying the default.kl file on the device. Yes this requires rooting.)

  • In case someone else is facing this problem when creating a node and assigning the script in code: the answer above works, node.set_process(true) did the trick.

  • Hello, I am currently trying to invoke callback methods when the Volume Keys or a Hardware Key (Back, Home, Overview ) is pressed. Therefore, I started to implement a custom android module but atm, I am wondering how I can override these methods as they are part of the Activity class and not of GodotSingleton.

    Is there a way to intercept presses of the Volume/SystemUI Buttons and execute my own code? I want something like this:

        public class GodotInputHandling extends Godot.SingletonBase {
            private static final String TAG = "inputHandling_Activity";
        
            private Activity activity;
            private int instanceId = 0;
        
            static public Godot.SingletonBase initialize(Activity p_activity)
            {
                return new GodotInputHandling(p_activity);
            }
        
            public GodotInputHandling(Activity p_activity)
            {
                registerClass("GodotInputHandling", new String[]
                    {
                        "initModule",
                    });
                activity = p_activity;
            }
        
            public void initModule(int _instanceId) {
                //some init code here if needed
            }
        
            //I want something like this, but it should override the metod in the activity
            @Override
            public boolean dispatchKeyEvent(KeyEvent event) {
                //check which key it was and call method in gdscript like:
                // if(event == .... ){
                //     GodotLib.calldeferred(instance_id, "_on_volume_down_pressed", new Object[] { });
                // } else {
                //      GodotLib.calldeferred(instance_id, "_on_foo_pressed", new Object[] { });
                // }
        
            }
        
            //Or something like this, but this method is also part of the activity
            @Override
            public boolean onKeyDown(int keyCode) {
                //...
            }
        
        }