我有byte[] yuvByteArray(540x360图像从Camera.PreviewCallback.onPreviewFrame方法中捕获并转储到assets/yuv.bin文件中).我想转换byte[] yuv为byte[] rgba数组,使用以下代码(基于LivePreview android示例).
但是我收到outBytes了在forEach之后填充零的rgba数组并将out分配复制到outBytes.我的代码出了什么问题?
package hellorender;
import android.app.Activity;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v8.renderscript.Allocation;
import android.support.v8.renderscript.Element;
import android.support.v8.renderscript.RenderScript;
import android.support.v8.renderscript.ScriptIntrinsicYuvToRGB;
import android.support.v8.renderscript.Type;
import android.widget.ImageView;
import hellorender.R;
import java.io.IOException;
import java.io.InputStream;
public class HelloRenderActivity extends Activity {
public static final int W = 540;
public static final int H = 360;
private RenderScript rs;
private ScriptIntrinsicYuvToRGB yuvToRgbIntrinsic;
@Override
protected void onCreate(Bundle savedInstanceState) { …
Run Code Online (Sandbox Code Playgroud) 我有两个可观察量:
Observable O(open):在textview中打开一些内容的文件
可观察的E(编辑):在textview中编辑的文件内容
我想去掉E observable,并将它与O observable合并.
obs = Observable.merge(E.debounce(2000, TimeUnit.MILLISECONDS) , O)
.subscribe(content->System.out.println("new content: " + content))
Run Code Online (Sandbox Code Playgroud)
问题是如果E发出事件E1并且在O发出O1事件之后,我们有输出:
new content: O1
new content: E1 // this output is rebundant (cuz we already have newer content O1)
Run Code Online (Sandbox Code Playgroud)
这是一个正在发生的事情的图表:
如何从去抖动的观察中摆脱这个过度的旧事件?
假设我们有一个简单的Freemarker宏:
<#macro myMacro expr>
<#local x=1>
${expr}
</#local>
<#local x=2>
${expr}
</#local>
</macro>
Run Code Online (Sandbox Code Playgroud)
<@myMacro“ A” />给出:
A A
我需要类似<@myMacro“ A $ {x}” />之类的东西:
A1 A2
但是在传递给宏之前,无法对$ {x}进行插值。即使我使用原始字符串r“ A $ {x}”作为参数,这也不起作用。
我试图玩?eval,但还没有结果(((
有可能做我所需要的吗?
对于普通(非嵌套片段),我使用以下方法
1)创建用于设置片段依赖性的依赖项(...)方法
class MyFragment extends MyFragment {
void dependencies(Deps deps);
}
Run Code Online (Sandbox Code Playgroud)
2)在MyFragment parent的活动onAttachFragment()方法中我只提供片段的依赖关系
class MyActivity{
void onAttachFragment(Fragment f){
((MyFragment)f).dependencies(deps);
}
}
Run Code Online (Sandbox Code Playgroud)
对于嵌套片段,不再有onAttachFragment片段被调用.为片段提供依赖性只是为了提供嵌套片段的依赖性,这似乎非常麻烦.那我怎么能为它提供依赖呢?
android dependency-injection android-fragments android-nested-fragment
我有一个Observable(从网络获取数据).问题是可观察的速度可能快或慢,具体取决于网络状况.
我显示进度小部件,当observable正在执行时,并在observable完成时隐藏它.当网络快速 - 进展flikers(出现和消失).我想将可观察的最小执行时间设置为1秒.我怎样才能做到这一点?
"延迟"运算符不是一个选项,因为即使对于慢速网络它也会延迟.
以某种方式调用间谍对象的方法对真正的间谍对象没有影响:
public class AAA {
public int a;
public void setA(int aa) {
this.a = aa;
}
public int getA() {
return a;
}
}
public class Proof {
@Test
public void wtf() {
AAA obj = new AAA();
AAA spy = Mockito.spy(obj);
spy.setA(22);
assertThat(obj.getA(), equalTo(22));
}
}
Run Code Online (Sandbox Code Playgroud)
怎么可能?我想Proof测试应该通过。
我正在努力了解RxJava.我的测试代码是:
import rx.Observable;
import rx.Subscriber;
import rx.functions.Action1;
import java.util.concurrent.TimeUnit;
public class Hello {
public static void main(String[] args) {
Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
try {
Thread.sleep(1000);
subscriber.onNext("a");
Thread.sleep(1000);
subscriber.onNext("b");
Thread.sleep(1000);
subscriber.onNext("c");
Thread.sleep(1000);
subscriber.onNext("d");
Thread.sleep(1000);
subscriber.onNext("e");
Thread.sleep(1000);
subscriber.onNext("f");
Thread.sleep(1000);
subscriber.onNext("g");
Thread.sleep(1000);
subscriber.onNext("h");
} catch (InterruptedException e) {
subscriber.onError(e);
}
}
});
observable
.delay(2, TimeUnit.SECONDS)
.subscribe(new Action1<String>() {
@Override
public void call(String string) {
System.out.println(string);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
没有.delay(2, TimeUnit.SECONDS) …
我有一个依赖于第三方库(aar)的项目.我想更改此库中的一些字符串(它们在库的strings.xml中定义).是否可以在不处理库源代码的情况下覆盖这些字符串值?(字符串资源的id已知).
我有两个观测值o1和o2。我通过Observable.zip()函数压缩它们,但是每次都在不同的调度程序上进行订阅。我希望所有o1,o2和z observable都应该在Schedulers.io()上可订阅。但是每次都是Schedulers.io()或Schedulers.computation()是随机的。
这是我的重现问题的源代码
import rx.Observable;
import rx.schedulers.Schedulers;
public class RxZipSchedulers {
public static void main(String[] args) {
for(int i=0;i<100;i++) {
Observable<String> o1 = Observable.just("o1").subscribeOn(Schedulers.computation());
Observable<String> o2 = Observable.just("o2");
Observable z = Observable.zip(o1, o2, (s1, s2) -> s1 + " " + s2 + " " + Thread.currentThread());
z.subscribeOn(Schedulers.io())
.subscribe(res -> {
System.out.println(res);
});
z.toCompletable().await();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的机器上,输出是这样的(每次都要注意RxComputationScheduler或RxIoScheduler):
o1 o2线程[RxComputationScheduler-1,5,main]
o1 o2线程[RxComputationScheduler-4,5,main]
o1 o2线程[RxComputationScheduler-1,5,main]
o1 o2线程[RxComputationScheduler-3,5,main]
o1 o2线程[RxComputationScheduler-4,5,main]
o1 o2线程[RxComputationScheduler-3,5,main]
o1 o2线程[RxIoScheduler-3,5,main]
o1 o2线程[RxIoScheduler-2,5,main]
o1 o2线程[RxComputationScheduler-1,5,main]
o1 o2线程[RxComputationScheduler-3,5,main]
o1 o2线程[RxIoScheduler-3,5,main] …
java ×5
rx-java ×4
android ×3
reactivex ×3
aar ×1
freemarker ×1
junit ×1
mockito ×1
renderscript ×1
unit-testing ×1