Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Albatross
0 / 0 / 0
Регистрация: 22.04.2016
Сообщений: 2
#1

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

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

Добрый день. Сделал 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2016, 11:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сделать проверку памяти перед скачиванием файла (Программирование Android):

Как сделать автоматическую проверку обновлений - Программирование Android
Подскажите пожалуйста, как реализовать автоматическую проверку обновлений приложения с стороннего сервера(приложение из ненадежных...

Как сделать проверку обновлений и их загрузку? - Программирование Android
Есть приложение, хочу сделать так что бы при каждом входе смотрело нет ли обновлений на моем серваке, если есть то давало выдавало окно...

Как сделать заставку перед игрой? - Программирование Android
Всем привет! Пользователь запускает игру и перед тем как открыть меню игры, сначала показывается заставка с рисунком во весь экран. ...

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

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

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

1
DarkVortex
103 / 69 / 18
Регистрация: 07.07.2014
Сообщений: 239
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2016, 11:30
Привет! Вот еще темы с ответами:

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

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

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

Как сделать так, чтобы перед запуском файла запрашивался пароль? - C (СИ)
Как сделать так, чтобы перед запуском файла запрашивался пароль? То есть. Имеется bat-файл со следующим содержимым: @ECHO OFF CLS ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru