Start with 4096. Time it. Double it. Repeat until you don't care about the difference. I predict you will stop at 8192 if not before. Much depends on where the input is coming from. But don't just time the input, time the entire process. You will find everything goes faster with bigger buffers, not just the input.
How will buffer size be influenced in the mobile space where connections are slow and needs to support interruption. The input stream read(bye buffer) method blocks while the buffer is filled. Is there any way to interrupt the read method when using large buffer sizes like 4096?