FormatInformation readFormatInformation() throws FormatException {

    if (parsedFormatInfo != null) {
      return parsedFormatInfo;
    }

    // Read top-left format info bits
    int formatInfoBits1 = 0;
    for (int i = 0; i < 6; i++) {
      formatInfoBits1 = copyBit(i, 8, formatInfoBits1);
    }
    // .. and skip a bit in the timing pattern ...
    formatInfoBits1 = copyBit(7, 8, formatInfoBits1);
    formatInfoBits1 = copyBit(8, 8, formatInfoBits1);
    formatInfoBits1 = copyBit(8, 7, formatInfoBits1);
    // .. and skip a bit in the timing pattern ...
    for (int j = 5; j >= 0; j--) {
      formatInfoBits1 = copyBit(8, j, formatInfoBits1);
    }

    // Read the top-right/bottom-left pattern too
    int dimension = bitMatrix.getHeight();
    int formatInfoBits2 = 0;
    int jMin = dimension - 7;
    for (int j = dimension - 1; j >= jMin; j--) {
      formatInfoBits2 = copyBit(8, j, formatInfoBits2);
    }
    for (int i = dimension - 8; i < dimension; i++) {
      formatInfoBits2 = copyBit(i, 8, formatInfoBits2);
    }

    parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits1, formatInfoBits2);
    if (parsedFormatInfo != null) {
      return parsedFormatInfo;
    }
    throw FormatException.getFormatInstance();
  }
FormatInformation readFormatInformation ( ) throws FormatException { if ( parsedFormatInfo != null ) { return parsedFormatInfo ; } int formatInfoBits1 = 0 ; for ( int i = 0 ; i < 6 ; i ++ ) { formatInfoBits1 = copyBit ( i , 8 , formatInfoBits1 ) ; } formatInfoBits1 = copyBit ( 7 , 8 , formatInfoBits1 ) ; formatInfoBits1 = copyBit ( 8 , 8 , formatInfoBits1 ) ; formatInfoBits1 = copyBit ( 8 , 7 , formatInfoBits1 ) ; for ( int j = 5 ; j >= 0 ; j -- ) { formatInfoBits1 = copyBit ( 8 , j , formatInfoBits1 ) ; } int dimension = bitMatrix . getHeight ( ) ; int formatInfoBits2 = 0 ; int jMin = dimension - 7 ; for ( int j = dimension - 1 ; j >= jMin ; j -- ) { formatInfoBits2 = copyBit ( 8 , j , formatInfoBits2 ) ; } for ( int i = dimension - 8 ; i < dimension ; i ++ ) { formatInfoBits2 = copyBit ( i , 8 , formatInfoBits2 ) ; } parsedFormatInfo = FormatInformation . decodeFormatInformation ( formatInfoBits1 , formatInfoBits2 ) ; if ( parsedFormatInfo != null ) { return parsedFormatInfo ; } throw FormatException . getFormatInstance ( ) ; }
<p>Reads format information from one of its two locations within the QR Code.</p>

@return {@link FormatInformation} encapsulating the QR Code's format info
@throws FormatException if both format information locations cannot be parsed as
the valid encoding of format information