FC2ブログ
    02 «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.» 04

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【Unity】パスを取得後の保存とかギャラリー反映とか…先週の続き 

    こんにちは。
    大坂です。

    なんとなく先週の記事の続きです。
    はい!ネタがなかったからです!orz

    サンプルです。
    「StreamingAssets」フォルダの中のファイルを書き出してます。
    #if UNITY_ANDROID
    string path;
    // 保存パスを取得
    using(AndroidJavaClass environment = new AndroidJavaClass("android.os.Environment"))
    using(AndroidJavaObject exDir =
    environment.CallStatic("getExternalStoragePublicDirectory",
    environment.GetStatic("DIRECTORY_DCIM"))) {
    path = exDir.Call("toString");
    }

    // StreamingAssetsのファイルを取得
    string tmpPath = "jar:file://" + Application.dataPath + "!/assets/test.jpg";
    WWW www = new WWW(tmpPath);

    while(!www.isDone) {
    yield return null;
    }

    string fileName = path + "test.jpg";
    // 書き込み
    System.IO.File.WriteAllBytes(file, www.bytes);

    // ファイル保存のために1フレーム待つ
    yield return new WaitForEndOfFrame();

    // メディアスキャン
    using(AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
    using(AndroidJavaObject activity = unityPlayer.GetStatic("currentActivity"))
    using(AndroidJavaObject context = activity.Call("getApplicationContext"))
    using(AndroidJavaClass mediaScannerConnection = new AndroidJavaClass("android.media.MediaScannerConnection")) {
    mediaScannerConnection.CallStatic("scanFile", context, new string[] { fileName }, new string[] { "image/png" }, null);
    }
    #endif

    サーバにファイル置いて取りたい時なんかはWWWで指定しているのをURLにすればとれますし、
    画面キャプチャが良ければ、ファイルの取得と書き込み部分を消して
    「Application.CaptureScreenshot("../../../../DCIM/" + test.jpg);」とかってすればできますね。

    何かに使えれば幸いです。

    では、また来週ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/260-23c546fc
    この記事にトラックバックする(FC2ブログユーザー)