首页 > 解决方案 > MethodHandle.invoke 和 MethodHandle.invokeExact 仅支持从 Android O (--min-api 26) 开始

问题描述

我正在android中开发一个应用程序,我想在其中使用热敏打印机在收据上打印图像。

为了完成这个任务,我escpos-coffee在我的应用程序中添加了这个包。

要打印它正在使用 import java.imageio.BufferedImage的图像,要读取它正在使用的图像,这ImageIO.read(file)两个类都位于rt.jar我在项目中外部添加的库中。

但是当我尝试构建它时,它会引发错误:

错误:仅从 Android O 开始支持 MethodHandle.invoke 和 MethodHandle.invokeExact (--min-api 26)

在此之前我的 sdk 版本已更改,然后将 min sdk 更改为 5.1 和(目标并将 skd 版本编译为 7.0)然后它开始抛出。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

任何详细的帮助将不胜感激。

谢谢你。

标签: javaandroidandroid-sdk-manager

解决方案


您需要使用 SNAPSHOT 版本 com.github.anastaciocintra:escpos-coffee:4.0.0-SNAPSHOT

(快照尚未...)

然后,实现 CoffeImage 接口:(CoffeeImageAndroidImpl.java)

import android.graphics.Bitmap;

import com.github.anastaciocintra.escpos.image.CoffeeImage;

public class CoffeeImageAndroidImpl implements CoffeeImage {
    private Bitmap bitmap;

    public CoffeeImageAndroidImpl(Bitmap bitmap) {
        this.bitmap = bitmap;
    }


    @Override
    public int getWidth() {
        return bitmap.getWidth();
    }

    @Override
    public int getHeight() {
        return bitmap.getHeight();
    }

    @Override
    public CoffeeImage getSubimage(int x, int y, int w, int h) {
        return new CoffeeImageAndroidImpl(bitmap.createBitmap(this.bitmap,x,y,w,h));
    }

    @Override
    public int getRGB(int x, int y) {
        return bitmap.getPixel(x, y);
    }
}

和...打印这样的图像:

...

            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inScaled = false;

            Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.dog, options);
            RasterBitImageWrapper imageWrapper = new RasterBitImageWrapper();
            escpos.writeLF("BitonalOrderedDither()");
            // using ordered dither for dithering algorithm with default values
            Bitonal algorithm = new BitonalOrderedDither();
            EscPosImage escposImage = new EscPosImage(new CoffeeImageAndroidImpl(bitmap), algorithm);
            escpos.write(imageWrapper, escposImage);
            escpos.feed(5).cut(EscPos.CutMode.FULL);



...

阅读更多内容并获取 github 示例:https ://github.com/anastaciocintra/escpos-coffee/issues/9#issuecomment-541343942


推荐阅读