小编mts*_*kis的帖子

Android ImageReader.acquireLatestImage返回无效的JPG

我正在使用Android ImageReader类从MediaProjection.createVirtualDisplay方法接收位图.

到目前为止,我的代码如下所示:

mProjection.createVirtualDisplay("test", width, height, density, flags, mImageReader.getSurface(), new VirtualDisplayCallback(), mHandler);
            mImageReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {
                @Override
                public void onImageAvailable(ImageReader reader) {
                    Image image = null;
                    try {
                        image = mImageReader.acquireLatestImage();
                        final Image.Plane[] planes = image.getPlanes();
                        final ByteBuffer buffer = planes[0].getBuffer();
                        final byte[] data = new byte[buffer.capacity()];
                        buffer.get(data);
                        final Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
                        if (bitmap==null)
                            Log.e(TAG, "bitmap is null");

                    } catch (Exception e) {
                        if (image!=null)
                            image.close();
                    }
                }

            }, mHandler);
Run Code Online (Sandbox Code Playgroud)

问题是BitmapFactory无法将data []解码回Bitmap,即BitmapFactory总是返回null.我从logcat看到的唯一消息来自android_media_ImageReader.cpp,如下所示:

D/ImageReader_JNI(1432): ImageReader_imageSetup: Receiving JPEG …
Run Code Online (Sandbox Code Playgroud)

android bitmap android-5.0-lollipop

6
推荐指数
3
解决办法
3万
查看次数

在ndk {} DSL中定义LOCAL_SRC_FILES

我想知道是否可以在gradle.build ndk {}块中定义LOCAL_SRC_FILES.

我目前正在使用:

dependencies {
    classpath 'com.android.tools.build:gradle:1.3.0'
}
Run Code Online (Sandbox Code Playgroud)

在我的顶级gradle.build文件中.

我的jni模块gradle.build文件如下所示:

apply plugin: 'com.android.library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    compileSdkVersion 11
    buildToolsVersion "22.0.1"

    def jniSrc = System.getProperty("user.home") + "/srcs/jni"

    defaultConfig {
        ndk {
            moduleName "core"
            stl "gnustl_shared"
            cFlags "-std=c++11"
        }
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']
            jni.srcDirs = ["${jniSrc}"]
        }
    }

    buildTypes { …
Run Code Online (Sandbox Code Playgroud)

c++ android android-ndk android-gradle-plugin

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