有人可以指向我以数字形式来自getKeyCode()的键码列表,这样,例如,如果我查看72,我看到"]",如果我查看24,我看到"vol up".
我一直在寻找一个小时,答案不是ASCII表.那太简单了...
我从鼠标呈现器上获取关键代码并尝试拦截它们.有一个键可以输出57和117,我无法拦截,我想在询问它之前解码它但找不到参考.我认为117是转变但我不知道57是什么.即使我拦截它,演示者的那个键也会把我带出我的应用程序.
扬声器图标unicode 1f50a是"其他符号和象形文字"系列中的5位数字,当我尝试显示它时,我得到"a",所以显然我得到1f50(不存在空白),然后是"a".我可以显示任何4位数的unicode字符,但无法找到如何显示较长的字符.我知道平板电脑可以显示它,因为我可以在Unicode地图应用程序中看到它.
textSound = (TextView)findViewById(R.id.textSound);
textSound.setText("\u1f50a");
Run Code Online (Sandbox Code Playgroud) 我正在寻找如何在单个应用程序中跨多个活动共享功能和数据.我研究了它的日光,并发现了一些意识形态之间的战争,它覆盖了应用程序的扩展和单独的单例,我都找不到足以让我理解的例子.基本上我想共享数据和共享功能.所有活动都需要相同的功能和数据,因此这不是一个与另一个活动共享数据的活动.所有活动都需要访问相同的功能和数据.
我想知道的是要走的路,我该怎么做.我需要看看在我的34个活动中我需要做什么,将要共同的类是什么样的,以及Manifest条目需要什么.我还需要确保操作系统不会关闭公共数据区.
这是我的第一个Android-Java程序,现在找到我的15,000行,34个活动应用程序需要一些结构.我知道,应该做的事情不同但应用程序的效果非常好,有两个例外.一个是它在结构上是一团糟.二是事实上这是一个烂摊子,这使我很难修复一个我想修复的行为.
这是一款基于GPS的赛艇帆船应用.它是时间关键的,每个活动基本上在位置管理器onLocationChanged函数内运行一次一秒的循环.那部分很好,我不想把GPS代码放在一个地方.问题是大多数活动需要过滤数据,因此会将大量代码复制并粘贴到活动中.过滤器需要历史记录,因此需要记住状态.还有一些活动使用了其他功能,因此这些功能也已被复制.想象一下平均最后三个GPS速度读数的函数.它需要保存一些历史,做它的事情,并给出一个结果.所有活动都需要做同样的事情.所有这一切都有效,但问题是每次切换活动时都会开始平均,因为每个活动都有自己的过滤器.这给我需要摆脱的数据带来了一个小故障.我需要通用的地方来保存数据,并希望是一个常见的地方来运行过滤和其他常见的功能.如果每个活动都可以调用使用公共状态数据的过滤器功能,则活动更改不会出现故障.
我会很感激一些指导.
我有一个多活动应用程序,并将数据保存在许多其他活动使用的主菜单活动中。
我在主要活动中的变量之一可能是这个
static double targetAngle = 45;
Run Code Online (Sandbox Code Playgroud)
我可能会从这样的另一个活动中调用该变量
diff = Main.targetAngle - angle;
Run Code Online (Sandbox Code Playgroud)
或者我可以这样设置
Main.targetAngle = angle;
Run Code Online (Sandbox Code Playgroud)
从这个参考,http://developer.android.com/guide/faq/framework.html这似乎是传递数据的正确方法。但是总是有关于活动在任何时候被操作系统杀死的话题。
我的问题是,这是否安全?
作为替代方案,我在 SO 成员的建议下有一个名为 Helper 的类,它具有一些在每个活动中使用的函数,这些函数也有一些静态数据。例如,Helper 类具有此数据,后跟我的函数
public class Helper {
static double[] filter1 = new double[]{0,0,0,0,0};
static double[] filter2 = new double[]{0,0,0,0,0};
static double cog = 0;
...
various functions....
}
Run Code Online (Sandbox Code Playgroud)
如果这样会更好,我可以将我的共享变量保存在该帮助程序类中。该类每秒调用一次,如果它被杀死,我就死了,真的需要重新考虑一下。我应该提到我对我所做的事情没有任何问题,但是我的一个用户的 Nexus-7 崩溃了,我们不知道为什么,所以我认为他运行的应用程序可能比我多,因此我的问题.
我还应该提到,如果用户退出应用程序,我已经保存了所有需要保存在 SD 卡上的文件中的变量,以便它们可以重新加载。换句话说,当应用程序被杀死时数据丢失不是问题。我的问题是仅当应用程序还活着时我的主要活动是否被终止。
即使我已经安装了OnPause代码来停止GPS服务,GPS也不会停止.这是我的代码.
@Override
protected void onPause() {
if(lm != null) {
lm.removeUpdates(ll);
}
ll = null;
lm = null;
super.onPause();
}
Run Code Online (Sandbox Code Playgroud)
只要lm和ll被全局声明为受保护变量,此代码就会无错误地运行.问题是我离开程序后GPS图标保持打开状态.如何关闭GPS?我已经在手机和模拟器上测试了这个.
我已经搜索了Stackoverflow和谷歌,我找到的是那些希望字体保持相同大小的人的答案,但我希望它们在屏幕变大时变得更大.
具体来说,我希望我的应用程序中有非常大的字体 在我的手机上,它们是1/2英寸高 - 完美.我的问题是,在我的7英寸平板电脑上,它们也是1/2英寸高,我希望它们可以向上扩展,大约1英寸高.我尝试过sp和dp模式,两者都只保持字体相同的物理高度,这不是我想要的.我看到有3.2或更高版本的平板电脑有新功能,但我想支持2.3及更高版本的设备.我见过复杂的代码,它说自动缩放字体以适应文本的宽度,但这不是我需要的.我希望这些字体相当于手机上的100sp和平板电脑上的200sp.我没有图形和简单的相对布局,屏幕上的元素很少.我只需要为大屏幕制作一些更大的文本.我认为这很简单,但我找不到它.
这是一个典型的文本视图条目
<TextView
android:id="@+id/textDistance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/labelDistance"
android:layout_centerHorizontal="true"
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#ffffff"
android:textSize="100sp" />
Run Code Online (Sandbox Code Playgroud)
有一个相对简单的直接方式来做到这一点?
我有1英寸高的文字,但视图的框占用1.5英寸所以在白色字体的上方和下方有1/4英寸的黑色空间.我希望减少1/4英寸,这样我就可以在6英寸屏幕上获得5行文字而不是4行.我可以将它们与android一起移动得更近:lineSpacingMultiplier =".66"但这只会让盒子更接近在一起,1/4英寸的黑色空间覆盖了附近线条的文字.android:includeFontPadding ="false"什么都不做.否定填充没有任何作用.放入android:lineSpacingExtra =" - 50sp"也只有黑色边距覆盖相邻的文本行.我想摆脱边际(实际上,只是大部分).
我已经尝试了我能想到的每一个选项,包括上面讨论的明显的填充和边距以及填充,包括零和负数.我找不到一个简单的图表,显示在实际文本上方的视图中控制空间的内容.
如何减少浪费的空间?
(我的互联网在过去2小时内停机,所以我花了一些时间回复.抱歉)
这是我的XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textTimer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:includeFontPadding="false"
android:text="10.01"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="@dimen/font_size" />
<TextView
android:id="@+id/textTimeToLine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textTimer"
android:layout_centerHorizontal="true"
android:includeFontPadding="false"
android:text="10.02"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="@dimen/font_size" />
<TextView
android:id="@+id/textTimeToKill"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textTimeToLine"
android:layout_centerHorizontal="true"
android:includeFontPadding="false"
android:text="10.03"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="@dimen/font_size" />
<TextView
android:id="@+id/textTimeToPin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textTimeToKill"
android:layout_centerHorizontal="true"
android:includeFontPadding="false"
android:text="10.03"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="@dimen/font_size" />
<TextView
android:id="@+id/textTimeToCB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textTimeToPin"
android:layout_centerHorizontal="true"
android:includeFontPadding="false"
android:text="10.03"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="@dimen/font_size" />
<Button
android:id="@+id/buttonMenu"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" …Run Code Online (Sandbox Code Playgroud) 在这个线程的Tim的神奇帮助下使用蓝牙鼠标/演示者控制Android应用程序我添加了我的应用程序的蓝牙遥控器.完成此操作后,我注意到我的apk文件从175k一直到1711k - 大10倍!我已经在测试应用程序上实现了蓝牙更改,但没有看到文件大小的任何变化,因此我不确定是什么导致了这一点.我确实在其中间存在某种Eclipse问题,并且必须进行重建以使源再次运行,所以可能与它有关.
在这里和谷歌上搜索文件大小的变化让我想到了那些想要制作更大文件来容纳更多内容的人,而不是我的问题.我似乎找不到相关的答案.
该应用程序没有任何图形,pdf或任何大小的其他文件.它只是读取一些GPS的东西,做一些数学,并将结果显示为文本.
有没有办法让文件大小恢复?有Eclipse选项吗?这是我的第一个真正的(非测试)应用程序,它已完成并正常工作,但我担心文件大小增加.
我有一个GPS基于的应用程序工作.它有许多活动,都使用GPS.例如,一个活动显示到某个位置的距离,另一个显示速度和方向.我成立了,并呼吁requestLocationUpdates()在onCreate()和通话removeUpdates()中onPause().
这一切都有效但GPS眨眼并且在切换活动时必须重新获得.我做了一个测试,如果我把它removeUpdates()放入onStop()而不是在onPause()那里没有眨眼.显然onStop()是在新活动开始后调用,这解释了缺少闪烁.
我已阅读有关此主题的帖子,似乎存在意见分歧.但是,看起来我应该使用onStop(),我想知道是否有任何理由我不应该这样做.
第二个问题是没有onResume()代码,因此GPS在后退箭头或关闭和打开屏幕后没有代码.我应该解决这个问题.现在我的onCreate()代码创建了位置管理器,基本上我的所有代码都在其中.它看起来像遵循生命周期流程图,我应该移动removeUpdates()到onStop并将lm和ll的创建移动到onStart().它是否正确?
这是我的onCreate()代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.set);
textView1 = (TextView)findViewById(R.id.textView1);
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
ll = new mylocationlistener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
}
Run Code Online (Sandbox Code Playgroud)
这是我的onPause代码:
@Override
protected void onPause() {
super.onPause();
if(lm != null) {
lm.removeUpdates(ll);
}
ll = null; …Run Code Online (Sandbox Code Playgroud) ============更新=============
我能够一次一个地手动编辑我的应用程序中的所有18个类,并以新名称发布它,但这不是一个真正可接受的长期解决方案.我仍然想知道如何解决这个问题.正如我所说,我能够更改其他应用程序的包名称,而不是我关心的那个.
艾伦
我转到"应用程序工具"然后"重命名应用程序项目",我可以重命名一个包,除了我要重命名的包.在那种情况下,我得到一个例外:
弹出的框称为重构
框中的标题是执行重构时发生的致命错误.
并且错误消息是:
"创建更改对象时发生意外异常.有关详细信息,请参阅错误日志."
错误日志中没有显示任何内容,我不知道该怎么做.我可以轻松地重命名其他项目,所以我想我知道这个过程.该应用程序运行正常,实际上已在Google Play上发布.我想创建第二个版本用于测试,在10天内超时,供人们尝试,因此需要一个不同的名称.仅仅更改字符串文件中的名称是不足以让Google Play认为它是一个不同的项目.
几乎任何可以将这个东西作为不同的应用程序在Google Play上运行的工作都可以.
任何帮助将不胜感激,因为大多数帖子都涉及如何在没有错误时更改名称,我可以这样做.
艾伦
--------------- update --------------------我在这里找到了错误文件:
java.lang.reflect.InvocationTargetException
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:421)
at org.eclipse.ui.internal.WorkbenchWindow$13.run(WorkbenchWindow.java:1666)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:1663)
at org.eclipse.ltk.ui.refactoring.RefactoringWizard.createChange(RefactoringWizard.java:663)
at org.eclipse.ltk.ui.refactoring.RefactoringWizard.computeUserInputSuccessorPage(RefactoringWizard.java:502)
at org.eclipse.ltk.ui.refactoring.RefactoringWizard.getStartingPage(RefactoringWizard.java:472)
at org.eclipse.jface.wizard.WizardDialog.showStartingPage(WizardDialog.java:1271)
at org.eclipse.jface.wizard.WizardDialog.createContents(WizardDialog.java:610)
at org.eclipse.jface.window.Window.create(Window.java:431)
at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089)
at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation$1.run(RefactoringWizardOpenOperation.java:178)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:202)
at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:122)
at com.android.ide.eclipse.adt.internal.refactorings.renamepackage.RenamePackageAction.initiateAndroidPackageRefactoring(RenamePackageAction.java:168)
at com.android.ide.eclipse.adt.internal.refactorings.renamepackage.RenamePackageAction.promptNewName(RenamePackageAction.java:151)
at com.android.ide.eclipse.adt.internal.refactorings.renamepackage.RenamePackageAction.run(RenamePackageAction.java:106)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4169)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1022)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:916) …Run Code Online (Sandbox Code Playgroud)