小编Sim*_*mon的帖子

需要从Sensor.TYPE_ORIENTATION数据计算旋转矢量

我需要从Sensor.TYPE_ORIENTATION获得的数据中计算出一个旋转矢量.

传感器数据定义如下:

  • 必须重新计算这些值才能成为正确的3d位置:值[0]:方位角,磁北方向和Y轴之间的角度,绕Z轴(0到359).0 =北,90 =东,180 =南,270 =西
  • 1:俯仰,绕X轴旋转(-180到180),当z轴向y轴移动时为正值.
  • 值[2]:滚动,绕Y轴旋转(-90到90),当x轴远离z轴时带正值

我需要所有三个值,如Z轴值(从0到360度).我尝试了很多,但无法弄清楚如何做到这一点:/

(编辑:要查看工作代码背后的想法,请查看DroidAR框架ActionWithSensorProcessing类,您可以看到如何处理不同的事件类型.)

我还尝试使用Sensor.TYPE_ACCELEROMETER和Sensor.TYPE_MAGNETIC_FIELD来自行计算这个3d矢量.这是代码:

final float[] inR = new float[16];
// load inR matrix from current sensor data:
SensorManager.getRotationMatrix(inR, null, gravityValues, geomagneticValues);
float[] orientation = new float[3];
SensorManager.getOrientation(inR, orientation);
mapMagAndAcclDataToVector(orientation); //here i do some *360 stuff
orientetionChanged(orientation); //then the correct values are passed (in theorie)
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我认为这很复杂.所以我打赌有一个简单的解决方案,如何重新计算ensor.TYPE_ORIENTATION的值,使它们成为一个3d旋转矢量,但我只是不知道该怎么做.如果你知道答案,请告诉我.

编辑:我应该添加,我想将值传递给OpenGL,使其与轴对齐,如下所示:

gl.glRotatef(values[1], 1, 0, 0);
gl.glRotatef(values[2], 0, 1, 0);
gl.glRotatef(values[0], 0, 0, 1);
Run Code Online (Sandbox Code Playgroud)

但由于奇怪的价值范围,我显然无法做到这一点.与SensorManager.getOrientation中的值相同的问题,因为当您通过水平线时它们也会翻转.

另一个解决方案是使用inR矩阵计算角度,但我认为必须有一个更简单的解决方案(?)

android opengl-es vector matrix sensor

8
推荐指数
2
解决办法
1万
查看次数

将经度纬度转换为米

我需要一个将gps位置映射到x/y值的函数,如下所示:

getXYpos(GeoPoint relativeNullPoint, GeoPoint p){
   deltaLatitude=p.latitude-relativeNullPoint.latitude;
   deltaLongitude=p.longitude-relativeNullPoint.longitude;
   ...
   resultX=latitude (or west to east) distance in meters from p to relativeNullPoint
   resultY=longitude (or south to north) distance in meters from p to relativeNullPoint
}
Run Code Online (Sandbox Code Playgroud)

我已经看到了"两个geoPoints距离"的一些实现,但它们都只计算了空中线距离.我认为deltaLongitude可以直接转换为米,但deltaLatitude取决于经度.有谁知道如何解决这个问题?

mapping latitude-longitude coordinates

8
推荐指数
1
解决办法
2万
查看次数

什么是常见的UDP用例?

任何人都可以告诉除了音频/视频的实时流媒体以外在哪里使用UDP协议?什么是UDP的默认用例?

udp use-case

8
推荐指数
2
解决办法
3010
查看次数

Easy Tracker中的Google分析自定义屏幕名称

