There is now an official Google answer to this problem:
Open the Google Maps app and then follow these directions:
Tilt your phone forward and back
Move it side to side
And then tilt left and right
You may need to repeat the steps until your compass is calibrated.
The purpose of calibration is to figure out how to compensate for how the components in your phone (screws, speaker magnets, etc.) interfere with the measured magnetic field.
The calibration process is based on the fact that you can separate the internal and external contributions to the magnetic field by looking at how the field changes as the phone is ...
The sensor algorithm people worked hard to make sure that the "compass sensor" is not affected by stray ambient magnetic field. If you want to see magnetic field data, use the magnetic field sensor instead.
The common way to know that the device is subjected to an external magnetic disturbance is by comparing the magnetic sensor data with motion sensors (...
At any point in space, the magnetic field strength and direction is the net effect of all the magnetic field sources affecting that point. The earth's magnetic field is one of them. Magnetized screwdrivers, cars, refrigerator magnets, etc. all produce fields. Fields are also produced by current flowing through wires. It's like pouring water into a glass ...
Most Android Devices have a Geomagnetic Field Sensor built in. This sensor provides raw field strength data (in μT) for each of the three coordinate axes. You can also use theese values to program things like Metal Detectors.
I programmed one once, if you're interrested in source code let me know.
No, not every Android smartphone has real compass (magnetometer) sensor. Even Google claims that,
Few Android-powered devices have every type of sensor. For example, most handset devices and tablets have an accelerometer and a magnetometer (which refers to compass usage on latter text), but fewer devices have barometers or thermometers.
(Emphasis mine for ...
A compass is showing north, nothing more.
A gyro sensor checks the horizontal position, where is up and down. With this sensor you can create these funny games like "Waterslide", where the phone checks, to which side you hold your phone. The gyro sensor cannot see where north is, like the compass.
I registered the same phenomenon when going by one type of electric tramway in Prague on my old Motorola phone. It is happening because of strong electromagnetic fields from electric motors. But it happened only when accelerating or decelerating not all times.
Is your bus by any chance equipped with some strong electric engine?
Yes, it requires compass or magnetometer sensor to show the direction
Specific to Moto G4 plus, maps will work but you will not be able to see direction as you guessed. See Alpha Dog Senior Moderator remarks on the device forum
Google maps uses gps, so it will work fine. The actual direction your phone is facing is the only thing unknown. So if you are ...
Unfortunately, I assume, your phone does not have a magnetic compass.
Some sources do confirm this assumption:
http://www.devicespecifications.com/en/model/fb273756 (under "Sensors")
http://www.doogeemobile.com/doogee-t6.html (scroll down to Ken's question)
I use the HTC Desire 626, which also lacks a magnetic sensor. You can load up Pokémon GO, create a character, and get your starter, but you are unable to load any additional pokémon, any pokéstops, or gyms.
I have seen some other reports avlbout 90 degree compass deviations, and they were reported on android 4.4.3.
Now that was an extremely short lived version.
On 4.4.4 the problem vanished. So I am still convinced that this was a 4.4.3 problem.
Give this a go:
Try to stay away from magnetic fields as far as you can
Open GPS Essentials and tap on compass (calibration will not work when the compass is not showing)
Put the phone on a flat surface with the display pointing up
Move the phone slowly, 5 seconds per full rotation is ok
Rotate the phone three full cycles around the axis pointing upward ...
I've tested the compass fields measurments provided by Android phone and found out, that if I rotate the phone by 180 degrees, the field doesn't change to exactly opposite, which must be the case if the sensors are correct. This might be due inner magnetism of the phone details or sensor reading inacuracy.
If you don't compensate for that and just use ...