質問編集履歴

4

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

2021/10/13 09:53

投稿

m-mega
m-mega

スコア56

test CHANGED
File without changes
test CHANGED
@@ -94,7 +94,15 @@
94
94
 
95
95
  動画の保存先としてギャラリーを指定する方法と、ギャラリーのパスを取得する方法がわかりません。
96
96
 
97
+
98
+
97
99
  調査すると、画像ファイルをギャラリーにコピーする方法などは見受けられましたが、動画ファイルをコピーしている例は見当たらず苦戦しています。
100
+
101
+
102
+
103
+ そもそも、ギャラリーにデータをコピーするといった周りくどい方法ではなく、ギャラリーのパスを指定する構文か何かで簡単にパスを指定できないものなのでしょうか。
104
+
105
+
98
106
 
99
107
  以下の参考サイトをもとに実装を試みているのですが、うまくいっていない状態です。
100
108
 

3

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

2021/10/13 09:53

投稿

m-mega
m-mega

スコア56

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

2

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

2021/10/13 09:48

投稿

m-mega
m-mega

スコア56

test CHANGED
File without changes
test CHANGED
@@ -48,10 +48,6 @@
48
48
 
49
49
  ```kotlin
50
50
 
51
- lateinit var contentResolver: ContentResolver
52
-
53
- ...
54
-
55
51
  // ギャラリーにデータを保存する
56
52
 
57
53
  private fun saveFile(f: File) {
@@ -74,7 +70,7 @@
74
70
 
75
71
  Log.i("録画", "ギャラリー保存開始")
76
72
 
77
- contentResolver.insert(
73
+ ContentResolver.insert(
78
74
 
79
75
  MediaStore.Video.Media.EXTERNAL_CONTENT_URI, contentValues)
80
76
 
@@ -86,7 +82,7 @@
86
82
 
87
83
  ```
88
84
 
89
- lateinit property contentResolver has not been initialized
85
+ Importを追記することを促されますが、提案通りにImportを選択しても何も改善されず、エラー(文字が赤くなっている)状態。
90
86
 
91
87
  ```
92
88
 

1

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

2021/10/12 08:59

投稿

m-mega
m-mega

スコア56

test CHANGED
File without changes
test CHANGED
@@ -42,6 +42,56 @@
42
42
 
43
43
  ```
44
44
 
45
+
46
+
47
+ また、サイトを参考に、現在以下のように実装をしているのですが、エラーが発生してしまっております。
48
+
49
+ ```kotlin
50
+
51
+ lateinit var contentResolver: ContentResolver
52
+
53
+ ...
54
+
55
+ // ギャラリーにデータを保存する
56
+
57
+ private fun saveFile(f: File) {
58
+
59
+ Log.i("録画", "ギャラリー保存準備")
60
+
61
+ val stream = FileOutputStream(f)
62
+
63
+ stream.close()
64
+
65
+ Log.i("録画", "ギャラリー保存設定")
66
+
67
+ val contentValues = ContentValues().apply {
68
+
69
+ put(MediaStore.Video.Media.MIME_TYPE, "video/mp4")
70
+
71
+ put("_data", f.absolutePath)
72
+
73
+ }
74
+
75
+ Log.i("録画", "ギャラリー保存開始")
76
+
77
+ contentResolver.insert(
78
+
79
+ MediaStore.Video.Media.EXTERNAL_CONTENT_URI, contentValues)
80
+
81
+ }
82
+
83
+ ```
84
+
85
+ ###### エラー内容
86
+
87
+ ```
88
+
89
+ lateinit property contentResolver has not been initialized
90
+
91
+ ```
92
+
93
+
94
+
45
95
  ### わからないこと
46
96
 
47
97
  動画の保存先としてギャラリーを指定する方法と、ギャラリーのパスを取得する方法がわかりません。
@@ -49,6 +99,16 @@
49
99
  調査すると、画像ファイルをギャラリーにコピーする方法などは見受けられましたが、動画ファイルをコピーしている例は見当たらず苦戦しています。
50
100
 
51
101
  以下の参考サイトをもとに実装を試みているのですが、うまくいっていない状態です。
102
+
103
+ また、エラーの内容ですが、lateinitに何を入れるべきなのかが分からず、このようなエラーが出てしまっています。
104
+
105
+ ですが、以下の記載を無くしてしまうと、存在しないプロパティとしてエラーが発生してしまいます。
106
+
107
+ ```kotlin
108
+
109
+ lateinit var contentResolver: ContentResolver
110
+
111
+ ```
52
112
 
53
113
 
54
114