Skip to content

Commit 6c04557

Browse files
committed
fix #47, handle Image Capture intent
1 parent e805baf commit 6c04557

3 files changed

Lines changed: 48 additions & 13 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@
4646
<category android:name="android.intent.category.DEFAULT"/>
4747
<data android:mimeType="image/*"/>
4848
</intent-filter>
49+
50+
<intent-filter>
51+
<action android:name="android.media.action.IMAGE_CAPTURE"/>
52+
<category android:name="android.intent.category.DEFAULT"/>
53+
</intent-filter>
4954
</activity>
5055

5156
<activity

app/src/main/kotlin/com/simplemobiletools/draw/activities/MainActivity.kt

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.simplemobiletools.draw.activities
22

3+
import android.app.Activity
34
import android.content.Intent
45
import android.graphics.Bitmap
56
import android.graphics.PorterDuff
67
import android.graphics.drawable.ColorDrawable
78
import android.net.Uri
89
import android.os.Bundle
10+
import android.provider.MediaStore
911
import android.support.v4.content.FileProvider
12+
import android.util.Log
1013
import android.view.Menu
1114
import android.view.MenuItem
1215
import android.webkit.MimeTypeMap
@@ -40,6 +43,7 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
4043
private var strokeWidth = 0f
4144
private var suggestedFileExtension = PNG
4245
private var isEraserOn = false
46+
private var isImageCaptureIntent = false
4347

4448
override fun onCreate(savedInstanceState: Bundle?) {
4549
super.onCreate(savedInstanceState)
@@ -79,11 +83,18 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
7983

8084
override fun onCreateOptionsMenu(menu: Menu): Boolean {
8185
menuInflater.inflate(R.menu.menu, menu)
86+
menu.apply {
87+
findItem(R.id.menu_confirm).isVisible = isImageCaptureIntent
88+
findItem(R.id.menu_save).isVisible = !isImageCaptureIntent
89+
findItem(R.id.menu_share).isVisible = !isImageCaptureIntent
90+
}
91+
8292
return true
8393
}
8494

8595
override fun onOptionsItemSelected(item: MenuItem): Boolean {
8696
when (item.itemId) {
97+
R.id.menu_confirm -> confirmImage()
8798
R.id.menu_save -> trySaveImage()
8899
R.id.menu_share -> shareImage()
89100
R.id.clear -> clearCanvas()
@@ -105,17 +116,14 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
105116
}
106117

107118
private fun tryOpenFile() {
108-
handlePermission(PERMISSION_WRITE_STORAGE) {
109-
if (it) {
110-
openFile()
111-
} else {
112-
toast(R.string.no_storage_permissions)
113-
}
119+
getStoragePermission {
120+
openFile()
114121
}
115122
}
116123

117124
private fun openFile() {
118-
FilePickerDialog(this, curPath) {
125+
val path = if (isImageCaptureIntent) "" else curPath
126+
FilePickerDialog(this, path) {
119127
openPath(it)
120128
}
121129
}
@@ -141,6 +149,16 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
141149
openPath(path)
142150
}
143151
}
152+
153+
if (intent?.action == MediaStore.ACTION_IMAGE_CAPTURE) {
154+
val output = intent.extras?.get(MediaStore.EXTRA_OUTPUT)
155+
if (output != null && output is Uri) {
156+
isImageCaptureIntent = true
157+
Log.e("DEBUG", "output $output, path ${output.path}")
158+
curPath = output.path
159+
invalidateOptionsMenu()
160+
}
161+
}
144162
}
145163

146164
private fun getStoragePermission(callback: () -> Unit) {
@@ -217,13 +235,20 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener {
217235
}
218236
}
219237

220-
private fun trySaveImage() {
221-
handlePermission(PERMISSION_WRITE_STORAGE) {
222-
if (it) {
223-
saveImage()
224-
} else {
225-
toast(R.string.no_storage_permissions)
238+
private fun confirmImage() {
239+
val file = File(curPath)
240+
getFileOutputStream(file) {
241+
it.use {
242+
my_canvas.getBitmap().compress(file.getCompressionFormat(), 70, it)
226243
}
244+
setResult(Activity.RESULT_OK)
245+
finish()
246+
}
247+
}
248+
249+
private fun trySaveImage() {
250+
getStoragePermission {
251+
saveImage()
227252
}
228253
}
229254

app/src/main/res/menu/menu.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<menu xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:app="http://schemas.android.com/apk/res-auto">
4+
<item
5+
android:id="@+id/menu_confirm"
6+
android:icon="@drawable/ic_check"
7+
android:title="@string/save"
8+
app:showAsAction="ifRoom"/>
49
<item
510
android:id="@+id/menu_save"
611
android:icon="@drawable/ic_save"

0 commit comments

Comments
 (0)