OSDN Git Service

ライブラリを更新。
authorMRSa <mrsa@myad.jp>
Fri, 2 Oct 2020 14:11:56 +0000 (23:11 +0900)
committerMRSa <mrsa@myad.jp>
Fri, 2 Oct 2020 14:11:56 +0000 (23:11 +0900)
app/build.gradle
app/src/main/java/jp/osdn/gokigen/mangle/MainActivity.kt
app/src/main/java/jp/osdn/gokigen/mangle/StorageOperationWithPermission.kt
app/src/main/java/jp/osdn/gokigen/mangle/liveview/storeimage/StoreImage.kt
app/src/main/java/jp/osdn/gokigen/mangle/operation/CameraControl.kt
app/src/main/java/jp/osdn/gokigen/mangle/operation/FileControl.kt

index d714d4a..a9018ad 100644 (file)
@@ -31,7 +31,7 @@ android {
 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'
@@ -41,8 +41,8 @@ dependencies {
     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"
 }
index ab8f9de..b42255d 100644 (file)
@@ -87,8 +87,7 @@ class MainActivity : AppCompatActivity()
         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}")
         }
     }
 
index e4bafb2..e188195 100644 (file)
@@ -1,28 +1,73 @@
 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()
+        }
+    }
+
 }
index 6d0d233..f9cc2ba 100644 (file)
@@ -1,5 +1,6 @@
 package jp.osdn.gokigen.mangle.liveview.storeimage
 
+import android.content.ContentResolver
 import android.content.ContentValues
 import android.database.DatabaseUtils
 import android.graphics.Bitmap
@@ -8,9 +9,12 @@ import android.os.Build
 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
@@ -191,6 +195,11 @@ class StoreImage(private val context: FragmentActivity, private val imageProvide
             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)
@@ -222,6 +231,7 @@ class StoreImage(private val context: FragmentActivity, private val imageProvide
         }
     }
 
+
     private fun isExternalStorageWritable(): Boolean
     {
         return (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED)
index ec2028f..bb5c143 100644 (file)
@@ -86,7 +86,7 @@ class CameraControl(private val activity : FragmentActivity) : ICameraControl
             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()
index efb9bcb..717297b 100644 (file)
@@ -15,6 +15,7 @@ import androidx.fragment.app.FragmentActivity
 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
@@ -142,6 +143,8 @@ class FileControl(private val context: FragmentActivity, private val storeImage
             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
         {
@@ -154,6 +157,12 @@ class FileControl(private val context: FragmentActivity, private val storeImage
         {
             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)
@@ -200,6 +209,15 @@ class FileControl(private val context: FragmentActivity, private val storeImage
                         }
                     })
             }
+            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)
+                }
+            }
         }
     }