小编Ant*_*C G的帖子

Robolectric + rxJava + retrofit第二次调用抛出java.io.InterruptedIOException

我正在开发和Android应用程序.我正在使用改进(使用OkClient)进行api请求和使用Robolectric进行测试.我的api看起来像这样:

@GET("/v1/book/{bookId}") Observable<Book> getBook(@Path("bookId") int bookId);
Run Code Online (Sandbox Code Playgroud)

仅仅对于Robolectric我强迫api调用是同步的.restAdapter构建器如下所示:

RestAdapter.Builder builder = new RestAdapter.Builder().setEndpoint(environment.getServerEndpoint())
                        .setClient(new OkClient(client))
                        .setExecutors(new ImmediateExecutor(), null)
                        .setErrorHandler(new ErrorHandler())
                        .setRequestInterceptor(new RequestInterceptor() {
                            @Override
                            public void intercept(RequestFacade request) {
                                // Always ask for JSON data
                                request.addHeader("Accept", "application/json");
                                request.addHeader("Content-Type", "application/json");               
                            }
                        });

public class ImmediateExecutor implements Executor {

        @Override public void execute(Runnable command) {
            command.run();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我有一个简单的测试,如下所示:

API.getBook(1).subscribe();
API.getBook(2).subscribe();
Run Code Online (Sandbox Code Playgroud)

Restadapter是使用构建器创建的,以及带有它的API对象(restadapter.create(...)).我省略了它,因为它是微不足道的.

第一个工作没有问题,但第二个应该是相同的抛出异常:

java.io.InterruptedIOException
    at okio.Timeout.throwIfReached(Timeout.java:146)
    at okio.Okio$1.write(Okio.java:75)
    at okio.AsyncTimeout$1.write(AsyncTimeout.java:155)
    at okio.RealBufferedSink.flush(RealBufferedSink.java:201)
    at com.squareup.okhttp.internal.http.HttpConnection.flush(HttpConnection.java:140)
    at com.squareup.okhttp.internal.http.HttpTransport.finishRequest(HttpTransport.java:52)
    at com.squareup.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:828)
    at com.squareup.okhttp.internal.http.HttpEngine.access$200(HttpEngine.java:95)
    at com.squareup.okhttp.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:823)
    at …
Run Code Online (Sandbox Code Playgroud)

testing android robolectric rx-java retrofit

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

Android MediaFormat KEY_REPEAT_PREVIOUS_FRAME_AFTER 被忽略了?

我正在开发一个应用程序,该应用程序可以流式传输屏幕内容并将其通过 rtsp 流式传输。我正在使用 MediaCodec 和 VirtualDisplay。我遇到的问题是,当屏幕保持静态时,不会通过网络发送数据(不会生成新帧)。10 秒后,客户端断开连接。我看过一些帖子,人们说他们使用 KEY_REPEAT_PREVIOUS_FRAME_AFTER 来解决这个问题,但这个值似乎被忽略了。

这是我正在使用的代码:

MediaFormat format = MediaFormat.createVideoFormat(VIDEO_MIME_TYPE, VIDEO_WIDTH, VIDEO_HEIGHT);

format.setInteger(MediaFormat.KEY_COLOR_FORMAT,
    MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
format.setInteger(MediaFormat.KEY_BIT_RATE, BIT_RATE);
format.setInteger(MediaFormat.KEY_FRAME_RATE, FRAME_RATE);
format.setInteger(MediaFormat.KEY_CAPTURE_RATE, FRAME_RATE);
format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1); // 1 seconds between I-frames
format.setLong(MediaFormat.KEY_REPEAT_PREVIOUS_FRAME_AFTER, 1000000L / (long) FRAME_RATE);

MediaCodec mediaCodec = MediaCodec.createEncoderByType(VIDEO_MIME_TYPE);
mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
mediaCodecSurface = mediaCodec.createInputSurface();
mediaCodec.start();
Run Code Online (Sandbox Code Playgroud)

FRAME_RATE 为 30,VIDEO_MIME_TYPE 为 video/avc,BIT_RATE 为 1800000,VIDEO_WIDTH 为 1280,VIDEO_HEIGHT 为 720。

我将 mediaCodecSurface 传递给 VirtualDisplay。

有什么建议吗?

android video-streaming android-mediacodec

5
推荐指数
0
解决办法
500
查看次数

无头Chrome量角器文件下载测试失败

我量角器测试有问题。它正在工作,但是现在(甚至认为没有任何变化)它没有。测试只是打开应用程序(Web应用程序),然后单击按钮下载图像。下载应立即开始。问题是,下载事件后的下一条指令将引发异常:失败:无法访问chrome。我正在使用最新的chrome和chrome驱动程序版本。

量角器的Capabilites部分如下所示:

capabilities: {
   browserName: 'chrome',
   loggingPrefs: { browser: 'ALL' },
   chromeOptions: {
      args: ['--headless', '--window-size=1240,780'],
   },
}
Run Code Online (Sandbox Code Playgroud)

我正在阅读有关使用DevTools以无头模式(Page.setDownloadBehavior)启用下载的信息,但到目前为止还算不上什么。

有人也有这个问题吗?任何线索如何解决它?

谢谢。

download angularjs-e2e protractor google-chrome-headless

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