11
11
import android .content .Intent ;
12
12
import android .content .pm .PackageManager ;
13
13
import android .graphics .Bitmap ;
14
+ import android .graphics .Matrix ;
14
15
import android .net .Uri ;
15
16
import android .os .Environment ;
16
- import android .os .StrictMode ;
17
17
import android .provider .MediaStore ;
18
18
import android .support .annotation .NonNull ;
19
19
import android .support .design .widget .Snackbar ;
20
20
import android .support .v4 .app .ActivityCompat ;
21
+ import android .support .v4 .content .FileProvider ;
21
22
import android .support .v7 .app .AppCompatActivity ;
22
23
import android .os .Bundle ;
23
24
import android .util .Base64 ;
@@ -92,7 +93,7 @@ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request
92
93
93
94
if (query != null ) {
94
95
String queryCommand = query .substring (0 , query .indexOf ('&' ));
95
- callback = query .substring (query .indexOf ('& ' ) + 1 );
96
+ callback = query .substring (query .indexOf ('= ' ) + 1 );
96
97
97
98
if (queryCommand .equals ("scan" )) {
98
99
scanBarcode ();
@@ -132,15 +133,13 @@ public void takePhoto() {
132
133
}
133
134
134
135
private void captureImage () {
135
- StrictMode .VmPolicy .Builder builder = new StrictMode .VmPolicy .Builder ();
136
- StrictMode .setVmPolicy (builder .build ());
137
-
138
136
Intent cameraIntent = new Intent (android .provider .MediaStore .ACTION_IMAGE_CAPTURE );
139
137
File photo ;
140
138
try
141
139
{
142
140
// place where to store camera taken picture
143
- photo = File .createTempFile ("photo" , ".jpg" , Environment .getExternalStorageDirectory ());
141
+ File photoDir = getExternalFilesDir (Environment .DIRECTORY_PICTURES );
142
+ photo = File .createTempFile ("photo" , ".jpg" , photoDir );
144
143
photo .delete ();
145
144
}
146
145
catch (Exception e )
@@ -149,7 +148,10 @@ private void captureImage() {
149
148
Toast .makeText (this , "Error creating temporary file to store photo" , Toast .LENGTH_LONG ).show ();
150
149
return ;
151
150
}
152
- mImageUri = Uri .fromFile (photo );
151
+
152
+ mImageUri = FileProvider .getUriForFile (this ,
153
+ "org.qccoders.qcvoc.fileprovider" ,
154
+ photo );
153
155
cameraIntent .putExtra (MediaStore .EXTRA_OUTPUT , mImageUri );
154
156
155
157
startActivityForResult (cameraIntent , PHOTO_REQUEST );
@@ -192,7 +194,12 @@ private Bitmap transformPhoto(Bitmap bitmap) {
192
194
);
193
195
}
194
196
// Scale down
195
- return Bitmap .createScaledBitmap (bitmap , 300 , 300 , false );
197
+ bitmap = Bitmap .createScaledBitmap (bitmap , 300 , 300 , false );
198
+ // Rotate
199
+ Matrix matrix = new Matrix ();
200
+ matrix .postRotate (90 );
201
+ return Bitmap .createBitmap (bitmap , 0 , 0 , bitmap .getWidth (), bitmap .getHeight (), matrix , true );
202
+
196
203
}
197
204
198
205
@ Override
@@ -232,7 +239,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
232
239
233
240
Log .d ("MainActivity" , "Photo of size " + photo .length () + " bytes taken" );
234
241
webview .evaluateJavascript (
235
- callback + "(" + photo + ")" ,
242
+ callback + "(' " + photo + "' )" ,
236
243
null
237
244
);
238
245
}
0 commit comments