我想知道的最重要的事情是设备类型,操作系统版本,如果它有硬件键盘和屏幕分辨率.但如果您知道其他有用的调试信息,请添加它们:)
我发现这个OS版本:
string += "OS Version: " + System.getProperty("os.version");
Run Code Online (Sandbox Code Playgroud)
我如何获得其他房产?
(编辑:我在我的增强现实框架中添加了最好的工作方法,现在也考虑了陀螺仪,这使它再次更加稳定:DroidAR框架)
我编写了一个TestSuite来了解如何根据您获得的数据计算旋转角度SensorEventListener.onSensorChanged().我真的希望你能完成我的解决方案,以帮助那些像我一样遇到同样问题的人.这是代码,我想你会在阅读之后理解它.
随意改变它,主要的想法是实现几种方法将方向角发送到opengl视图或任何其他需要它的目标.
方法1到4正在工作,它们直接将rotationMatrix发送到OpenGl视图.
方法6现在也可以工作,但我没有解释为什么必须进行旋转yx z ..
所有其他方法都没有工作或有问题,我希望有人知道让他们工作.我认为最好的方法是方法5,如果它可行,因为它是最容易理解,但我不确定它是多么有效.完整的代码没有优化,所以我建议不要在项目中使用它.
这里是:
/**
* This class provides a basic demonstration of how to use the
* {@link android.hardware.SensorManager SensorManager} API to draw a 3D
* compass.
*/
public class SensorToOpenGlTests extends Activity implements Renderer,
SensorEventListener {
private static final boolean TRY_TRANSPOSED_VERSION = false;
/*
* MODUS overview:
*
* 1 - unbufferd data directly transfaired from the rotation matrix to the
* modelview matrix
*
* 2 …Run Code Online (Sandbox Code Playgroud) 如何创建主屏替换应用程序?有关于主屏幕应用程序的信息吗?
任何应用程序都可以通过注册CATEGORY_HOME意图来成为主屏幕吗?
我@Override在Eclipse中有一个令人讨厌的注释问题.通常,当我在新PC上导入工作项目时,Eclipse会将某些@Override注释标记为错误.如果我删除注释一切都很好,Eclipse也表示方法覆盖了父方法,但添加覆盖注释会再次导致错误.我目前正在开发一个Android项目,所以它可能是Android的问题,而不是Eclipse.
我正在开发oAuth 1和2访问webservices的框架,我的问题是,如何以安全的方式存储像oAuth访问密钥这样的敏感数据?这个键的问题在于某些平台如twitter会使用永久密钥,如果有人可以访问此密钥,他可以使用用户的Twitter帐户做任何他想做的事情.
那么在将数据存储到共享首选项之前是否可以自动加密数据?或者有更好的方式/地方存储非常重要的数据?
更新 - 另请阅读:在Android应用程序中存储用户设置的最合适方法是什么
我想知道ListActivity当我更改/添加数据时如何刷新.
我首先想到的是,ListAdapter当列表发生更改时会知道,但是当我向列表添加元素时,没有更新ListActivity,只有当我关闭ListActivity并再次重新打开它时,我才会看到更改发生.
所以我搜索了任何方法,例如:update(), refesh()或类似的东西,但没有.似乎我没有得到这个概念,有人可以帮助我吗?
从最新的SDK版本开始,使用多个dex文件创建应用程序要简单得多(https://developer.android.com/tools/building/multidex.html),我的问题是,当我使用这个新功能时也可以使用我没有使用Gradle构建过程,而是使用"旧的"Eclipse构建链?
Gradle构建文件中的"multiDexEnabled true"也必须以其他方式传递给Android编译器吗?
我有一个关于使用Android帐户管理器进行身份验证的问题.我们有一个后端和一个Android应用程序,用户应该使用他的Facebook帐户登录我们的后端.目前我们为此目的展示了一个webview,它可以正常运行oAuth 2,但使用Android帐户管理器对用户来说更安全,更容易,因此我们想切换.我的问题是,服务器如何验证用户是否真的是他假装的人.由于我们不能信任App,我们必须从服务器端与fb交谈以验证用户是否真的是他假装的人.根据一个非常相似的想法,我做了下面的图表,问你这是否是正确的方法,或者我错过了什么:
流程看起来像这样:
这是正确的方法吗?步骤6是一个好主意,将令牌传递给"我的服务器"还是有更好的方法?顺便说一句Facebook就是一个例子,我们使用不同的身份验证提供商,如FB,谷歌和Twitter,但每个人的流量应该是相同的.
我需要从Sensor.TYPE_ORIENTATION获得的数据中计算出一个旋转矢量.
传感器数据定义如下:
我需要所有三个值,如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 ×10
eclipse ×2
matrix ×2
oauth ×2
opengl-es ×2
sensor ×2
annotations ×1
debugging ×1
dex ×1
encryption ×1
facebook ×1
homescreen ×1
launcher ×1
listactivity ×1
logging ×1
overriding ×1
properties ×1
rotation ×1
vector ×1