相关疑难解决方法(0)

"Gradle版本2.10是必需的." 错误

正如我一直在使用

classpath 'com.android.tools.build:gradle:+'
Run Code Online (Sandbox Code Playgroud)

build.gradle文件中,由于gradle版本2.10已发布,因此出现以下错误.错误是:

警告:需要Gradle版本2.10.目前的版本是2.8.如果使用gradle包装器,请尝试将C:\ Users\blahblah\myproject\gradle\wrapper\gradle-wrapper.properties中的distributionUrl编辑为gradle-2.10-all.zip

起初它很容易被指南解决,但是当我完成更改后,我再次收到错误.

我正在使用Android Studio 2.0和最新的Android SDK Tools 24.4.1以及Android SDK Build Tools 23.0.2

我甚至尝试下载Gradle 2.10并将其手动放在android-studio\gradle \文件夹中,但没有运气.

任何帮助,将不胜感激.

plugins android gradle android-studio android-gradle-plugin

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

将Camera2 API与ImageReader一起使用

我正在尝试使用Galaxy S4上的Camera2 API捕获图像数据.ImageReader被用作表面提供者.已使用ImageFormat.YV12和ImageFormat.YUV_420_888尝试使用的图像格式,并生成相同的结果.

设置似乎很好,我使用ImageReader从ImageReader获取一个图像.图像有3个平面.缓冲区是预期的大小,Y平面的宽度*高度和其他两个平面的(宽度*高度)/ 4.

问题是我没有以两种方式正确获取数据.第一个问题是Y平面数据是镜像.这可以处理,虽然很奇怪所以我很好奇,如果这是预期的.

更糟糕的问题是其他两架飞机似乎根本没有正确提供数据.例如,如果图像大小为640x480,导致U和V缓冲区大小为76800字节,则只有缓冲区的前320字节为非零值.此数字不同,似乎不遵循不同图像大小之间的设定比例,但似乎在每种尺寸的图像之间保持一致.

我想知道在使用这个API时是否有一些我遗漏的东西.代码如下.

public class OnboardCamera {
  private final String TAG = "OnboardCamera";

  int mWidth = 1280;
  int mHeight = 720;
  int mYSize = mWidth*mHeight;
  int mUVSize = mYSize/4;
  int mFrameSize = mYSize+(mUVSize*2); 

  //handler for the camera
  private HandlerThread mCameraHandlerThread;
  private Handler mCameraHandler;

  //the size of the ImageReader determines the output from the camera.
  private ImageReader mImageReader = ImageReader.newInstance(mWidth, mHeight, ImageFormat.YV12, 30);

  private Surface mCameraRecieverSurface = mImageReader.getSurface();
  {
      mImageReader.setOnImageAvailableListener(mImageAvailListener, mCameraHandler);
  }

