質問編集履歴
4
ギャラリーのパスを取得する方法を知りたいと言うことを改めて伝えるため。
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
ギャラリーについての説明が不足しているように感じたため。
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
現状をよりよく理解してもらうため。
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
|
-
|
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
|
-
|
85
|
+
Importを追記することを促されますが、提案通りにImportを選択しても何も改善されず、エラー(文字が赤くなっている)状態。
|
90
86
|
|
91
87
|
```
|
92
88
|
|
1
やったことをより詳細に伝えるため。
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
|
|