Проблема с загрузкой mp3 файлов в Android - PullRequest
1 голос
/ 19 июля 2011

Я создал приложение, которое позволяет пользователю загружать аудиофайл и сохранять его на своей SD-карте. Приведенный ниже код на самом деле работает, но проблема в том, что каждый раз, когда я нажимаю кнопку загрузки, все приложение зависает, пока загрузка не закончится. Как я могу решить эту проблему, чтобы она не зависала при нажатии кнопки загрузки? Пожалуйста, помогите мне, я изо всех сил пытался найти решение для этого, я был бы очень признателен за вашу помощь. Заранее спасибо.

попробуй {

            URL url = new URL("http://www.yourfile.mp3");
            HttpURLConnection c = (HttpURLConnection) url.openConnection();
            c.setRequestMethod("GET");
            c.setDoOutput(true);
            c.connect();

            String PATH = Environment.getExternalStorageDirectory()
                    + "/download/";
            Log.v("", "PATH: " + PATH);
            File file = new File(PATH);
            file.mkdirs();

             String fileName = "yourfilename.mp3";

            File outputFile = new File(file, fileName);
            FileOutputStream fos = new FileOutputStream(outputFile);

            InputStream is = c.getInputStream();

            byte[] buffer = new byte[1024];
            int len1 = 0;
            while ((len1 = is.read(buffer)) != -1) {
                fos.write(buffer, 0, len1);
            }
            fos.close();
            is.close();

            }catch (IOException e) {
                   e.printStackTrace();
            }

        }

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Поскольку ваш метод загрузки работает с загрузкой вашего файла, создается впечатление, будто приложение зависло.Но правда в том, что ваш метод выполняется сзади.Поэтому, чтобы избежать зависания приложения, вы можете показывать ProgressDialog, пока загружается метод загрузки, и после его запуска вы можете отменить ProgressDialog.

Таким образом, вы должны использовать отдельную ветку для загрузки.Вот ссылка, которая объясняет вам, как загрузить и показать файл progressDialog за это время.

http://www.bogotobogo.com/Android/android23HTTP.html

0 голосов
/ 19 июля 2011

Каждый раз, когда вы нажимаете кнопку, вызывайте AsynchTask. Делайте загрузку в методе doInBackground. этот класс предназначен именно для той работы, которую вы ищете. Используйте метод doInBackground () для выполнения задачи, а в onPreExecute вы можете отобразить диалог прогресса.

...