图像阅读器。在图像上设置可用的侦听器:为什么我收到空字节数组?

我在图像读取器外部收到字节数组null,但在图像读取器内部也可以。为什么我不会在图像读取器之外获取字节数组?我通过异步任务类中的套接字发送了一个字节数组,但它获取了一个空数组。如果在Image Available方法上捕获了屏幕,则我得到了图像字节,因此我将字节保存到bytes数组变量中,但我不会在字节数组之外得到它,而在监听器中却为null,我不会发送字节,因为我使用异步任务类。 注意:此方法在异步任务类中调用

public byte [] byteArray = null;

public void createImageReader()
{
    if(Build.VERSION.SDK_INT >= 21) {
        Log.d("strrun","Load CreateImageRead");
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        Display display = wm.getDefaultDisplay();
        metrics = new DisplayMetrics();
        display.getMetrics(metrics);
        Point size = new Point();
        display.getRealSize(size);
        final int mWidth = size.x;
        final int mHeight = size.y;
        int mDensity = metrics.densityDpi;

        mImageReader = ImageReader.newInstance(mWidth,mHeight,PixelFormat.RGBA_8888,2);

        handler = new Handler(Looper.getMainLooper());

        int flags = DisplayManager.VIRTUAL_DISPLAY_flaG_OWN_CONTENT_ONLY | DisplayManager.VIRTUAL_DISPLAY_flaG_PUBLIC;

        Mainactivity.mProjection.createVirtualDisplay("screen-mirror",mWidth,mDensity,flags,mImageReader.getSurface(),null,handler);
        Log.d("strrun","Load CreateImageRead 2");


        try {
            mImageReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {
                @Override
                public void onImageAvailable(ImageReader reader) {

                    reader.setOnImageAvailableListener(null,handler);

                    Image image = reader.acquireLatestImage();

                    final Image.Plane[] planes = image.getPlanes();
                    final ByteBuffer buffer = planes[0].getBuffer();

                    int pixelStride = planes[0].getPixelStride();
                    int rowStride = planes[0].getRowStride();
                    int rowPadding = rowStride - pixelStride * metrics.widthPixels;
                    // create bitmap
                    Bitmap bmp = Bitmap.createBitmap(metrics.widthPixels + (int) ((float) rowPadding / (float) pixelStride),metrics.heightPixels,Bitmap.Config.ARGB_8888);
                    bmp.copypixelsFromBuffer(buffer);


                    image.close();
                    reader.close();

                    Bitmap realSizeBitmap = Bitmap.createBitmap(bmp,metrics.widthPixels,bmp.getHeight());
                    bmp.recycle();



                    ByteArrayOutputStream stream = new ByteArrayOutputStream();
                    realSizeBitmap.compress(Bitmap.CompressFormat.JPEG,100,stream);

                    byteArray = stream.toByteArray();


                    try {
                        stream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }



                   Log.d("Receive","Length : "+byteArray.length);

                    /* do something with [realSizeBitmap] */
                }

            },handler);

        }catch (Exception e)
        {
            Log.d("strrun",e.getMessage());
            e.printStackTrace();
        }




        //Byte Array null why? 
        Log.d("Receive","Length : "+byteArray.length);

       // sentScreenShot();
    }



}//createImageReader
yu_yi2009 回答:图像阅读器。在图像上设置可用的侦听器:为什么我收到空字节数组?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3111477.html

大家都在问