我正在开展一个项目,我必须找到方向。我写了一个代码并做了测试。它在某些设备上运行良好,但在其他设备中它(指针)甚至没有移动。我对此进行了研究,并了解到磁传感器是Compass工作的唯一关键。
public class Compass extends Activity implements SensorListener {
SensorManager sensorManager;
static final int sensor = SensorManager.SENSOR_ORIENTATION;
ViewCOm viewcom;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set full screen view
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
viewcom = new ViewCOm(this);
setContentView(viewcom);
// get sensor manager
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
}
// register to listen to sensors
@Override
public void onResume() {
super.onResume();
sensorManager.registerListener(this, sensor);
}
@Override
public void onPause() {
super.onPause();
sensorManager.unregisterListener(this);
}
// Ignore for now
public void onAccuracyChanged(int sensor, int accuracy) {
}
// Listen to sensor and provide output
public void onSensorChanged(int sensor, float[] values) {
if (sensor != Compass.sensor)
return;
int orientation = (int) values[0];
viewcom.setDirection(orientation);
}
}
我的问题是,有没有其他方式像GPS或MAP来创建指南针?
提前致谢。
答案 0 :(得分:2)
我的问题是,有没有其他方式像GPS或MAP来创建指南针?
如果不涉及磁传感器,则无法创建罗盘功能。 GPS在这里也没有帮助,它只会让你计算你要移动的方向(并且因为你需要至少两个不同的坐标,你站立时不能这样做)。您可以尝试计算North的位置,但请注意,这将需要更大的坐标差异,而不是5步。
答案 1 :(得分:1)
基本上可以使用三种主要类型的审查 罗盘。
1) HALL传感器。
2)各向异性磁阻(AMR)。
3)巨磁阻(GMR)。
这些类型中的任何一种都具有改变其电阻的磁传感器 与特定方向的磁场成比例。
芯片上的电路检测磁场强度并制造 该字段及其方向可用作数字数据。上的CPU 只要需要罗盘数据,手机就会提取此数据。
所以,如果手机中有任何一个,你可以使用指南针。