Я не знаю, единственная ли это проблема, но у вас есть классический сбой Java: вы не рассчитываете на то, что read () всегда позволяет вернуть меньше байтов, чем вы просите. Таким образом, ваше чтение может получить менее 1024 байтов, но ваша запись всегда записывает ровно 1024 байта, возможно, включая байты из предыдущей итерации цикла.
Исправить с помощью:
while ( (len1 = in.read(buffer)) > 0 ) {
f.write(buffer,0, len1);
}
Возможно, более высокая задержка в сети или меньший размер пакетов 3G на Android усиливают эффект?