我正在创建一个地图应用程序,包括显示您面向哪个方向的位置箭头,如下所示:
我SensorManager.getOrientation()
使用第一个返回值:azimuth 直接从中获取方向.当手机被按住以使屏幕指向地平线以上时,并且在纵向中,箭头正常工作.然而:
下面精心构造和科学的图像显示了我的意思(蓝色是用户面对的,红色是箭头方向,屏幕大致面向用户的脸,Google地图完全符合我的要求):
(请注意,使用谷歌地图,如果自动旋转关闭,它就无法成功执行列表中的最后两个操作.但我甚至还没有达到那个阶段.一次只做一件事.)
它似乎只是使用Y轴指向方向,如下所示:http://developer.android.com/reference/android/hardware/SensorEvent.html,当我希望它使用Z轴指向的反向,大部分时间,和手机平坦时的Y. 但是,考虑到getOrientation()
返回的值,我必须编写复杂的案例来解决一些问题,而面向电话的用例是无法解决的.我确信有一种更简单的方法.
这是我的代码(其中lastAcceleration和lastMagneticField都来自内部传感器):
float[] rotationMatrix = new float[9];
if(SensorManager.getRotationMatrix(rotationMatrix, null, lastAcceleration, lastMagneticField)){
float[] orientMatrix = new float[3];
SensorManager.getOrientation(rotationMatrix, orientMatrix);
orientation = orientMat[0]*180/(float)Math.PI;
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?有更简单的方法吗?
编辑:只是为了澄清,我假设用户正在将设备放在他们面前,屏幕指向他们.除此之外,我显然无法分辨是否只有其中一个旋转.此外,我正在使用用户移动时的动作,但这是在他们静止的时候.
我正在将android库项目添加到我的Android应用程序(在本例中为Beintoo).不是我的; 这是一个外部图书馆.但是,它没有build.xml.在Eclipse中构建工作正常,但是当我尝试使用ant构建我的应用程序时,我得到了这个:
BUILD FAILED
C:\Sandbox\MyProject\build.xml:110: The following error occurred while executing this line:
C:\Sandbox\MyProject\build.xml:41: The following error occurred while executing this line:
C:\Program Files (x86)\Android\android-sdk\tools\ant\build.xml:515: Invalid file: C:\Git\Beintoo-Android\beintoo-android-sdk\BeintooSDK\build.xml
Run Code Online (Sandbox Code Playgroud)
这是完全正确的.该文件无效,因为它不存在.我不知道如何安全地添加它,也不知道这是一个好主意.
我了解到我不能简单地将库项目构建到jar中.如何使用此库项目使我的项目在Ant中构建?
我有一个由设置为MODE_PRIVATE的应用程序编写的xml文件,但我现在想要在手机外读取该文件,以进行调试.在Eclipse中,我可以访问应用程序生成的其他文件并将它们复制到我的计算机上,但我甚至看不到这个私有文件.仅将文件更改为MODE_WORLD_READABLE文件似乎没有帮助.我认为该文件存储在无法从手机中删除的内部"SD卡"上,但文件资源管理器中还有两个其他文件夹为空或无法访问:asec和安全.
有谁知道如何访问该文件?
我有几个导入的jar在项目构建时在Eclipse中出现此错误:
[2011-04-08 16:31:48 - MokbeeAndroid] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(net.sf.antcontrib.logic.ForEach$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it …
Run Code Online (Sandbox Code Playgroud) 比如,在AWS Dynamo中,我有一个这样的表:
ID (HKey) Date (RKey) BoxName
0 1/1/2014 Box-1
1 2/1/2014 Box-1
2 3/1/2014 Box-2
3 4/1/2014 Box-3
4 5/1/2014 Box-3
5 5/1/2014 Box-1
Run Code Online (Sandbox Code Playgroud)
我想在一个查询中获取每个唯一Box的第一行.可能有数百个盒子我需要第一次进入,使个别请求效率低下.
我似乎无法在API中找到允许我这样做的任何内容.可能吗?我该怎么做?
我在Eclipse中创建了一个Java程序.我从Windows XP开始,但最近升级了.
作为其保存机制的一部分,程序将设置写入文件settings_new.sav
.如果可以,它会删除settings.sav
,并重命名新的名称以匹配旧名称.虽然它在winXP下工作(至少我认为它确实如此,但我现在无法检查),在win7下,它无法删除文件,即使它是创建它的程序(尽管,程序的不同实例) ).
该文件由Eclipse拾取,可以很愉快地从那里删除.我可以手动删除它.我是自己计算机上的管理员.该文件夹位于工作区文件夹内,并且不在Program Files中(但是,我不知道最终用户是否会在那里安装它).该程序可以很好地创建和修改文件.它不会抛出任何异常,我认为如果它是win7阻止它.
有任何想法吗?
我有一个大的postgres位置(商店,地标等)表,用户可以通过各种方式搜索.当用户想要搜索某个地点的名称时,系统当前会这样做(假设搜索在咖啡馆):
lower(location_name) LIKE '%cafe%'
Run Code Online (Sandbox Code Playgroud)
作为查询的一部分.这非常低效.这是非常的.我必须加快速度.我试过索引表
gin(to_tsvector('simple', location_name))
Run Code Online (Sandbox Code Playgroud)
和搜索
(to_tsvector('simple',location_name) @@ to_tsquery('simple','cafe'))
Run Code Online (Sandbox Code Playgroud)
它工作得很漂亮,并且将搜索时间减少了几个数量级.
但是,位置名称可以是任何语言,包括中文等不是以空格分隔的语言.这个新系统无法找到任何中文位置,除非我搜索确切的名称,而旧系统可以找到与部分名称匹配就好了.
所以,我的问题是:我可以让它同时适用于所有语言,还是我走错了路?
前段时间,我的Android地图应用程序停止获取谷歌卫星瓷砖.现在它已经成为最重要的问题,我已经跟踪了代码并发现它创建了这样的请求:
链接显示它已被破坏.编写代码的人是唯一一个在我之前工作的应用程序,在我受雇之前离开,并且没有记录任何内容.我不知道这个链接应该做什么,因为我无法在Google Map Api中找到它,即使是已弃用的版本.有没有人知道这个链接用于连接,为什么它不再有效,以及如何修复它?
我有一个欢迎屏幕可以作为我的应用程序中的第一个活动启动,或者它可以由用户花费时间的主要活动启动.我希望它从主屏幕启动时的行为略有不同(或者任何其他应用程序)或主要活动.
getCallingActivity()
无论调用什么活动,调用onCreate似乎总是返回null.这很奇怪,因为它确实更早发挥作用,这就是我如何找到字符串返回的格式(无论如何应该在文档中).我看不出会有什么影响它,因为在调用之前发生的唯一事情getCallingActivity()
是调用super.onCreate(savedInstanceState)
.我打电话给活动startActivityForResult(welcomeIntent, RESULT_WELCOME)
.
我究竟做错了什么?有没有其他方法来获取此信息?
我有一个JFrame,我使用setBounds设置为一定的大小.然而,这使得窗口(包括边框)的大小(事后才能完全理解).但我想要的是窗口的大小,比如800x600 加上边框.这很重要,因为我从JFrame中的BufferStategy绘制了一个Graphics对象,但是当使用小于20的y值时,我一直在标题栏下绘图.我想象不同的操作系统(甚至不同的操作系统设置)也可以有不同的厚度边框.我以为边界刚刚在窗户上被钉上了,但事实并非如此.
那么,无论边框的厚度如何,如何使边框内的空间达到一定的大小?另外,为了让我的生活更轻松,我如何让点0,0成为框架可视内容的左上角?
顺便说一句,使用setUndecorated提出了它自己的问题,所以我现在不是在尝试.