diff --git a/app/build.gradle b/app/build.gradle
index ad3297d..71ec5b9 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -7,8 +7,8 @@ android {
applicationId "com.github.sumimakito.awesomeqrsample"
minSdkVersion 19
targetSdkVersion 25
- versionCode 5
- versionName "1.4"
+ versionCode 6
+ versionName "1.5"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
diff --git a/app/src/main/java/com/github/sumimakito/awesomeqrsample/MainActivity.java b/app/src/main/java/com/github/sumimakito/awesomeqrsample/MainActivity.java
index a805898..d270663 100644
--- a/app/src/main/java/com/github/sumimakito/awesomeqrsample/MainActivity.java
+++ b/app/src/main/java/com/github/sumimakito/awesomeqrsample/MainActivity.java
@@ -9,9 +9,11 @@
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.Uri;
+import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
+import android.util.Base64;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
@@ -24,6 +26,12 @@
import com.github.sumimakito.awesomeqr.AwesomeQRCode;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
public class MainActivity extends AppCompatActivity {
private final int SELECT_FILE_REQUEST_CODE = 822;
@@ -43,6 +51,8 @@ public class MainActivity extends AppCompatActivity {
private CheckBox ckbBinarize;
private CheckBox ckbRoundedDataDots;
private EditText etBinarizeThreshold;
+ private Bitmap qrBitmap;
+ private Button btOpen;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -62,6 +72,7 @@ protected void onCreate(Bundle savedInstanceState) {
btSelectBG = (Button) findViewById(R.id.backgroundImage);
btRemoveBackgroundImage = (Button) findViewById(R.id.removeBackgroundImage);
btGenerate = (Button) findViewById(R.id.generate);
+ btOpen = (Button) findViewById(R.id.open);
ckbWhiteMargin = (CheckBox) findViewById(R.id.whiteMargin);
ckbAutoColor = (CheckBox) findViewById(R.id.autoColor);
ckbBinarize = (CheckBox) findViewById(R.id.binarize);
@@ -93,6 +104,13 @@ public void onClick(View v) {
}
});
+ btOpen.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (qrBitmap != null) saveBitmap(qrBitmap);
+ }
+ });
+
btRemoveBackgroundImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -196,13 +214,13 @@ private void generate(final String contents, final int size, final int margin, f
@Override
public void run() {
try {
- final Bitmap b = AwesomeQRCode.create(contents, size, margin, dotScale, colorDark,
+ qrBitmap = AwesomeQRCode.create(contents, size, margin, dotScale, colorDark,
colorLight, background, whiteMargin, autoColor, binarize, binarizeThreshold,
roundedDD);
runOnUiThread(new Runnable() {
@Override
public void run() {
- qrCodeImageView.setImageBitmap(b);
+ qrCodeImageView.setImageBitmap(qrBitmap);
scrollView.post(new Runnable() {
@Override
public void run() {
@@ -226,4 +244,31 @@ public void run() {
}
}).start();
}
+
+ private void saveBitmap(Bitmap bitmap) {
+ FileOutputStream fos = null;
+ try {
+ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+ bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
+ byte[] byteArray = byteArrayOutputStream.toByteArray();
+ File outputFile = new File(getPublicContainer(), System.currentTimeMillis() + ".png");
+ fos = new FileOutputStream(outputFile);
+ fos.write(byteArray);
+ fos.close();
+ Toast.makeText(this, "Image saved to " + outputFile.getAbsolutePath(), Toast.LENGTH_LONG).show();
+ } catch (Exception e) {
+ e.printStackTrace();
+ Toast.makeText(this, "Failed to save the image.", Toast.LENGTH_LONG).show();
+ }
+ }
+
+ public static File getPublicContainer() {
+ File musicContainer = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
+ File aqr = new File(musicContainer, "AwesomeQR");
+ if (aqr.exists() && !aqr.isDirectory()) {
+ aqr.delete();
+ }
+ aqr.mkdirs();
+ return aqr;
+ }
}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 468b0eb..049fcab 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -251,6 +251,15 @@
android:layout_centerHorizontal="true"
android:text="Generate" />
+
+
+