diff options
| author | 2019-07-24 15:23:54 -0400 | |
|---|---|---|
| committer | 2019-07-24 15:29:45 -0400 | |
| commit | eb48d0a9af344958cc1b255b4d037a2fd9268de1 (patch) | |
| tree | 38aeada1a29583ec780af6738df594ad20cedc4e | |
| parent | 9edb103d54edd8a2d63c3ac44f510894a0baa9bb (diff) | |
Update file saving to work with Q changes
Fixes: 128893026
Fixes: 133251198
Test: manual
Change-Id: I9c04fcc343bd61e08a534cd0d16a1a68df4b744e
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java | 45 |
1 files changed, 31 insertions, 14 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java b/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java index a9896f51369c..822a6669bd5c 100644 --- a/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java +++ b/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java @@ -22,6 +22,8 @@ import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; +import android.content.ContentResolver; +import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; @@ -48,6 +50,7 @@ import com.android.systemui.R; import java.io.File; import java.io.IOException; +import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Path; import java.text.SimpleDateFormat; @@ -158,19 +161,34 @@ public class RecordingService extends Service { case ACTION_STOP: stopRecording(); - // Move temp file to user directory - File recordDir = new File( - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES), - RECORD_DIR); - recordDir.mkdirs(); - String fileName = new SimpleDateFormat("'screen-'yyyyMMdd-HHmmss'.mp4'") .format(new Date()); - Path path = new File(recordDir, fileName).toPath(); + ContentValues values = new ContentValues(); + values.put(MediaStore.Video.Media.DISPLAY_NAME, fileName); + values.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4"); + values.put(MediaStore.Video.Media.DATE_ADDED, System.currentTimeMillis()); + values.put(MediaStore.Video.Media.DATE_TAKEN, System.currentTimeMillis()); + + ContentResolver resolver = getContentResolver(); + Uri collectionUri = MediaStore.Video.Media.getContentUri( + MediaStore.VOLUME_EXTERNAL_PRIMARY); + Uri itemUri = resolver.insert(collectionUri, values); + + File recordDir = new File(getExternalFilesDir(Environment.DIRECTORY_MOVIES), + RECORD_DIR); + recordDir.mkdirs(); + Path path = new File(recordDir, fileName).toPath(); try { + // Move file out of temp directory Files.move(mTempFile.toPath(), path); - Notification notification = createSaveNotification(path); + + // Add to the mediastore + OutputStream os = resolver.openOutputStream(itemUri, "w"); + Files.copy(path, os); + os.close(); + + Notification notification = createSaveNotification(itemUri, path); notificationManager.notify(NOTIFICATION_ID, notification); } catch (IOException e) { e.printStackTrace(); @@ -352,13 +370,12 @@ public class RecordingService extends Service { notificationManager.notify(NOTIFICATION_ID, mRecordingNotificationBuilder.build()); } - private Notification createSaveNotification(Path path) { - Uri saveUri = FileProvider.getUriForFile(this, FILE_PROVIDER, path.toFile()); - Log.d(TAG, "Screen recording saved to " + path.toString()); + private Notification createSaveNotification(Uri uri, Path path) { + Log.d(TAG, "Screen recording saved to " + uri.toString() + ", " + path.toString()); Intent viewIntent = new Intent(Intent.ACTION_VIEW) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION) - .setDataAndType(saveUri, "video/mp4"); + .setDataAndType(uri, "video/mp4"); Notification.Action shareAction = new Notification.Action.Builder( Icon.createWithResource(this, R.drawable.ic_android), @@ -366,7 +383,7 @@ public class RecordingService extends Service { PendingIntent.getService( this, REQUEST_CODE, - getShareIntent(this, path.toString()), + getShareIntent(this, uri.toString()), PendingIntent.FLAG_UPDATE_CURRENT)) .build(); @@ -376,7 +393,7 @@ public class RecordingService extends Service { PendingIntent.getService( this, REQUEST_CODE, - getDeleteIntent(this, path.toString()), + getDeleteIntent(this, uri.toString()), PendingIntent.FLAG_UPDATE_CURRENT)) .build(); |