我有一个带有重用活动的应用程序(它用于不同的目的,所以只跟踪活动名称对我没有帮助,这就是为什么我想在仍然使用EasyTracker时手动定义屏幕名称.我的代码如下所示:

EasyTracker t = EasyTracker.getInstance(this);
t.set(Fields.SCREEN_NAME, screenName);
// MapBuilder map = MapBuilder.createAppView();
// map.set(Fields.SCREEN_NAME, screenName);
// t.send(map.build());
t.activityStart(this);
Run Code Online (Sandbox Code Playgroud)

我从https://developers.google.com/analytics/devguides/collection/android/v3/screens获取了这些信息

我不想在没有EasyTracker的情况下这样做,因为我没有找到任何信息,在easy tracker的方法activityStart()和activityStop()中究竟发生了什么,所以我不能用自定义跟踪器重现这种行为,我认为其中的信息是在activityStart()方法中收集除了屏幕名称也非常有用.那么有人在轻松跟踪器中定义自定义值的经验吗?是这样做的好方法还是有更好的解决方案?

android google-analytics screen easytracker

7
推荐指数
1
解决办法
2664
查看次数

android:将Serializable对象置于意图中的问题

嗨,我有一个类的问题,我想通过把它放入putExtras()传递一个意图它的可序列化和代码看起来像这样:

public abstract class ObjectA extends ArrayList<ObjectA> implements java.io.Serializable{...}

public class ObjectB extends ObjectA {...}


...
Bundle extras = new Bundle();
extras.putSerializable("blabla", ObjectB);
intent.putExtras(extras);

...

Object y = getIntent().getExtras().get("blabla");
Run Code Online (Sandbox Code Playgroud)

问题是,y现在是一个ArrayList而不再是ObjectB,所以我不能把它转换..如果我将代码更改为

public class ObjectB implements java.io.Serializable {...}
Run Code Online (Sandbox Code Playgroud)

它工作正常

android arraylist serializable android-intent

5
推荐指数
1
解决办法
2万
查看次数

根据当前时间和地球上的位置计算阳光方向

如何根据地球上的当前时间和位置计算太阳的位置?我目前正在为Android上的增强现实框架添加光源,知道在哪里设置"太阳"会很棒.我认为有很多因素,但现在我认为近似就足够了.

gps android date augmented-reality

5
推荐指数
1
解决办法
405
查看次数

将更多源文件夹添加到播放框架项目中

如何在播放项目中拥有多个源文件夹?我正在使用play 1.2.4和eclipse插件.我想要做的是在play项目中使用另一个项目的源文件夹(例如普通的java项目).

通过properties-> java build path-> link source将文件夹添加为源文件夹的常规方法不起作用.那么在哪里我必须添加依赖项来告诉我想要什么?我知道如果我想链接一个jar文件,我必须在dependencies.yml文件中编写它,那么我可以对一个充满普通java文件的文件夹做同样的事情吗?

是否可以在播放项目中添加第三个源文件夹,例如"1. app 2. test 3. mysoucefolder".

java eclipse dependency-management playframework playframework-1.x

5
推荐指数
1
解决办法
2365
查看次数

如何在android中保存数据结构?

我想存储来自这样的结构的一些数据:

class Project {
    ChildA a;
    ChildB b;
}

class ChildA {
    ChildC c;
    ...
}
...
Run Code Online (Sandbox Code Playgroud)

我创建的数据如下:

Projet x = new Project();
x.a = new ChildA();
x.a.c = new ChildC();
Run Code Online (Sandbox Code Playgroud)

...我想将它保存到我设备的SD卡上的外部文件中,以便其他应用程序可以读取它(用户可以打开/复制它).

我以为我应该使用DOM解析器,因为我的数据结构不是很大,但我找不到教程或类似的东西.有没有更好的方法来存储这些信息?

如果没有,是否有任何说明如何在Android中使用解析器?

xml parsing android dom

4
推荐指数
1
解决办法
1万
查看次数

在uncaughtException()调用上启动活动

我希望在UncaughtExceptionHandler出现未捕获的异常时从我的新活动开始.这可能吗?

我认为当前的活动无法在"错误"状态下启动新的子活动,因为我总是遇到这样的错误:

07-14 14:34:06.075: INFO/ActivityManager(74): Starting activity: Intent { flg=0x10000000 cmp=de.rwth/system.ErrorHandler (has extras) }
07-14 14:34:06.615: WARN/ActivityManager(74): Activity pause timeout for HistoryRecord{4338f8d8 de.rwth/.main}
07-14 14:34:16.115: WARN/ActivityManager(74): Launch timeout has expired, giving up wake lock!
07-14 14:34:16.628: WARN/ActivityManager(74): Activity idle timeout for HistoryRecord{433a89d8 de.rwth/system.ErrorHandler}
Run Code Online (Sandbox Code Playgroud)

我试图从一个新线程启动子活动,因为我认为当前线程可能处于不允许启动新活动的状态,但这也不起作用.

那么有谁知道这可行吗?在处于此错误状态时,如何阻止当前活动阻止所有内容?是设置异常处理的任何方法吗?

android exception-handling exception android-intent android-activity

4
推荐指数
1
解决办法
1791
查看次数

System.Collections.IEnumerable 的 LINQ

LINQ可以使用Where()System.Collections.Generic.IEnumerable<T>但如果实现的接口是System.Collections.IEnumerable

我的问题是,为什么会这样?

更新: 也许有点上下文,我想.Where()TransformUnity的类上使用,它实现System.Collections.IEnumerable而不是System.Collections.Generic.IEnumerable<Transform>即使它只有Transforms子级......所以我现在创建了一个扩展方法Transform,随意使用它:

/// <summary> Where-Filter implementation for transform to filter out specific children</summary>
public static IEnumerable<GameObject> WhereChild(this Transform s, Func<GameObject, bool> callback) {
    List<GameObject> r = new List<GameObject>();
    foreach (Transform cur in s) { if (callback(cur.gameObject)) { r.Add(cur.gameObject); } }
    return r;
}
Run Code Online (Sandbox Code Playgroud)

(如果你想处理变换而不是子游戏对象,请修改它,我更喜欢这种方式;)

c# linq unity-game-engine

4
推荐指数
1
解决办法
1607
查看次数