我试图找出如何开始在iPhone上实现传感器融合.我从大卫萨克斯的演讲开始:
尽管David的演讲非常具有说明性,但它并没有显示任何代码(这很有意义).我已经看过GLGravity(提取重力矢量)和AccelerometerGraph示例,但我需要一些帮助或至少指导如何组合加速度计,陀螺仪和罗盘输入,以便结果类似于David所示.
谢谢
我在iPhone/iPad指南针开发方面遇到了一些问题.
从CLHeading中取出的真正的标题总是给我'-1'值,我被困在这里.这是我的代码:
self.locationManager = [[[CLLocationManager alloc] init] autorelease];
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.delegate = self;
self.locationManager.headingFilter = 0.5; //1 degrees
[self.locationManager startUpdatingHeading];
Run Code Online (Sandbox Code Playgroud)
我也发现了一些东西,就是当我在地图应用程序或指南针应用程序中使用位置的东西时,trueHeading值突然读取正确.我想知道是什么原因,任何想法?它发生在iPhone4和iPad上.
每当我在设置中关闭位置服务并重新启用它时,它也会发生,它将无法读取正确的trueHeading值,我想知道因为我创建的应用程序无法启用位置服务?
无论如何,提前谢谢
---我的解决方案---
见下文.
是否可以使用iOS在我自己的应用程序中使用的原生指南针?或者我是否需要绘制自己的指南针并制作动画?
我正在使用android传感器数据.我的应用程序使用
SensorManager.getRotationMatrixFromVector(
mRotationMatrix , event.values);
Run Code Online (Sandbox Code Playgroud)
它一直运作良好,直到今天早上,当旋转矩阵开始发送大量噪声数据时(在一秒内将N改为W).
这对我的代码来说不是问题,因为星期五工作并没有做任何改变.我使用了市场上的指南针应用程序,指南针提供随机数据.
我已经在另一台平板电脑上测试了我的应用程序,它运行良好.
有人知道为什么会这样吗?传感器有问题吗?需要校准吗?
有没有人想用iPhone找到真正的方向?我想实现这样的应用程序,其中我需要找到iPhone指向的方向,并希望使应用程序与iphone 3GS中的指南针应用程序相同.
iPhone 3G是否支持罗盘功能?并且任何人都可以告诉我罗盘应用程序如何像真正的磁罗盘那样准确地找到方向吗?
请帮帮我.我处于危急的境地.
提前致谢.
iphone direction cllocationmanager map-directions compass-geolocation
我正在开发指南针应用程序,我希望指南针指向特定的纬度经度位置,而不是通常的北方.我发现了一些问题,与我的问题,但我不管理,使他们为我工作.这是我的代码:
public class MainActivity extends AppCompatActivity implements SensorEventListener {
private ImageView image;
private float currentDegree = 0f;
private SensorManager mSensorManager;
private TextView tvHeading;
private Location location = new Location("A");
private Location target = new Location("B");
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.imageViewCompass);
tvHeading = (TextView) findViewById(R.id.tvHeading);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
location.setLatitude(54.903535);
location.setLongitude(23.979342);
target.setLatitude(54.904618);
target.setLongitude(23.978782);
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onPause() { …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个使用方向传感器的箭头,以指向特定位置.Google地方信息在ListView中为找到的每个地点实施此箭头.
我已经设法获得了方位角,但是给定了一个位置,我不知道如何继续计算我需要的角度.而且,我需要从真正的北方和磁北方进行转换.有没有人有这种实施的例子?
提前致谢.
在过去的几天里,我一直在研究小型指南针应用程序,并且已经启动并运行了代码,但似乎指南针读数不准确.在校准了两部手机之后,我第一次测试了我发现这个,我只是把手机靠在平面上,看着读数然后水平翻转并将它放在同一平面上(180转)并且值得做不改变180*它接近240*.
然后我测试了读数与指南针,有时读数似乎接近,但在其他点,它超过50*关闭.我甚至试图将我的手机和指南针放在地板上以保持指南针远离任何磁干扰同样的结果(注意我也保持指南针和手机分开,通过排列书的边缘使它们保持在同一方向) .
然后我将示例应用程序放在另一部手机上(首先是nexus S,第二个是Motorola droid 1).在两部手机之间,差异的范围是在某些点相等,但最多的点在50到15度之间.
我查看了文档,还浏览了许多不同的论坛帖子,我没有看到任何人有相同的结果.我的代码中可能存在一些小错误,导致我的读数错误地出现,或者一些我没有看到的记录错误.
任何见解或建议将不胜感激!!
继承传感器,我在SensorEventListener类中更改了代码
public void onSensorChanged(SensorEvent event)
{
// If the sensor data is unreliable return
if (event.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE)
{
Toast.makeText(main.this, "Sensor Status Unreliable",Toast.LENGTH_SHORT).show();
}
// Gets the value of the sensor that has been changed
switch (event.sensor.getType())
{
case Sensor.TYPE_ACCELEROMETER:
m_vfgravity = event.values.clone();
break;
case Sensor.TYPE_MAGNETIC_FIELD:
m_vfgeomag = event.values.clone();
break;
}
if (m_vfgravity != null && m_vfgeomag != null)
{
if(SensorManager.getRotationMatrix(m_vfinR, m_vfI, m_vfgravity, m_vfgeomag))
{
SensorManager.getOrientation(m_vfinR, m_vforientVals);
m_fCompBearing = (float) Math.round((Math.toDegrees(m_vforientVals[0])) …Run Code Online (Sandbox Code Playgroud) 我正在寻找Android的指南针示例.我需要做的就是获得正确的方位(纵向和横向模式).
我已经找到了几个样本,一些只使用Sensor.TYPE_ORIENTATION,一些使用Sensor.TYPE_ACCELEROMETER&的组合Sensor.TYPE_MAGNETIC_FIELD.
哪个是正确和常见的方式来获得轴承让我们说Android 1.6 - 4.0?
我正在尝试构建一个简单的增强现实应用程序,因此我开始使用传感器数据.
根据此线程(Android罗盘示例)和示例(http://www.codingforandroid.com/2011/01/using-orientation-sensors-simple.html),使用Sensor.TYPE_ACCELEROMETER和Sensor计算方向. TYPE_MAGNETIC_FIELD并不适合.
所以我无法获得"好"的价值.azimut值根本没有任何意义,所以如果我只是将电话向上移动,则值会发生极大的变化.即使我只是旋转手机,这些值也不代表手机方向.
有谁有想法,谁根据给定的例子提高价值质量?
android sensor orientation augmented-reality compass-geolocation