Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between TYPE_ACCELEROMETER and TYPE_LINEAR_ACCELERATION sensors?

I think TYPE_ACCELEROMETER shows devices acceleration. However, I can't understand when I should use TYPE_LINEAR_ACCELERATION?
I need to calculate the speed of moving the device. Which sensor is proper for this application?

Also, I read that TYPE_LINEAR_ACCELERATION uses accelerometer and orientation to know where is directed the gravity and then subs.

How is this possible? How Android find out about orientation of device and subtract it?

like image 859
Taher Avatar asked Dec 13 '14 17:12

Taher


People also ask

What is the difference between the accelerometer and orientation sensor?

Accelerometer detects acceleration in space. The reason why it will always detect an acceleration of 9.8m/s^2 downwards is because gravity is equivalent to acceleration in space. Orientation detects if your device's axis are rotated from the real-world; it detects tilts and and degrees from the magnetic North.

Which sensor is used in accelerometer?

An accelerometer works using an electromechanical sensor that is designed to measure either static or dynamic acceleration. Static acceleration is the constant force acting on a body, like gravity or friction. These forces are predictable and uniform to a large extend.

Can an accelerometer measure linear acceleration?

Due to this, the accelerometer measures both the linear acceleration due to motion as well as the pseudo-acceleration caused by gravity. The acceleration caused by gravity is referred to as a pseudo-acceleration as it does not actually result in a change in velocity or position.


1 Answers

According to http://developer.android.com/reference/android/hardware/SensorEvent.html#values TYPE_LINEAR_ACCELERATION is the same as TYPE_ACCELEROMETER minus gravity: acceleration = gravity + linear-acceleration. So with TYPE_LINEAR_ACCELERATION you can't detect device orientation because it doesn't provide gravity data.

Acceleration is the second derivative from object location, speed (velocity) is the first derivative. It means that you can calculate relative change in velocity from acceleration, but you can't know from it what exact values of velocity the change is applied to, in general case. For example you can't say if the phone stands on a table in room or in a constantly moving car, in both cases the acceleration may be zero.

Games use accelerometer input to track user's feedback, since it doesn't matter for games if user sits in a moving car or home at a table, acceleration just fits that purpose perfectly (filtering out the speed data). If you really need speed then you should use other sensors, such as GPS.

It may be a safe assumption that the phone initially has the same speed as the user, so you can calculate speed of phone when user throws it away, relative to the user, but that's all.

like image 159
Mixaz Avatar answered Oct 03 '22 03:10

Mixaz