SDカードへとバックアップ
画像ダウンロードしてバックアップするときとかに使いましょう。
サンプルプログラムは以下。
// SDカードが使えるかを判定 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { // SDカードの中でFileインスタンスを作成 File file = new File(getContext().getExternalFilesDir(null), URLEncoder.encode(url)); // Fileが存在するかを判定 if (!file.exists()) { // 存在しない場合はURLからデータをダウンロード // ダウンロードがうまくいったらSDカードに吐き出す // ダウンロードは適当に実装してね! try{ FileOutputStream out = new FileOutputStream(file); bitmap.compress (Bitmap.CompressFormat.PNG, 100, out); out.close(); } catch (Exception ex){ } } else { // SDカードにあったらそのまま使う bitmap = BitmapFactory.decodeFile(file.getPath()); } } else { // SDカードが使えなかったら全てダウンロード // ダウンロードは適当に実装してね! }
重要なのはEnvironmentクラス。
こいつでSDカード関連を操作する。
// これでSDカードが使えるかを調べる Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); // これでSDカードのアプリ独自パスを取ってくる // /mnt/sdcard/Android/data/AplicationName ってパスになる Context.getExternalFilesDir(null)
この二つが重要。ってかこれだけ分かってれば使えるんじゃないかな。getExternalFilesDir()で取得できるパスはアプリ独自パスだからアンインストールするとフォルダごとAndroidが削除してくれる。だからサムネイル程度の小さなファイル程度出れば気にせずにがんがん保存してもいいんじゃないかと思う。でかいファイルの場合は時々消してあげる処理を入れてあげる必要があるんだろうね。
SDカードのご利用は計画的に!