質問するログイン新規登録

質問編集履歴

4

ギャラリーのパスを取得する方法を知りたいと言うことを改めて伝えるため。

2021/10/13 09:53

投稿

m-mega
m-mega

スコア56

title CHANGED
File without changes
body CHANGED
@@ -46,7 +46,11 @@
46
46
 
47
47
  ### わからないこと
48
48
  動画の保存先としてギャラリーを指定する方法と、ギャラリーのパスを取得する方法がわかりません。
49
+
49
50
  調査すると、画像ファイルをギャラリーにコピーする方法などは見受けられましたが、動画ファイルをコピーしている例は見当たらず苦戦しています。
51
+
52
+ そもそも、ギャラリーにデータをコピーするといった周りくどい方法ではなく、ギャラリーのパスを指定する構文か何かで簡単にパスを指定できないものなのでしょうか。
53
+
50
54
  以下の参考サイトをもとに実装を試みているのですが、うまくいっていない状態です。
51
55
  また、エラーの内容ですが、lateinitに何を入れるべきなのかが分からず、このようなエラーが出てしまっています。
52
56
  ですが、以下の記載を無くしてしまうと、存在しないプロパティとしてエラーが発生してしまいます。

3

ギャラリーについての説明が不足しているように感じたため。

2021/10/13 09:53

投稿

m-mega
m-mega

スコア56

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,7 @@
1
1
  ### やりたいこと
2
2
  表題の通りですが、自作のカメラアプリで録画した動画ファイルを直接ギャラリーに保存できるようにしたいです。
3
3
  つまり、以下の「やったこと」で記載している「setOutputFile」のパスとして、ギャラリーのパスを直接指定したいです。
4
+ ここで言うギャラリーとは、端末既存のカメラアプリで撮影したデータが保存されるデフォルトのフォルダのことを指します。
4
5
  ### やったこと
5
6
  現在、以下のコードでパスを取得し、アプリ独自の外部ストレージを指定して動画を保存することはできています。
6
7
  ```kotlin

2

現状をよりよく理解してもらうため。

2021/10/13 09:48

投稿

m-mega
m-mega

スコア56

title CHANGED
File without changes
body CHANGED
@@ -23,8 +23,6 @@
23
23
 
24
24
  また、サイトを参考に、現在以下のように実装をしているのですが、エラーが発生してしまっております。
25
25
  ```kotlin
26
- lateinit var contentResolver: ContentResolver
27
- ...
28
26
  // ギャラリーにデータを保存する
29
27
  private fun saveFile(f: File) {
30
28
  Log.i("録画", "ギャラリー保存準備")
@@ -36,13 +34,13 @@
36
34
  put("_data", f.absolutePath)
37
35
  }
38
36
  Log.i("録画", "ギャラリー保存開始")
39
- contentResolver.insert(
37
+ ContentResolver.insert(
40
38
  MediaStore.Video.Media.EXTERNAL_CONTENT_URI, contentValues)
41
39
  }
42
40
  ```
43
41
  ###### エラー内容
44
42
  ```
45
- lateinit property contentResolver has not been initialized
43
+ Importを追記することを促されますが、提案通りにImportを選択しても何も改善されず、エラー(文字が赤くなっている)状態。
46
44
  ```
47
45
 
48
46
  ### わからないこと

1

やったことをより詳細に伝えるため。

2021/10/12 08:59

投稿

m-mega
m-mega

スコア56

title CHANGED
File without changes
body CHANGED
@@ -20,10 +20,40 @@
20
20
  ```kotlin
21
21
  setOutputFile(nextVideoAbsolutePath) // 出力ファイルパスを設定
22
22
  ```
23
+
24
+ また、サイトを参考に、現在以下のように実装をしているのですが、エラーが発生してしまっております。
25
+ ```kotlin
26
+ lateinit var contentResolver: ContentResolver
27
+ ...
28
+ // ギャラリーにデータを保存する
29
+ private fun saveFile(f: File) {
30
+ Log.i("録画", "ギャラリー保存準備")
31
+ val stream = FileOutputStream(f)
32
+ stream.close()
33
+ Log.i("録画", "ギャラリー保存設定")
34
+ val contentValues = ContentValues().apply {
35
+ put(MediaStore.Video.Media.MIME_TYPE, "video/mp4")
36
+ put("_data", f.absolutePath)
37
+ }
38
+ Log.i("録画", "ギャラリー保存開始")
39
+ contentResolver.insert(
40
+ MediaStore.Video.Media.EXTERNAL_CONTENT_URI, contentValues)
41
+ }
42
+ ```
43
+ ###### エラー内容
44
+ ```
45
+ lateinit property contentResolver has not been initialized
46
+ ```
47
+
23
48
  ### わからないこと
24
49
  動画の保存先としてギャラリーを指定する方法と、ギャラリーのパスを取得する方法がわかりません。
25
50
  調査すると、画像ファイルをギャラリーにコピーする方法などは見受けられましたが、動画ファイルをコピーしている例は見当たらず苦戦しています。
26
51
  以下の参考サイトをもとに実装を試みているのですが、うまくいっていない状態です。
52
+ また、エラーの内容ですが、lateinitに何を入れるべきなのかが分からず、このようなエラーが出てしまっています。
53
+ ですが、以下の記載を無くしてしまうと、存在しないプロパティとしてエラーが発生してしまいます。
54
+ ```kotlin
55
+ lateinit var contentResolver: ContentResolver
56
+ ```
27
57
 
28
58
  引き続き調査と検証を続けますが、解決法をご存知の方がいらっしゃいましたらご教授いただけますと幸いです。
29
59
  ### 参考にしたサイト