前提
Unityにて現在、Android端末にて、自作のカメラアプリを開発しています。
自アプリから、SDカードへファイル出力したいのです。
実現したいこと
カメラで撮影した画像を、SDカードに出力したいです。
その為にも、AndroidManifest.xmlファイルがどこにあるのか知りたいです。
発生している問題・エラーメッセージ
エラーは発生しておりません。
該当のソースコード
C#
1 2 3 4public void OnClick() 5 { 6 // カメラは、別の撮影ボタンにて、Pauseされています。 7 8 WebCamTexture webCam; 9 10 GameObject UnittButton; // ボタンが入る入る変数 11 ShootButton script; //ボタン内のScriptが入る変数 12 13 GameObject InfoText; // 14 GameObject InfoText2; // 15 Text IText; 16 Text IText2; 17 18 string PathNaiyo; 19 string FileName; 20 string FullPathName; 21 22 UnittButton = GameObject.Find("Canvas").transform.Find("Button (Legacy)").gameObject; 23 script = UnittButton.GetComponent<ShootButton>(); 24 webCam = script.webCam; 25 26 27 // Texture2Dを新規作成 28 Texture2D texture = new Texture2D(webCam.width, webCam.height, TextureFormat.ARGB32, false); 29 // カメラのピクセルデータを設定 30 texture.SetPixels(webCam.GetPixels()); 31 // TextureをApply 32 texture.Apply(); 33 34 // Encode 35 byte[] bin = texture.EncodeToJPG(); 36 // Encodeが終わったら削除 37 Object.Destroy(texture); 38 39 InfoText = GameObject.Find("Canvas/Text (Legacy)"); 40 IText = InfoText.GetComponent<Text>(); 41 InfoText2 = GameObject.Find("Canvas/Text (Legacy)2"); 42 IText2 = InfoText2.GetComponent<Text>(); 43 44 45 // ファイルを保存 46 FileName = GameObject.Find("InputField (Legacy)/Text (Legacy)").GetComponent<Text>().text; 47 if (FileName.Length <= 0) 48 { 49 IText.text = "ファイル名を入力してください"; 50 webCam.Play(); 51 52 return; 53 } 54 55 56#if UNITY_ANDROID 57 58 PathNaiyo = Application.persistentDataPath; 59 60#else 61 PathNaiyo = Application.dataPath; 62 63#endif 64 65 66 FullPathName = (PathNaiyo + "/" + FileName + ".jpg"); 67 IText.text = FullPathName; 68 69 70 try 71 { 72 73 File.WriteAllBytes(FullPathName, bin); 74 75 } 76 catch (System.IO.FileNotFoundException ex) 77 { 78 IText2.text = "指定されたファイルがありません"; 79 return; 80 } 81 catch (System.UnauthorizedAccessException ex) 82 { 83 IText2.text = "必要なアクセス権限がありません"; 84 return; 85 86 } 87 88 IText2.text = "ファイル出力成功です"; 89 webCam.Play(); 90 91 92 } 93 94
試したこと
出力直前に、出力先のフルパス名を表示させると、
/storage/emulated/0/Android/data/パッケージ名/files/ファイル名
というところに出力しているっぽいのですが、ここには出力されず、
内部ストレージに出力されていました。
そこで調べた結果、
unityのプレイヤー設定にて、
書き込み許可…External(SDCard)
と設定しました。
ですが、これでも出力されません…
そこで、もっと調べたら、
AndroidManifest.xmlにusers-permission
の記述が必要とありました…
が、AndroidManifest.xmlファイル自体が見つからないのです。
そこで、作業が止まっています…
補足情報(FW/ツールのバージョンなど)
Unityのバージョンは、2021.3.6f1
実験に利用したAndroid端末…SO-51B Androidバージョンは12です。
回答1件
あなたの回答
tips
プレビュー