小编Ric*_*red的帖子

为什么不使用三元运算符而不为"true"条件赋值(x = x?:1)

在Android开源qemu代码中,我遇到了这行代码:

machine->max_cpus = machine->max_cpus ?: 1; /* Default to UP */
Run Code Online (Sandbox Code Playgroud)

这只是一种令人困惑的说法:

if (machine->max_cpus) {
   ; //do nothing
} else {
 machine->max_cpus = 1;
}
Run Code Online (Sandbox Code Playgroud)

如果是这样,那就不会更清楚了:

if (machine->max_cpus == 0) machine->max_cpus = 1;
Run Code Online (Sandbox Code Playgroud)

有趣的是,这可以编译并与gcc一起使用,但不能在http://www.comeaucomputing.com/tryitout/上编译.

c gcc qemu conditional-operator android-emulator

39
推荐指数
3
解决办法
6569
查看次数

Android,如何使用DexClassLoader动态替换Activity或Service

我正在尝试做类似于stackoverflow发布的事情.我想要做的是从SD卡读取活动或服务的定义.为了避免明显的权限问题,我在.apk中创建了此活动的shell版本,但尝试将其替换为运行时驻留在SD卡上的同名活动.不幸的是,我能够使用DexClassLoader从SD卡加载活动类定义,但原始的类定义是执行的定义.有没有办法指定新的类定义替换旧的类定义,或者有关避免清单权限问题的任何建议,而不实际提供包中所需的活动?代码示例:

    ClassLoader cl = new DexClassLoader("/sdcard/mypath/My.apk",
            getFilesDir().getAbsolutePath(),
            null,
            MainActivity.class.getClassLoader());

    try {
        Class<?> c = cl.loadClass("com.android.my.path.to.a.loaded.activity");
        Intent i = new Intent(getBaseContext(), c);
        startActivity(i);
    }
    catch (Exception e) {
Run Code Online (Sandbox Code Playgroud)

启动com.android.my.path.to.a.loaded.activity指定的Intead /sdcard/mypath/My.apk,它启动静态加载到项目中的活动.

android auto-update

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

检测汽车加速度(iPhone加速度计)

我正在开发一款iPhone应用程序,我们正在尝试计算移动汽车的加速度.类似的应用程序已经实现了这一点(Dynolicious),但不同之处在于此应用程序旨在用于一般城市驾驶,而不是拖动条.

这引起了我们一个大关注,Dynolicious幸运地能够避免:丘陵.是的,丘陵.

这有两个重要阶段:校准和实际驾驶.

我们的初步运作很简单并且遭受了后果.在校准阶段,我在手机上取平均力,在跑步过程中,我只是从当前力中减去平均力,以获得此帧的当前加速度.问题在于,典型的汽车比前进力量获得更多的力量 - 从转向坑洼的一切都导致价值与实际发生的事情不同步.

下一步是为了增加iPhone必须以屏幕朝向汽车后部的方式定向的条件.使用这种方法,我试图只跟随z轴上的力,但这显然会导致问题,除非iPhone由于重力直接定向.

之后的一些三角函数,我已经成功地将重力运转到了等式之外,因此iPhone实际上正在非常非常好地读取汽车.

直到我遇到一个斜坡.一旦汽车的角度发生变化,我突然接到了没有意义的加速和减速,我们又一次失去了同步.

在数学上和我比很聪明的人交谈导致我试图实施的解决方案比我想承认的更长.它的步骤如下:

1)在校准过程中,将重力测量为矢量而不是尺寸.存储该矢量.2)当汽车最初向前移动时,采取运动矢量并减去重力.将此作为前进动力.(暂时忽略那些困难的用户案例,让我们专注于数学运算:) 3)从前向矢量和重力矢量构建一个平面.4)每当收到一个力时,将其投射到所述平面上以消除侧向力/等.5)然后,使用该力,已知的重力大小和已知的向前运动方向来基本上求解三角形以获得前向矢量.

在这个新系统中造成最大困难的问题不是第5步,我已经达到了所有数字看起来应该如此的程度.困难的部分实际上是前向矢量的检测.我正在选择幅度超过重力的矢量,并从那里平均它们并减去重力.(我正在做一些错误检查以确保我没有使用强制因为iPhone加速度计稍微关闭,这种情况比我想要的更频繁).但是,如果我绘制我正在使用的这些矢量,它们实际上会以大约20-30度的角度变化,这可能会导致一些强烈的不准确性.最终结果是应用程序现在比以前更加不准确.

所以基本上 - 你所有的数学和iPhone都在那里 - 任何明显的错误?还有更好的解决方案吗 任何可能有用的经验?

奖励:为第一个答案提供250美元的奖金,从而获得解决方案.

iphone physics objective-c accelerometer

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

在Android ADT Eclipse插件中滚动布局编辑器

当这些内容溢出一个"屏幕"时,是否有人想出如何滚动布局编辑器的内容?我在使用ADT布局编辑器时在设计时谈论,而不是在物理设备上运行时滚动(工作正常).

android eclipse-plugin

9
推荐指数
1
解决办法
3380
查看次数

CalledFromWrongThreadException在Android上执行JUnit测试

我是JUnit和Android的新手,很难找到与Android合作的好测试文档.

我有一个测试项目,其中包含扩展ActivityInstrumentationTestCase2的类.检查GUI状态(启用了什么,相对位置等)的简单测试按预期工作.但是,当我尝试执行按钮单击操作时,会抛出错误的线程异常.任何人都知道如何解决这个问题?

作为后续,有没有人对Android的测试或TDD免费资源有什么好的建议?我正在使用Eclipse/MotoDev.

谢谢

根据我调用每个按钮的方式,我可以得到不同的故障痕迹,但在此处包含一个以供参考:

android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRoot.checkThread(ViewRoot.java:2683)
at android.view.ViewRoot.playSoundEffect(ViewRoot.java:2472)
at android.view.View.playSoundEffect(View.java:8307)
at android.view.View.performClick(View.java:2363)
at com.android.tigerslair.demo1.test.GoTest.setUp(GoTest.java:49)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:430)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
Run Code Online (Sandbox Code Playgroud)

这是简单的setup()例程:

@Override
protected void setUp() throws Exception {
    super.setUp();
    TigersLair activity=getActivity();

    mGoBtn = (Button) activity.findViewById(R.id.go);
    mGoBtn.performClick();        
}
Run Code Online (Sandbox Code Playgroud)

如果我在setUp()或实际测试中执行单击并不重要.

java junit android

3
推荐指数
1
解决办法
3225
查看次数

用于分析Visual Studio for C++中dll加载条件的最佳工具

我正在使用Visual Studio 2008来运行一个应用程序,该应用程序在启动时加载了许多DLL,并立即退出"程序"[3668] cb_tcl.exe:Native已退出,代码为-1072365566(0xc0150002)." 不幸的是,我没有得到关于问题根源的其他线索,退出发生在程序启动之前,但我怀疑其中一个DLL的某种问题.任何人都可以推荐一些好的工具来帮助找出启动问题的原因吗?

c++ visual-studio visual-c++

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

有没有办法以编程方式在Android设备上执行恢复出厂设置?

了解这个问题有多么危险,我想知道是否有可能以编程方式发出工厂重置,如Droid和G1中所述.有谁知道这是如何实现的?这是使用标准Android SDK,摩托罗拉特定功能还是其他功能实现的?

android

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