Android Compass Reading Different Values On Different Phones?
Hello :) I am working on an application that uses the compass and location to draw an arrow at the direction of a location. My problem is when I run my code on the emulator, all the arrows point the correct directions, and when I change the orientation of the emulator to landscape, all the arrows are still correct. But when I run the same ap开发者_高级运维plication on my Nexus One, the arrows are all correct when the phone is vertical, but when it turns to landscape all of the arrow are off by 90 degrees. It keeps the "top" of the phone as the reference to North. Thus you must correct the compass for the orientation of the phone. Does this happen on all real phones and the emulator is the different one? Or is this just the Nexus One? Thanks :)
From my understanding the current way the compass works it is supposed to always use the "top" of the phone or "default orientation" for the correct reading. This could have been different on earlier versions of android. It is said it is then up to developers to compensate for the screen orientation to represent the true north with orientation changes. Same goes for the accelerometer the axis stay based off of default screen orientation (so for most phones portrait, but tablets most would be landscape). I hate to refer you to the sdk but this link first paragraph explains: http://developer.android.com/reference/android/hardware/SensorEvent.html
精彩评论