Ive found the answer to my problem, so I'm going to share my info.
Anyway, the problem was that on Android 4.0.4 and 4.0.3 when reading mp3 files from device memory setDataSource() did not read the length of file right. Which made MediaPlayer go psycho and call Error (1,-2147483648).
Android was giving all files length = 0x7ffffffffffffffL.
Why? I don't know ;)
Fix:
File file = new File(uri);
long length = file.getTotalSpace()
FileInputStream is = new FileInputStream(file);
player.setDataSource(is.getFD(), 0l, length);
player.prepareAsync();
That's it! Hope it will help someone with similar problem, peace!