package typical_if.android.fragment;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.media.ExifInterface;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.vk.sdk.api.VKApi;
import com.vk.sdk.api.VKRequest;
import java.io.File;
import typical_if.android.Constants;
import typical_if.android.OfflineMode;
import typical_if.android.R;
import typical_if.android.TIFApp;
import typical_if.android.UploadPhotoService;
import typical_if.android.VKRequestListener;
/**
* Created by LJ on 29.07.2014.
*/
public class FragmentPhotoFromCamera extends Fragment {
private static String path;
private ImageView photofromcamera;
private ImageView uploadPhotoFromCamera;
private int displayWidth = TIFApp.getDisplayWidth();
private int displayHeight = TIFApp.getDisplayHeight();
public static FragmentPhotoFromCamera newInstance(String path) {
FragmentPhotoFromCamera fragment = new FragmentPhotoFromCamera();
FragmentPhotoFromCamera.path=path;
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(false);
}
@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d("My ID", String.valueOf( OfflineMode.loadLong(Constants.VK_GROUP_ID)));
View rootView = inflater.inflate(R.layout.fragment_upload_photo_from_camera, container, false);
setRetainInstance(true);
File imageFile = new File(path);
photofromcamera = (ImageView) rootView.findViewById(R.id.image_from_photocamera);
photofromcamera.setImageBitmap(rotate(shrinkmethod(path, displayWidth, displayHeight), getCameraPhotoOrientation(getActivity().getApplicationContext(), Uri.fromFile(imageFile), path)));
uploadPhotoFromCamera = (ImageView) rootView.findViewById(R.id.upload_photo_from_camera);
uploadPhotoFromCamera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final File tempFile = new File(path);
getActivity().startService(new Intent(getActivity().getApplicationContext(), UploadPhotoService.class));
final VKRequest req = VKApi.uploadAlbumPhotoRequest(tempFile, Constants.ALBUM_ID, (int)( OfflineMode.loadLong(Constants.VK_GROUP_ID)*(-1)));
req.executeWithListener(new VKRequestListener() {
@Override
public void onSuccess() {
Log.d("MY response", vkResponse.responseString);
//getActivity().stopService(new Intent(getActivity().getApplicationContext(), UploadPhotoService.class));
}
// @Override
// public void onError(VKError error) {
// super.onError(error);
// TIFApp.showCommonErrorToast();
// }
});
}
});
return rootView;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
@Override
public void onDestroy() {
super.onDestroy();
getActivity().stopService(new Intent(getActivity().getApplicationContext(), UploadPhotoService.class));
}
public static Bitmap rotate(Bitmap b, int degrees) {
if (degrees != 0 && b != null) {
Matrix m = new Matrix();
m.setRotate(degrees, (float) b.getWidth() / 2, (float) b.getHeight() / 2);
try {
Bitmap b2 = Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), m, true);
if (b != b2) {
b.recycle();
b = b2;
}
} catch (OutOfMemoryError ex) {
throw ex;
}
}
return b;
}
public static int getCameraPhotoOrientation(Context context, Uri imageUri, String imagePath) {
int rotate = 0;
try {
context.getContentResolver().notifyChange(imageUri, null);
File imageFile = new File(imagePath);
ExifInterface exif = new ExifInterface(imageFile.getAbsolutePath());
int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
}
} catch (Exception e) {
e.printStackTrace();
}
return rotate;
}
Bitmap shrinkmethod(String file,int width,int height){
BitmapFactory.Options bitopt=new BitmapFactory.Options();
bitopt.inJustDecodeBounds=true;
Bitmap bit=BitmapFactory.decodeFile(file, bitopt);
int h=(int) Math.ceil(bitopt.outHeight/(float)height);
int w=(int) Math.ceil(bitopt.outWidth/(float)width);
if(h>1 || w>1){
if(h>w){
bitopt.inSampleSize=h;
}else{
bitopt.inSampleSize=w;
}
}
bitopt.inJustDecodeBounds=false;
bit=BitmapFactory.decodeFile(file, bitopt);
return bit;
}
}