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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Как создать подобные меню? http://www.cyberforum.ru/android-dev/thread1717864.html
Интересует создание подобных меню. Как их сделать? Особенно "выберите файл для экспорта", где можно ввести своё имя сохраняемого файла.
Программирование Android Android TextView в блоке ListView Добрый ночи. Такая проблема возникла вот код <TextView android:layout_width="match_parent" android:id="@+id/testtext" ... http://www.cyberforum.ru/android-dev/thread1717821.html
Программирование Android Создать сокет-сервер для связи с сокет-клиентом (телефоном на андроид)
Доброго времени суток.Не могли бы вы мне подсказать, как можно создать сокет-сервер для связи с сокет-клиентом(телефоном на андроид) на Java через глобальную сеть интернет?На данный момент у меня...
Executable android Программирование Android
подскажите, пожалуйста, как собрать хоть что то исполняемое под андроид меня хватило только на то чтобы с помощью javac.exe из .java получить .class затем с помощью dx.bat из android-sdk (уж не...
Программирование Android Создание простой игры матрицы памяти http://www.cyberforum.ru/android-dev/thread1717603.html
Здравствуйте дорогие форумчане. Суть игры в том, что на поле, например 6x6, состоящих из не закрашенных блоков(типа матрица) несколько блоков, ненадолго меняют свой цвет, а вам нужно запомнить...
Программирование Android OnClick ExpandableListView Пример для ItemList, который нашел в интернете. listview.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?>adapter,View v, int... подробнее

Показать сообщение отдельно
Albatross
0 / 0 / 0
Регистрация: 22.04.2016
Сообщений: 2

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

22.04.2016, 11:22. Просмотров 155. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.