【问题标题】:ImageReader on Android is blockingAndroid 上的 ImageReader 被阻止
【发布时间】:2015-08-31 13:06:32
【问题描述】:

我想实现一个图像阅读器,但它在第一次读取图像时阻塞。

我真的不知道如何解锁这种情况。

Surface processSurface = reader.getSurface();
surfaces.add(processSurface);
recordRequestBuilder.addTarget(processSurface);

reader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {
    @Override
    public void onImageAvailable(ImageReader reader) {
      Log.v("ImageReader","Reading");
    //I want to do a process on the image here, but i don't want to 
    //block my UI
    }
},null);

我不明白,如果我写reader.aquireLatestImagereader.aquireNextImage,它告诉我关闭阅读器。

如果我之后执行reader.close,我会得到:

BufferQueue 已废弃

【问题讨论】:

    标签: android image reader


    【解决方案1】:

    好的,我终于找到问题所在了。

    reader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {
                @Override
                public void onImageAvailable(ImageReader reader) {
                    Image mImage = reader.acquireNextImage();
                    /**
                     * TODO
                     * Image Process
                     */
    
                    mImage.close();
                }
            },null);
    

    【讨论】:

      【解决方案2】:

      如果您不想阻止 GUI 进行耗时的操作,您可以在后台运行任务。您可以使用 AsyncTasks 和 Handlers (http://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html) 或遵循 Android 的最佳实践之一:https://developer.android.com/training/best-background.html

      【讨论】:

      • 我认为目前我还没有理解 ImageReader 的工作原理。如果我能举个例子,那会很酷。
      猜你喜欢
      • 1970-01-01
      • 2015-12-14
      • 1970-01-01
      • 1970-01-01
      • 2018-03-25
      • 2012-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多