I'm currently working on a project which requires the detection of user state (walking, running, driving), I've looked through some of the existing solutions on Android platform such as pedometer or calculating velocity with given acceleration, but I'm still unsure how I can approach this problem. Is there a way to accomplish this without much of data mining/signal processing? How can I solve this with simple logic? Or is this better solved with gps instead of accelerometer? The program will only need to return simple user-state descriptions like walking.
Trying to determine velocity of travel from the accelerometers isn't going to be very practical - it's a phone, not an inertial navigation system. But looking at the character of changes in accelerometer readings - either by simply taking the derivative (known as 'jerk') or by a more sophisticated form of high-pass filtering - might get you somewhere. (There was apparently some research done on recognizing gait of specific individuals as a means of owner identity verification). Trying to sort walking from running might be reasonable by this means.
For driving GPS might work better, Though movement analysis might as well. Presumably there would be some rumble noise and start/stop/cornering events but not the rhythmic gait of walking or running.
Probably what should do is either a) research what has been done or b) take a lot of raw data and then upload to a PC to analyze in the frequency domain and see if you find something that you can develop into an algorithm. Don't forget to take data with multiple subjects.