Comment trouver la quantité d'espace de stockage (espace disque) à gauche sur Android?
Je suis à essayer de comprendre l'espace disque disponible sur le téléphone Android de l'exécution de mon application. Est-il un moyen de le faire par programmation?
Merci,
- Double Possible de Android obtenez gratuitement taille interne/externe de la mémoire
Vous devez vous connecter pour publier un commentaire.
Essayer StatFs.getAvailableBlocks. Vous aurez besoin de convertir le nombre de blocs à KO avec getBlockSize.
Exemple: Se faire de l'homme une taille lisible comme 1 Go
De la chaîne de mémoire = bytesToHuman(totalMemory())
La conversion d'octets au format lisible par l'homme (comme 1 Mo, 1 Go)
getAvailableBlocks()
etgetBlockSize()
ont depuis été obsolète et remplacé pargetAvailableBlocksLong()
etstatFs.getBlockSizeLong()
, respectivement.Il y a quelques subtilités concernant les chemins qu'aucune des réponses actualisées adresse. Vous devez utiliser le droit chemin d'accès basé sur ce genre de statistiques qui vous intéressent. Basé sur une plongée dans les DeviceStorageMonitorService.java qui génère de l'espace disque faible avertissements dans la zone de notification et le sticky émissions pour ACTION_DEVICE_STORAGE_LOW, ici, sont quelques-uns des chemins que vous pouvez utiliser:
De vérification interne utilisation de l'espace disque le répertoire des données obtenues par l'intermédiaire de l'Environnement.getDataDirectory(). Cela vous permet d'obtenir l'espace libre sur la partition de données. La partition de données des hôtes tout l'espace de stockage interne pour toutes les applications sur l'appareil.
De check gratuit externe (carte sd) utilisation de l'espace disque externe répertoire de stockage obtenu par l'intermédiaire de l'Environnement.getExternalStorageDirectory(). Cela vous permet d'obtenir l'espace libre sur la carte sd.
Pour vérifier la mémoire disponible sur le système de la partition qui contient les fichiers du système d'exploitation, l'utilisation de l'Environnement.getRootDirectory(). Depuis votre application n'a pas accès à la partition système, cette stat n'est probablement pas très utile. DeviceStorageMonitorService utilise à des fins d'information et il pénètre dans un journal.
Pour vérifier les fichiers temporaires /cache de la mémoire, de l'utilisation de l'Environnement.getDownloadCacheDirectory(). DeviceStorageMonitorService tente de nettoyer certains des fichiers temporaires lorsque la mémoire est faible.
Un exemple de code pour arriver à l'interne (/data), externe (/sdcard) et OS (système/) de mémoire libre:
Basé sur @XXX, en réponse, j'ai créé un résumé extrait de code qui encapsule StatFs facile et simple d'utilisation.
Vous pouvez le trouver ici comme GitHub gist.
Transtypage de vos valeurs de type entier long avant de faire la multiplication. La Multiplication entre deux grands entiers peut déborder, et de donner un résultat négatif.
getAvailableBlocks()
etgetBlockSize()
ont été obsolète et remplacé pargetAvailableBlocksLong()
etstatFs.getBlockSizeLong()
.Avec un peu de google vous pourriez avait trouvé la
StatFs
de la classe qui est:Exemples sont fournis
Depuis la taille de bloc et getAvailableBlocks
sont obsolètes
ce code peut être utilisé
note au-dessus de réponse par user802467
nous pouvons utiliser
getAvailableBlocksLong
etgetBlockSizeLong
Emplacements De Mémoire:
utilisation
Vous pouvez utiliser cette