dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
- implementation 'androidx.core:core-ktx:1.3.1'
+ implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
implementation 'androidx.preference:preference:1.1.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
- def camerax_version = "1.0.0-beta08"
+ def camerax_version = "1.0.0-beta10"
implementation "androidx.camera:camera-camera2:$camerax_version"
implementation "androidx.camera:camera-lifecycle:$camerax_version"
- implementation "androidx.camera:camera-view:1.0.0-alpha15"
+ implementation "androidx.camera:camera-view:1.0.0-alpha17"
}
super.onActivityResult(requestCode, resultCode, data)
if ((requestCode == REQUEST_CODE_MEDIA_EDIT)&&(resultCode == RESULT_OK))
{
- //
- Log.v(TAG, " WRITE PERMISSION GRANTED")
+ Log.v(TAG, " WRITE PERMISSION GRANTED ${data}")
}
}
package jp.osdn.gokigen.mangle
import android.content.ContentResolver
+import android.content.ContentValues
import android.net.Uri
import android.os.Build
+import android.os.Environment
import android.provider.MediaStore
import androidx.annotation.RequiresApi
-import androidx.appcompat.app.AppCompatActivity
+import androidx.fragment.app.FragmentActivity
+import java.io.File
/**
*
*
*/
@RequiresApi(api = Build.VERSION_CODES.R)
-class StorageOperationWithPermission(private val activity: AppCompatActivity)
+class StorageOperationWithPermission(private val activity: FragmentActivity)
{
fun requestAndroidRMediaPermission()
{
- val urisToModify: List<Uri> = listOf(
- MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
- MediaStore.Images.Media.EXTERNAL_CONTENT_URI
- )
- val contentResolver : ContentResolver = activity.contentResolver
- val editPendingIntent = MediaStore.createWriteRequest(contentResolver, urisToModify)
-
- activity.startIntentSenderForResult(editPendingIntent.intentSender, MainActivity.REQUEST_CODE_MEDIA_EDIT,null, 0, 0, 0)
+ try
+ {
+
+
+ }
+ catch (e : Exception)
+ {
+ e.printStackTrace()
+ }
+
+/*
+
+ try
+ {
+ val path = Environment.DIRECTORY_DCIM + File.separator + activity.getString(R.string.app_location)
+ val extStorageUri = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
+ val values = ContentValues()
+ values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg")
+ values.put(MediaStore.Images.Media.RELATIVE_PATH, path)
+ values.put(MediaStore.Images.Media.DATA, path + File.separator)
+ val imageUri = activity.contentResolver.insert(extStorageUri, values)
+ if (imageUri != null)
+ {
+ val urisToModify: List<Uri> = listOf(imageUri)
+ val contentResolver: ContentResolver = activity.contentResolver
+ val editPendingIntent = MediaStore.createWriteRequest(contentResolver, urisToModify)
+ activity.startIntentSenderForResult(editPendingIntent.intentSender, MainActivity.REQUEST_CODE_MEDIA_EDIT, null, 0, 0, 0)
+ }
+ }
+ catch (e : Exception)
+ {
+ e.printStackTrace()
+ }
+*/
}
+
+ fun requestAndroidRMediaPermission(requestUri : Uri)
+ {
+ try
+ {
+ val urisToModify: List<Uri> = listOf( requestUri )
+ val contentResolver: ContentResolver = activity.contentResolver
+ val editPendingIntent = MediaStore.createWriteRequest(contentResolver, urisToModify)
+ activity.startIntentSenderForResult(editPendingIntent.intentSender, MainActivity.REQUEST_CODE_MEDIA_EDIT,null, 0, 0, 0)
+ }
+ catch (e : Exception)
+ {
+ e.printStackTrace()
+ }
+ }
+
}
package jp.osdn.gokigen.mangle.liveview.storeimage
+import android.content.ContentResolver
import android.content.ContentValues
import android.database.DatabaseUtils
import android.graphics.Bitmap
import android.os.Environment
import android.provider.MediaStore
import android.util.Log
+import androidx.annotation.RequiresApi
import androidx.fragment.app.FragmentActivity
import androidx.preference.PreferenceManager
+import jp.osdn.gokigen.mangle.MainActivity
import jp.osdn.gokigen.mangle.R
+import jp.osdn.gokigen.mangle.StorageOperationWithPermission
import jp.osdn.gokigen.mangle.liveview.image.IImageProvider
import jp.osdn.gokigen.mangle.preference.IPreferencePropertyAccessor
import java.io.File
if (imageUri != null)
{
resolver.update(imageUri, values, null, null)
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
+ {
+ Log.v(TAG, " ===== StorageOperationWithPermission() : ${imageUri} =====")
+ //StorageOperationWithPermission(context).requestAndroidRMediaPermission(imageUri)
+ }
////////////////////////////////////////////////////////////////
if (dumpLog)
}
}
+
private fun isExternalStorageWritable(): Boolean
{
return (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED)
val preview = Preview.Builder()
.build()
.also {
- it.setSurfaceProvider(activity.findViewById<androidx.camera.view.PreviewView>(R.id.viewFinder).createSurfaceProvider())
+ it.setSurfaceProvider(activity.findViewById<androidx.camera.view.PreviewView>(R.id.viewFinder).surfaceProvider)
}
val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
val imageCapture = fileControl.prepare()
import androidx.preference.PreferenceManager
import com.google.android.material.snackbar.Snackbar
import jp.osdn.gokigen.mangle.R
+import jp.osdn.gokigen.mangle.StorageOperationWithPermission
import jp.osdn.gokigen.mangle.liveview.storeimage.IStoreImage
import jp.osdn.gokigen.mangle.preference.IPreferencePropertyAccessor
import java.io.File
values.put(MediaStore.Images.Media.IS_PENDING, true)
extStorageUri = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
//extStorageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
+
+ values.put(MediaStore.Images.Media.DATA, outputDir.absolutePath + File.separator + photoFile)
}
else
{
{
resolver.update(imageUri, values, null, null)
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R)
+ {
+ Log.v(TAG, " ===== StorageOperationWithPermission() : ${imageUri} =====")
+ //StorageOperationWithPermission(context).requestAndroidRMediaPermission(imageUri)
+ }
+
/////////////////////////////
val cursor = resolver.query(imageUri, null, null, null, null)
DatabaseUtils.dumpCursor(cursor)
}
})
}
+ else
+ {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
+ {
+ //values.clear()
+ values.put(MediaStore.Images.Media.IS_PENDING, false)
+ resolver.update(imageUri, values, null, null)
+ }
+ }
}
}