for non jump actions your first rule is checking the difference between Y positions. if it is for example < 2 pixels you continue with the rest.
then you check action state (type of action, frame count...) and based on that you check for 'hitpoints' based on the X positions ranges.
for jumping actions you combine the X position ranges with Y position ranges as some hits only may occur at the last frames of the upgoing jump movement.
the 'easiest' would be to create an editor for this in B4J as it would require less testing than doing it all manual if your animations have a lot of frames.
I don't know if Box2D would be a real help here as it would probably require to create all hit points for current player states realtime or pre-create and enable/disable and you'll need to check Y positions anyway as collision rectangles may overlap when no hit is possible as you walk in 4 directions.
Maybe it has some 2D specific method for this, I dunno.
another way to deal with it could be such a solution: split the field to lots of lines on the Y axis. the center of the field is 0 when you go to the top it will be 10+ on on the bottom 10-. so you map the field on the y axisin 0.02 steps. now this will be your scale factor.
what you will win with in this way?
1. you scale the player size with the value so the player shrinks when he goup and get bigger when he go down so a nice effect like he comes near to you or go far from you
2. you can check the scale value of the player and opponent to know if they re on the same line (+/1 x lines) then hit will register.
3. like this you can now also perform a jump but keep the scale factor so if player jump on line -1.2 bassicaly what you do in a jump you move him up but because the scale of the player stays the same you only change his y position then the you get another visual filling of the player and a difference if he go up or jump and the other think you can know is even if the y axis change but scale value is the same you wont register any hits by player on wrong y axis.
like player jump on line (scale value) -1.2 and perform a hit while he is jumping and he reaches line2.2 because of his scale value you wont register a hit to an opponent that also is in that line (2.2).
i was thinking about that solution right now so i think that could work.