Skip to content

Commit d5d9506

Browse files
MahdiMahdi
Mahdi
authored and
Mahdi
committed
Add Camera
1 parent e29e226 commit d5d9506

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

FilePicker/src/main/java/com/mahdiasd/filepicker/FilePickerFragment.kt

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import android.content.res.Configuration
88
import android.database.Cursor
99
import android.graphics.Bitmap
1010
import android.net.Uri
11+
import android.os.Build
1112
import android.os.Bundle
1213
import android.os.Environment
1314
import android.provider.MediaStore
@@ -17,6 +18,7 @@ import android.view.ViewGroup
1718
import android.widget.Toast
1819
import androidx.activity.result.contract.ActivityResultContracts
1920
import androidx.core.content.ContextCompat
21+
import androidx.core.content.FileProvider
2022
import androidx.databinding.DataBindingUtil
2123
import androidx.recyclerview.widget.GridLayoutManager
2224
import androidx.recyclerview.widget.LinearLayoutManager
@@ -48,7 +50,7 @@ class FilePickerFragment : BottomSheetDialogFragment() {
4850

4951
private lateinit var config: FilePicker
5052
private var storageIsOpen = false
51-
53+
private var cameraImagePath = ""
5254
companion object {
5355
fun newInstance() = FilePickerFragment()
5456
}
@@ -118,11 +120,25 @@ class FilePickerFragment : BottomSheetDialogFragment() {
118120

119121
}
120122

123+
private fun getUriFromFile(file: File?): Uri? {
124+
if (file == null) return null
125+
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
126+
FileProvider.getUriForFile(requireContext(), "${requireContext().packageName}.provider", file)
127+
else
128+
Uri.fromFile(file)
129+
}
130+
131+
121132
fun openCamera() {
122133
if (!isGrant(Manifest.permission.CAMERA) || !isGrant(Manifest.permission.WRITE_EXTERNAL_STORAGE))
123134
checkPermission()
124135
else {
136+
cameraImagePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).path + File.separator + System.currentTimeMillis() + ".png"
137+
val file = File(cameraImagePath)
138+
file.createNewFile()
139+
val outputFileUri = getUriFromFile(file)
125140
val cameraIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
141+
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri)
126142
cameraLauncher.launch(cameraIntent)
127143
}
128144
}
@@ -186,11 +202,11 @@ class FilePickerFragment : BottomSheetDialogFragment() {
186202
if (result.resultCode == Activity.RESULT_OK) {
187203
initRecyclerView()
188204
result.data?.extras?.get("data")?.let {
189-
val imageBitmap = it as Bitmap?
190-
val file = saveBitmapToStorage(imageBitmap)
205+
// val imageBitmap = it as Bitmap?
206+
// val file = saveBitmapToStorage(imageBitmap)
191207
getImage()
192-
if (file != null && file.exists()) {
193-
val fileModel = FileModel(file.path)
208+
if (File(cameraImagePath).exists()) {
209+
val fileModel = FileModel(cameraImagePath)
194210
if (checkMaxSize(fileModel) && selectedFiles.size < config.maxSelection) {
195211
fileModel.selected = true
196212
selectedFiles.add(fileModel)
@@ -209,7 +225,7 @@ class FilePickerFragment : BottomSheetDialogFragment() {
209225
val file = File(imagesDir)
210226
return try {
211227
val fos = FileOutputStream(file)
212-
bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos)
228+
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos)
213229
fos.close()
214230
if (file.exists()) file
215231
else null

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ Add it in your root build.gradle at the end of repositories:
4646
4747
```bash
4848
dependencies {
49-
implementation 'com.github.mahdiasd:BottomDialogFilePicker:2.0.1'
49+
implementation 'com.github.mahdiasd:BottomDialogFilePicker:2.0.2'
5050
}
5151
```
5252
## Ho To Use
@@ -114,7 +114,7 @@ Add it in your root build.gradle at the end of repositories:
114114
115115
<string name="mahdiasd_file_picker_search">Search…</string>
116116
117-
<string name="mahdiasd_file_picker_permission_denied_toast">Permission needed!</string>
117+
<string name="mahdiasd_file_picker_permission_denied_toast">Permission needed!</string>
118118
119119
```
120120

0 commit comments

Comments
 (0)