This is project review from an application developer.
Finding information on the problem of precision timing is proving more difficult then I thought. Theoretically java does have timers that should be as precise as 1 millisecond. However most mobile devices use different chips for processing information which operate on different frequencies so the compatibility of such a precise system is deeply in question. I am not exactly sure that the timing will be same on all devices. We would have to test it out. The problem with this is that if the timing mechanism is not precise, I can not rely on it to give me an accurate measurement in milliseconds to see if our calculations are correct.
Maybe you have some kind of hardware that could independently (from the phone) measure the timing and we can compare the result?
I use Netbeans IDE 6.0 for mobile java application programming. It is computer based and has an emulation system for a mobile phone. My problem is however that such emulation is only confined to testing the application on the pc. It does not actually emulate the hardware of the mobile phone itself, it just passes through a Java virtual machine on the PC. This means that if I use my profiler (an application add-on which is used to calculate memory usage, timing etc. ) I will actually get a measurement of the program running on the PC and not on the mobile phone. And when I do transfer the application to the mobile phone I might not get the same result. This would have to be thoroughly tested and measured. I am not sure you know how Java works and I don’t mean to offend you if I am being overly simplistic. Java has a virtual machine on top of every hardware so basically every java programmer programs for the virtual machine and not for the hardware itself. Java sun and various other open source projects develop the virtual machines which interface with the hardware itself. This is why Java is compatible with almost everything out there (mobile phones, pc’s, macbooks, pda’s etc).
I also have concerns using Bluetooth to transmit sounds to the mobile phone. As see it the system should be as covert as possible. Therefore I would recommend using a Bluetooth audio hands free device. Those are usually just ear pieces which use Bluetooth to communicate. Bluetooth itself already has many different protocols programmed on top of it and we would have to use those as developing a new protocol for Bluetooth. It would be a hard job for many people. Now, Bluetooth can be jammed or scanned theoretically. It would be best if the earpiece was linked to the serial port of the phone by a wire like regular headphones you get with every mobile. This would make the system more visible, but reduce the chances of it being scanned or jammed. I think Bluetooth hands free devices, once paired create a serial gateway which transmit audio files and the connection remains active until the gateway is broken.
Different Bluetooth protocols do not remain active after data is transmitted (one example is the OBEX push protocol which is used to transfer files to and from the mobile phone) they just switch on, transmit data and switch off after the transmission is complete. In my opinion it is essential to save time where ever possible. It would not be wise to transfer audio data to the phone from one device via Bluetooth, and then transfer the data to a hands free earpiece device as too much time could be lost. Whether we use a Bluetooth hands free device or a regular (wire) hands free device for the earpiece you would have to decide. The wire would be more visible, but the transmission could not be scanned and we would save some time and gain some accuracy. Which is more important to you?
The most precise solution would be this. Your hardware device does the measurement of time as precisely as possible. It just sends the timing information via Bluetooth to the mobile device via OBEX push (not the audio itself, but rather some piece of information which my software could decode and make the necessary calculations). My application is started and prepared on a mobile device. The application itself has all the audio files within it. It calculates from the data received from your device and from a certain algorithm decides which sound to play. The sound is played through a regular wire mono headphone. The wire could be hidden by clothing or by using transparent or skin color wire. Or if we use a Bluetooth earpiece then the sound would be transmitted through radio waves to the Bluetooth earpiece. If I understood you this would be option B.
Option A would be that the entire application could be in JAVA and that pressing a button would signal the start of the timer. If we decide on this option there are some problems. One, as we already discussed would be precision. We would have to test it out and compare it to some other independent system of timing. I think you could think of a better way than me to achieve this. It would then do all the timing measurement’s decide which sound to play (sound would again be hard coded in the application itself) and play it either via regular wire or Bluetooth earpiece.
Another problem is that your system is rather expensive and many people could be tempted to disassemble it hire a hacker to crack the application, and steal the idea and sell it themselves.
I can make many different types of protection for the mobile application, however I myself given enough time and willpower could crack any and all protections made by anyone. I used to be a security consultant for a government agency here. That is really my greatest fear there are many people with excellent technical skills who can and will find holes in the system if they have enough time and resources. I think that most people using your system would be professional gamblers which wouldn’t be much of a threat themselves, however if they want to steal the idea they could find and hire a hacker to do it for them.
It is up to you to decide which could suit our needs best.
I am ready to do a small test application and need specific instructions on what we need to do.
Any and all calculations would be completely customizable via either a hidden menu or a public menu. I can code any or both of these. For example there could be a hidden menu for us which would be brought up by pressing a series of keys for tweaking sensitive data which could give ideas to potential thieves which want to steal the idea. We could also make a public menu which would be used by the system user himself for comfort or to customize options which would not be a threat.
Is the option of selling the system complete with the mobile phone possible? This would perhaps raise the price but would eliminate the possibility of inaccuracy which could be caused by using different phone models. Also one other option could be using a PDA they use much faster processing chips. It is not required to sell the device itself along with the software we could just test the most popular devices and make recommendations for users which devices to use. A second option would be to raise the price and box the complete system in a nice little package along with a system that we tested and which could be sold along with the Bluetooth earpiece any and all miscellaneous electronic devices, documentation and a nice color picture for the system.
There is also the option to make the system dependent of an online server and sell monthly subscriptions generating codes on a remote server and inactivating software after the subscription expires. Those are all just ideas which spring to mind.
We would have to brainstorm any and all details together and make something which would be profitable enough.
Let’s start one step at a time though and make sure that the system is plausible. You mentioned a simple test application and I agree that this would be a good place to start.
Please explain what exactly I can do to test the possibility of the system out.
Thank you for taking your time to read this letter,
P.S. I do not think this will be an easy project, the programming might be simple in theory, however I think there will be a lot of trial and error testing and tweaking. I am confident we could achieve success.