Нужно запилить `BufferedOutputStream` от потока `urlConnection.getOutputStream()`, в него залить весь файл, потом читать его `count` и читать из входного потока соединения, в котором данные появятся при ошибках или после успешного заливания файла, в промежутках спать и обновлять прогресс задачи через `publishProgress()`. Если я правильно понимаю логику буферизованного потока, его счетчик будет отражать количество ещё не переданных в нижележащий поток байт, т.е. вначале он вырастет до максимума, потом будет падать до нуля, и потом появятся данные в потоке `urlConnection.getInputStream()`, который вообще-то не надо просто получить и выкинуть, а надо из него читать. Соответственно снаружи пишешь сам прогрессбар и логику его обновления исходя из полученного изнутри задачи счетчика.
ЗЫ код писать не буду, не настолько силен в джаве. Тут основная идея, которая в принципе от языка не зависит, но учитывает его особенности.