KotlinでAndroidデバイスの空きストレージ容量を確認する方法【サンプルコード付き】
はじめに
本記事では、Kotlinを使用してAndroidデバイスの空きストレージ容量(利用可能なスペース)を確認する方法を解説します。StatFsクラスとFormatterクラスを組み合わせることで、端末の利用可能なメモリ容量を簡単に取得し、画面上に表示できます。
手順1:新規プロジェクトを作成する
まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」⇒「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成してください。
手順2:レイアウトファイル(activity_main.xml)を編集する
res/layout/activity_main.xmlに以下のコードを追加します。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:text="Tutorials Point"
android:textAlignment="center"
android:textColor="@android:color/holo_green_dark"
android:textSize="32sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textAlignment="center"
android:textSize="24sp"
android:textStyle="bold" />
</RelativeLayout>
手順3:MainActivity.ktを実装する
src/MainActivity.ktに以下のコードを追加します。
import android.os.Bundle
import android.os.Environment
import android.os.StatFs
import android.text.format.Formatter
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import java.io.File
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "KotlinApp"
val textView: TextView = findViewById(R.id.textView)
val stat = StatFs(Environment.getExternalStorageDirectory().path)
val bytesAvailable = stat.blockSize.toLong() * stat.blockCount.toLong()
val megAvailable = bytesAvailable / 1048576
val path: File = Environment.getDataDirectory()
val stat2 = StatFs(path.path)
val blockSize = stat2.blockSize.toLong()
val availableBlocks = stat2.availableBlocks.toLong()
val format: String = Formatter.formatFileSize(this, availableBlocks * blockSize)
textView.text = String.format("Available Memory: %s", format)
}
}
このコードでは、StatFsクラスを使ってストレージのブロックサイズとブロック数を取得し、総容量および利用可能な容量を計算しています。さらに、Formatter.formatFileSize()メソッドを利用することで、バイト数をMBやGBといった読みやすい単位へ自動変換し、TextViewに表示しています。
なお、Environment.getExternalStorageDirectory()はAPIレベル29以降で非推奨となっているため、新しい開発環境ではContext#getExternalFilesDir()など、用途に応じた代替手段の利用を検討してください。
手順4:AndroidManifest.xmlを編集する
androidManifest.xmlに以下のコードを追加します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.q11">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
アプリを実行する
それでは、アプリを実行してみましょう。ここでは、実際のAndroidスマートフォンがパソコンに接続されているものとします。Android Studioからアプリを実行するには、プロジェクト内のいずれかのアクティビティファイルを開き、ツールバーの実行アイコン
をクリックします。表示された候補から自分のモバイルデバイスを選択すると、実機の画面に結果が表示されます。

-
AndroidのConcurrentLinkedDequeで特定の要素が存在するか確認する方法
ConcurrentLinkedDequeとは?本題に入る前に、まずConcurrentLinkedDequeについて簡単におさらいしておきましょう。ConcurrentLinkedDequeは、連結ノード(リンクリスト)をベースとした境界なし(unbounded)の両端キュー(deque)です。内部的にスレッドセーフに設計されているため、複数のスレッドから同時にアクセスしても安全に要素を扱えるのが大きな特徴です。この記事では、AndroidアプリにおいてConcurrentLinkedDeque内に特定の要素が存在するかどうかを確認する方法を、実際のコード例とともに解説します。実装手順ステッ
-
KotlinでAndroidアプリのGridViewスクロールを無効化する方法を徹底解説
この記事では、Kotlinを使ってAndroidアプリのGridView(グリッドビュー)のスクロール機能を無効にする方法を、サンプルコードとともにわかりやすく解説します。GridViewは画像ギャラリーやメニュー表示などによく使われるUIコンポーネントですが、状況によってはスクロールさせたくないケースもあります。そのような場合に役立つテクニックです。実装の手順ステップ1:新規プロジェクトを作成するまず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成してください。ステップ2