Sounds like you have a problem with device, not server. There are some filtering options available that might help with some of the issues that you mentioned:
If I use this in the config file like this:
<entry key='filter.enable'>true</entry>
<entry key='filter.maxSpeed'>500</entry>
Will it considered the positions having 500 knots of speed are not filtered out or it will set the valid as '0'?
filter.maxSpeed would not insert the position into the table? or it will do something else?
Max speed filtering uses distance and time difference, not the speed value from position.
Okay, then when I use this and the condition goes fail, it will not report to the server?
It will be filtered out.
I have found some positions which are being reported unexpectedly on the server. The device is stayed at a position and it sends the position to the server wrong or it shows device motion is true and due to this, it also sends some wrong speed and valid is true. How to resolve this problem?