小编wil*_*dev的帖子

如何使用ScriptIntrinsicYuvToRGB(将byte [] yuv转换为byte [] rgba)

我有byte[] yuvByteArray(540x360图像从Camera.PreviewCallback.onPreviewFrame方法中捕获并转储到assets/yuv.bin文件中).我想转换byte[] yuvbyte[] 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)

android renderscript

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

RxJava合并去抖动而不是去抖动可观察者

我有两个可观察量:

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)

这是一个正在发生的事情的图表:图

如何从去抖动的观察中摆脱这个过度的旧事件?

java rx-java reactivex

8
推荐指数
1
解决办法
703
查看次数

如何评估Freemarker宏中的参数?

假设我们有一个简单的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,但还没有结果(((

有可能做我所需要的吗?

freemarker

6
推荐指数
1
解决办法
3854
查看次数

如何将依赖注入嵌套的android片段?

对于普通(非嵌套片段),我使用以下方法

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

6
推荐指数
2
解决办法
1779
查看次数

RxJava Observable最短执行时间

我有一个Observable(从网络获取数据).问题是可观察的速度可能快或慢,具体取决于网络状况.

我显示进度小部件,当observable正在执行时,并在observable完成时隐藏它.当网络快速 - 进展flikers(出现和消失).我想将可观察的最小执行时间设置为1秒.我怎样才能做到这一点?

"延迟"运算符不是一个选项,因为即使对于慢速网络它也会延迟.

java rx-java reactivex

4
推荐指数
1
解决办法
1705
查看次数

Mockito.spy 不改变真实对象

以某种方式调用间谍对象的方法对真正的间谍对象没有影响:

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测试应该通过。

java junit unit-testing mockito

4
推荐指数
1
解决办法
448
查看次数

RxJava.Observable.delay工作奇怪(最后缺少一些项目)

我正在努力了解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) …

java rx-java

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

是否有可能从外部aar库覆盖android字符串资源?

我有一个依赖于第三方库(aar)的项目.我想更改此库中的一些字符串(它们在库的strings.xml中定义).是否可以在不处理库源代码的情况下覆盖这些字符串值?(字符串资源的id已知).

android android-resources aar

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

Observable.zip选择不同的调度程序来订阅不同的呼叫

我有两个观测值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 rx-java reactivex

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