質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

2571閲覧

Androidで内部ストレージの最大容量を取得したい

kazy

総合スコア1

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2020/07/08 07:05

前提・実現したいこと

Androidアプリケーションをkotlinで開発しています。
内部ストレージの最大容量を取得したいのですが、以下の通り非推奨の警告が表記されます。
代替手段はないでしょうか?

発生している問題・エラーメッセージ

getExternalStorageDirectoryの箇所が非推奨と表記されます。

該当のソースコード

kotlin

1var freeByteSize = Environment.getExternalStorageDirectory().totalSpace 2

試したこと

println(freeByteSize)でバイト数が表示されています

実施環境

APIレベル30を用いており、Android Studioから起動した仮想デバイス上で確認しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2020/07/10 02:00

現在の(非推奨の)コードだと8GB(8192MB)と表示されるのでしょうか?
kazy

2020/07/10 04:09 編集

ご連絡ありがとうございます。 現在のコード(非推奨)で実施した場合も、算出される容量に変化はありません。 6240665600バイト≒6.24ギガバイトです。 代替手段の質問から少し本題がずれてきており、恐縮ですがよろしくお願いします。
guest

回答1

0

ベストアンサー

Context#getExternalFilesDir()は利用可能なので、

kotlin

1 var freeByteSize = getExternalFilesDir(null)?.totalSpace

で代替できないでしょうか。


参考までにですが、AVD Managerで仮想デバイスを作成するとき、或いは仮想デバイスリストの右端にある鉛筆ボタンのクリックで表示されるデバイスの設定画面で、Show Advanced Settingsをクリックすると出てくる拡張設定項目の中に、内部ストレージ他のサイズを設定する項目があります(下図参照)。totalSpaceによって得られる値は、これに近い値になるはずです。

AVD Manager

投稿2020/07/09 13:06

編集2020/07/12 14:48
keicha_hrs

総合スコア6768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazy

2020/07/10 00:26

ご提案ありがとうございます。 ご提案頂いた構文で実行したところ、6240665600と表示されました。 約6.24ギガバイトの値です。 しかし、Android Studioで起動した仮想デバイスの内部共有ストレージの値は8.00GBとなっています。 設定->ストレージ->内部共有ストレージ を参照しました。 差分が生じているのですが、何か問題があるのでしょうか?
keicha_hrs

2020/07/10 14:06 編集

仮想デバイスで、設定->ストレージ->内部共有ストレージをどういう計算で表示しているのかはよくわかりません。API 30、Google Play System Image (x86) の仮想デバイスのシェルをadb shellコマンドで起動して、dfコマンドでディスク容量情報を見ると、 Filesystem 1K-blocks Used Available Use% Mounted on (中略) /dev/fuse 6094400 368616 5583572 7% /storage/emulated と表示されます。内部ストレージとして扱われているのは/storage/emulatedにマウントされたデバイスで、これは1K-blockが6094400あることになります。6094400*1024=6240665600なので、この値をtotalSpaceでは表示しているものと思います。
kazy

2020/07/13 00:52

ご回答ありがとうございます。 今更ながら気づいたのですが、内部共有ストレージの値は8000MBではなく6144MBで設定しておりました。 従って、ご提案頂いた確認方法を取ることにより、近い値を取ることができました。色々な確認方法を教えていただき知見が深まりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問