MAC size 128 bits or more? Just a quick question:
I've seen implemented BouncyCastle's class AeadParameters with MAC length of 128 bits, which was allegedly recommended.
Though when I looked up HMac to implement my own MAC in CBCBlockCipher, I found people using HMac with only SHA256, which results in MAC's length of only 32 bytes.

So what route should I take? Should I implement something like SHA512 to gain some MAC length?
It seems that this is just a misunderstanding between bits and bytes.  32 bytes is 256 bits, so 32 bytes is more than enough.

The security of HMAC is very strong; the security is directly related to the minimum of the key size and HMAC output size. So using 32 bytes / 256 bits as output size is fine. You could use fewer bytes for the authentication tag (using the leftmost bytes is the default), but it is recommended to keep to the default. Using SHA-512/256 might be a good idea for larger messages on 64 bit machines. SHA-224 could also be an option if you require a smaller authentication tag. For a newer protocol you could go with KMAC / SHA-3.

AEAD ciphers almost exclusively use the block cipher for the final calculation to produce the authentication tag. If AES or an AES finalist is used then the block size will be 128 bits - which means that 128 bit is the maximum authentication tag supported. You could go for a smaller authentication tag than 128 for real time protocols or protocols for embedded devices. In that case GCM is not recommended as there are security concerns if smaller tag sizes are used for that mode. CCM or EAX mode would make more sense for smaller authentication tags. These modes use CBC-MAC and CMAC respectively.

Note that the verification of an authentication tag should be performed using a constant time compare.