Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 22.04.2016
Сообщений: 2
1

Как сделать проверку памяти перед скачиванием файла

22.04.2016, 11:22. Показов 664. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Сделал AsyncTask отдельным файлом.Скачиваю фаил, появляется ProgressDialog идет процесс закачки на карту, все работает.

Задумка такая: как сделать проверку перед началом скачивания на наличие свободного места в памяти телефона. Если место есть - идет скачивание файла. Если места нет - диалог : освободите столько то.


XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
 
    <Button
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:id="@+id/button1"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="77dp"
        android:background="#ffdfbe26"
        android:textSize="16dp"
        android:text="Download " />
</RelativeLayout>

фаил MainActivity

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
 
public class MainActivity extends Activity implements View.OnClickListener {
 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        Button b1 = (Button) findViewById(R.id.button1);
        b1.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v) {
        // Создаём новый AsyncTask, передаём параметры конструктору
        FileDownloader fd1 = new FileDownloader(this, "http://www.ex.ua/load/64512252", "/sdcard/Download/", "a999.zip");
        fd1.execute();//}
    }
}

фаил с AsyncTask

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.util.Log;
 
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
 
public class FileDownloader extends AsyncTask<String, String, String> {
 
    String downloadURL;
    String savePath;
    String fileName;
    Activity activity1;
    ProgressDialog pDialog;
 
    //Принимаем в конструкторе путь сохранения файла, название и контекст для ProgressDialog
    public FileDownloader(Activity activity0, String url, String path, String name) {
        downloadURL = url; 
        savePath = path; 
        fileName = name;
        activity1 = activity0;
 
    }
 
    protected void onPreExecute() {
 
        pDialog = new ProgressDialog(activity1);// ProgressDialog
        pDialog.setMessage("Идет cкачивание файла...");
        pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pDialog.setCancelable(false);
        pDialog.show();
        super.onPreExecute();
    }
 
    protected String doInBackground(String... s) {
        int count; // количество прочитанных байт
 
        try {
            URL url = new URL(downloadURL);
 
            URLConnection conexion = url.openConnection();
            conexion.connect();// метод connect производит соединение
 
            int lenghtOfFile = conexion.getContentLength();// После соединения с сервером получаем размер загружаемого файла
            Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile);
            InputStream input = new BufferedInputStream(url.openStream());
            OutputStream output = new FileOutputStream(savePath + fileName);
 
            byte data[] = new byte[1024];//Создаём новый пустой массив 
            long total = 0;//Переменная total содержит общее количество прочитанных данных в байтах.
 
            while ((count = input.read(data)) != -1) {
                total += count;
                publishProgress(""+(int)((total*100)/lenghtOfFile));
                output.write(data, 0, count);//Записываем данные из входного потока в файловый.
            }//data - данные, 0 - откуда начинать запись(то есть с начала массива data)
            //count - сколько данных записывать (то есть столько, сколько мы прочитали методом read)
 
            output.flush();//Метод flush производит окончательную запись данных из файлового потока на карту памяти
            output.close();//Закрытие файлового потока
            input.close();// Закрытие входного потока - закрытие соединения с сервером.
 
        }
        catch (Exception e) {Log.d("ANDRO_ASYNC","Произошла фигня, разрыв соединения!");}
        return null;
 
    }
    protected void onProgressUpdate(String... progress) {
 
        pDialog.setProgress(Integer.parseInt(progress[0]));// обновляем
    }
    protected void onPostExecute(String unused) {
 
        pDialog.dismiss();// закрытие pDialog
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2016, 11:22
Ответы с готовыми решениями:

Редактирование файла перед скачиванием
Здравствуйте, на сайте приходится в разные темы заливать почти однотипные файлы. Я подумал, а ведь...

Форма с полями перед скачиванием файла
Добрый день. Я в jquery, да и в javascript не очень силен, но появилась надобность сделать...

Как сделать проверку времени перед отправкой формы
Посетитель заполнил форму на моем сайте. Отвлекся. Вернулся к компу и нажал кнопку submit. Нужно...

Поправить скрипт задержки перед скачиванием
Здравствуйте, есть скрипт который отвечает за то, что если пользователь не авторизован, то при...

1
103 / 69 / 19
Регистрация: 07.07.2014
Сообщений: 240
22.04.2016, 11:30 2
Java
1
2
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
Получаете размер свободного места в байтах, дальше сравнивайте с размером файла.
0
22.04.2016, 11:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2016, 11:30
Помогаю со студенческими работами здесь

Как сделать проверку логина из файла?
Как сделать проверку логина из файла? Ну допустим у меня есть такое: #include &lt;iostream&gt;...

как сделать проверку на существование файла
procedure vibor faila; var F: text; Name_f: string; begin writeln('введите имя файла');...

Как сделать проверку цифровой подписи файла?
&quot;Получить и проверить цифровую подпись файла, в качестве пары ключей использовать само подписанный...

Как сделать проверку на наличие похожего имени файла и запрос нового имени файла?
При загрузке изображения присваивается имя foto.jpg. Вопрос, как сделать проверку на то что фото с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru