Java File
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.android.theme.activity.DialogActivity;
import com.kbeanie.imagechooser.api.ChooserType;
import com.kbeanie.imagechooser.api.ChosenImage;
import com.kbeanie.imagechooser.api.ChosenImages;
import com.kbeanie.imagechooser.api.ImageChooserListener;
import com.kbeanie.imagechooser.api.ImageChooserManager;
import com.kbeanie.imagechooser.api.IntentUtils;
import java.io.File;
import fastxpo.gurubahi.crm.Constant;
import fastxpo.gurubahi.crm.R;
public class ImageChooserActivity extends DialogActivity implements ImageChooserListener {
private final static String TAG = "ImageChooserActivity";
private ImageChooserManager imageChooserManager;
private String filePath;
private int chooserType;
private boolean isActivityResultOver = false;
private String originalFilePath;
private String thumbnailFilePath;
private String thumbnailSmallFilePath;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setLayout(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
setContentView(R.layout.activity_image_chooser2);
Button buttonTakePicture = (Button) findViewById(R.id.buttonTakePicture);
Button buttonChooseImage = (Button) findViewById(R.id.buttonChooseImage);
buttonTakePicture.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
takePicture();
}
});
buttonChooseImage.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
chooseImage();
}
});
checkForSharedImage(getIntent());
}
private void chooseImage() {
chooserType = ChooserType.REQUEST_PICK_PICTURE;
imageChooserManager = new ImageChooserManager(this,
ChooserType.REQUEST_PICK_PICTURE, true);
Bundle bundle = new Bundle();
bundle.putBoolean(Intent.EXTRA_ALLOW_MULTIPLE, true);
imageChooserManager.setExtras(bundle);
imageChooserManager.setImageChooserListener(this);
imageChooserManager.clearOldFiles();
try {
filePath = imageChooserManager.choose();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
private void takePicture() {
chooserType = ChooserType.REQUEST_CAPTURE_PICTURE;
imageChooserManager = new ImageChooserManager(this,
ChooserType.REQUEST_CAPTURE_PICTURE, true);
imageChooserManager.setImageChooserListener(this);
try {
filePath = imageChooserManager.choose();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i(TAG, "OnActivityResult");
Log.i(TAG, "File Path : " + filePath);
Log.i(TAG, "Chooser Type: " + chooserType);
if (resultCode == RESULT_OK && (requestCode == ChooserType.REQUEST_PICK_PICTURE || requestCode == ChooserType.REQUEST_CAPTURE_PICTURE)) {
if (imageChooserManager == null) {
reinitializeImageChooser();
}
imageChooserManager.submit(requestCode, data);
} else {
}
}
@Override public void onImageChosen(final ChosenImage image) {
runOnUiThread(new Runnable() {
@Override public void run() {
Log.i(TAG, "Chosen Image: O - " + image.getFilePathOriginal());
Log.i(TAG, "Chosen Image: T - " + image.getFileThumbnail());
Log.i(TAG, "Chosen Image: Ts - " + image.getFileThumbnailSmall());
isActivityResultOver = true;
originalFilePath = image.getFilePathOriginal();
thumbnailFilePath = image.getFileThumbnail();
thumbnailSmallFilePath = image.getFileThumbnailSmall();
if (image != null) {
Log.i(TAG, "Chosen Image: Is not null");
loadImage(image.getFileThumbnail());
loadImage(image.getFileThumbnailSmall());
} else {
Log.i(TAG, "Chosen Image: Is null");
}
}
});
}
@Override public void onImagesChosen(final ChosenImages images) {
runOnUiThread(new Runnable() {
@Override public void run() {
Log.i(TAG, "On Images Chosen: " + images.size());
onImageChosen(images.getImage(0));
}
});
}
private void loadImage(final String path) {
File image = new File(path);
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeFile(image.getAbsolutePath(), bmOptions);
Constant.bitmap = Bitmap.createScaledBitmap(bitmap, 150, 150, true);
setResult(RESULT_OK);
finish();
}
@Override public void onError(final String reason) {
runOnUiThread(new Runnable() {
@Override public void run() {
Log.i(TAG, "OnError: " + reason);
Toast.makeText(ImageChooserActivity.this, reason,
Toast.LENGTH_LONG).show();
}
});
}
private void reinitializeImageChooser() {
imageChooserManager = new ImageChooserManager(this, chooserType, true);
Bundle bundle = new Bundle();
bundle.putBoolean(Intent.EXTRA_ALLOW_MULTIPLE, true);
imageChooserManager.setExtras(bundle);
imageChooserManager.setImageChooserListener(this);
imageChooserManager.reinitialize(filePath);
}
@Override protected void onSaveInstanceState(Bundle outState) {
Log.i(TAG, "Saving Stuff");
Log.i(TAG, "File Path: " + filePath);
Log.i(TAG, "Chooser Type: " + chooserType);
outState.putBoolean("activity_result_over", isActivityResultOver);
outState.putInt("chooser_type", chooserType);
outState.putString("media_path", filePath);
outState.putString("orig", originalFilePath);
outState.putString("thumb", thumbnailFilePath);
outState.putString("thumbs", thumbnailSmallFilePath);
super.onSaveInstanceState(outState);
}
@Override protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
if (savedInstanceState != null) {
if (savedInstanceState.containsKey("chooser_type")) {
chooserType = savedInstanceState.getInt("chooser_type");
}
if (savedInstanceState.containsKey("media_path")) {
filePath = savedInstanceState.getString("media_path");
}
if (savedInstanceState.containsKey("activity_result_over")) {
isActivityResultOver = savedInstanceState.getBoolean("activity_result_over");
originalFilePath = savedInstanceState.getString("orig");
thumbnailFilePath = savedInstanceState.getString("thumb");
thumbnailSmallFilePath = savedInstanceState.getString("thumbs");
}
}
Log.i(TAG, "Restoring Stuff");
Log.i(TAG, "File Path: " + filePath);
Log.i(TAG, "Chooser Type: " + chooserType);
Log.i(TAG, "Activity Result Over: " + isActivityResultOver);
if (isActivityResultOver) {
populateData();
}
super.onRestoreInstanceState(savedInstanceState);
}
private void populateData() {
Log.i(TAG, "Populating Data");
loadImage(thumbnailFilePath);
loadImage(thumbnailSmallFilePath);
}
@Override public void onDestroy() {
super.onDestroy();
Log.i(TAG, "Activity Destroyed");
}
private void checkForSharedImage(Intent intent) {
if (intent != null) {
if (intent.getAction() != null && intent.getType() != null && intent.getExtras() != null) {
ImageChooserManager m = new ImageChooserManager(this, ChooserType.REQUEST_PICK_PICTURE);
m.setImageChooserListener(this);
m.submit(ChooserType.REQUEST_PICK_PICTURE, IntentUtils.getIntentForMultipleSelection(intent));
}
}
}
}
Layout File
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="20dp" android:background="@android:color/transparent" android:orientation="vertical" tools:context=".activity.ImageChooserActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/orange" android:gravity="center" android:orientation="vertical"> <Button android:id="@+id/buttonTakePicture" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="@dimen/margin10" android:background="@color/white" android:text="Take Picture" android:textAllCaps="false" android:textColor="@color/blue" android:textStyle="bold" /> <Button android:id="@+id/buttonChooseImage" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="@dimen/margin10" android:background="@color/white" android:text="Choose Image" android:textAllCaps="false" android:textColor="@color/blue" android:textStyle="bold" /> </LinearLayout> </LinearLayout>Manifest for this activity
<activity android:name=".activity.ImageChooserActivity" android:theme="@style/Theme.UserDialog"></activity>Theme:
<style name="Theme.UserDialog" parent="Theme.AppCompat.Light.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">false</item> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item> </style>
Gradel
compile 'com.kbeanie:image-chooser-library:+@aar'
Thank You
No comments:
Post a Comment