MatrixToImageWriter использует BitMatrix, а не ByteMatrix, как возвращается QRCode.getMatrix. Глядя на исходный код Android, я нашел следующее доказательство концепции решения:
try {
MultiFormatWriter writer = new MultiFormatWriter();
Hashtable hints = new Hashtable();
hints.put( EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q );
MatrixToImageWriter.writeToFile( writer.encode( "hello world", BarcodeFormat.QR_CODE, 800, 800, hints ),
"png", new File( "/tmp/qrcode.png" ) );
} catch ( Exception e ) {
System.out.println( "failure: " + e );
}
Кстати, наложение Hashtable в API не является чистым. пожалуйста, используйте карту. В любом случае, Hashtable все еще мало кто использует, вы должны почти всегда использовать HashMap (за исключением нескольких случаев).