in my point of view, it's very difficult to implement if you use JAVA, because you have to handle hardware directly.