  private byte[] tempYbuffer = …
Run Code Online (Sandbox Code Playgroud)

android android-camera

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

如何在Android Studio上创建Renderscript脚本,并让它们运行?

背景

我想研究一下在Android和Renderscript上创建Renderscript脚本,在过去的一年里,Android-Studio成为Google支持Android应用开发的唯一IDE.

问题

为此,我找到了多个网站,如下:

事实上,我见过的所有教程和示例都是针对Eclipse的,他们说我需要做的就是在"raw"文件夹中创建一个"rs"文件(也在"src"文件夹中尝试过, "MainActivity.java"文件的相同文件夹,它将为我自动生成所需的Java文件,前缀为"ScriptC_".

但它对我不起作用.

我试过的

我已经从我发现的一些样本(对于Eclipse)创建了一个名为"julia.rs"的文件.这是代码:

#pragma version(1)
#pragma rs java_package_name(lb.com.myapplication)

float cx;
float cy;
float width;
float height;
float zoom;
int precision;

uchar *color;

void root(const uchar4 *in, uchar4 *out, uint32_t x, uint32_t y) {
    float fx = (x + 0.5f) / width * (4.f / zoom) - (2.f / zoom);
    float fy = (y + 0.5f) / height * (4.f / zoom) - (2.f / zoom);

    float t = 0; …
Run Code Online (Sandbox Code Playgroud)

eclipse android renderscript android-studio

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

Camera2 - 获取静态捕捉位图的最有效方法

首先问一个问题:在ImageReader知道我总是将捕获转换为 的情况下,初始化和使用camera2 api 的最有效方法是什么Bitmap

我正在尝试 Android Camera2 示例,一切都运行得很好。然而,出于我的目的,我总是需要对捕获的静态图像执行一些后期处理,为此我需要一个Bitmap对象。目前我正在使用来自(我正在解释)的BitmapFactory.decodeByteArray(...)字节。ImageReader.acquireNextImage().getPlanes()[0].getBuffer()虽然这可以接受,但我仍然觉得应该有一种方法可以提高性能。捕获的内容被编码ImageFormat.Jpeg,需要再次解码才能得到Bitmap,这似乎是多余的。理想情况下,我会获取它们PixelFormat.RGB_888并使用将其复制到位图Bitmap.copyPixelsFromBuffer(...),但使用该格式初始化似乎并不ImageReader具有可靠的设备支持。YUV_420_888可能是另一种选择,但环顾四周,似乎需要跳过一些环节才能解码为Bitmap. 有推荐的方法吗?

android bitmap android-camera2

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

Renderscript 致命信号 11 (SIGSEGV) 代码 1 (SEGV_MAPERR) 故障地址

我正在使用camera2 API来获取格式的图像流ImageFormat.YUV_420_888。我需要使用一个库对它们进行一些处理,该库需要将图像作为 RGB 字节数组发送(因此byte array length = width * height * 3

我使用这个线程(也可能是所有其他线程)将图像转换为 RGB 字节数组(这似乎有效,至少结果字节数组是我需要的)。

另外,这是我在 Kotlin 中用于将 YUV_420 转换为 RGB 的确切代码,并进行了一些更新:https://gist.github.com/VictorMotogna/e7a8493af65be994f29f5508660dd4a9

A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xe00000084 in tid 20776 (package name), pid 20776问题是几次尝试后转换崩溃并显示消息。

我尝试过其他图像格式、其他转换,但似乎没有任何效果 - 我要么遇到相同的崩溃(使用 YUV_420 或 NV21 时),要么无法获得正确的图像/转换。

似乎有帮助的一件事是:android:hardwareAccelerated="false"应用程序在运行次数比运行次数多得多后崩溃android:hardwareAccelerated="true"

有谁知道如何修理它?

rgb android yuv android-ndk renderscript

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

有没有人设法使用RenderScript和新的Camera API获得YUV_420_888帧?

我正在使用RenderScript和Allocation从Android Camera2 API获取YUV_420_888帧,但是一旦我从分配中复制byte [],我只从组成帧的3个平面接收Y平面,而U和V平面值在字节[]中设置为0.我试图模仿previos相机API中的onPreviewframe,以便在应用程序处理相机帧时执行.我的分配创建如下:

Type.Builder yuvTypeBuilderIn = new Type.Builder(rs, Element.YUV(rs));
    yuvTypeBuilderIn.setX(dimensions.getWidth());
    yuvTypeBuilderIn.setY(dimensions.getHeight());
    yuvTypeBuilderIn.setYuvFormat(ImageFormat.YUV_420_888);
    allocation = Allocation.createTyped(rs, yuvTypeBuilderIn.create(),
            Allocation.USAGE_IO_INPUT | Allocation.USAGE_SCRIPT);
Run Code Online (Sandbox Code Playgroud)

而我的脚本看起来像:

#pragma version(1)
#pragma rs java_package_name(my_package)
#pragma rs_fp_relaxed

rs_allocation my_frame;
Run Code Online (Sandbox Code Playgroud)

android yuv renderscript android-camera android-5.0-lollipop

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

在Android camera2下将YUV_420_888转换为位图的图像不正确

我正在尝试将YUV_420_888图像转换为来自camera2预览的位图。但是输出图像的颜色不正确。

接下来是我正在运行的用于生成位图的测试代码。仅是测试代码,因此请不要对不相关的因素进行任何代码审查,例如,位图将被回收,或者将连续创建RenderScript。该代码仅用于测试从YUV到RGB的转换,仅此而已。

其他因素是,该代码应从API 22及更高版本运行,因此使用RenderScript特定的ScriptIntrinsicYuvToRGB应该足够,而不必使用旧的手动转换,由于缺乏适当的YUV_420_888支持,因此仅在以前的Android版本中才需要使用。

由于RenderScript已经提供了专用于处理所有类型的YUV转换的ScriptIntrinsicYuvToRGB,我认为问题可能出在如何从Image对象获取YUV字节数据,但我无法弄清楚问题出在哪里。

要在Android Studio中查看输出位图,请在bitmap.recycle()中放置一个断点,因此在回收之前,可以使用“查看位图”选项在“变量调试”窗口中对其进行查看。

请让我知道是否有人可以发现转换的问题:

@Override
public void onImageAvailable(ImageReader reader)
{
    RenderScript rs = RenderScript.create(this.mContext);

    final Image image = reader.acquireLatestImage();

    final Image.Plane[] planes = image.getPlanes();
    final ByteBuffer planeY = planes[0].getBuffer();
    final ByteBuffer planeU = planes[1].getBuffer();
    final ByteBuffer planeV = planes[2].getBuffer();

    // Get the YUV planes data

    final int Yb = planeY.rewind().remaining();
    final int Ub = planeU.rewind().remaining();
    final int Vb = planeV.rewind().remaining();

    final ByteBuffer yuvData = ByteBuffer.allocateDirect(Yb + Ub + Vb);

    planeY.get(yuvData.array(), 0, Yb);
    planeU.get(yuvData.array(), Yb, …
Run Code Online (Sandbox Code Playgroud)

android bitmap yuv android-camera2

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