Pages

Friday, 19 July 2013

Android - Convert String to valid URL

Just copy-paste below code and call the function with your string url as param.
private URL ConvertToUrl(String urlStr) {
 try {
  URL url = new URL(urlStr);
  URI uri = new URI(url.getProtocol(), url.getUserInfo(),
    url.getHost(), url.getPort(), url.getPath(),
    url.getQuery(), url.getRef());
  url = uri.toURL();
  return url;
 } catch (Exception e) {
  e.printStackTrace();
 }
 return null;
}

Monday, 8 July 2013

Android unregister receiver error when choosing image using intent

To solve error like following

Activity com.android.internal.app.ChooserActivity has leaked IntentReceiver com.android.internal.app.ResolverActivity$1@417ffc78 that was originally registered here. Are you missing a call to unregisterReceiver()?
01-07 02:42:48.242: E/ActivityThread(11280): android.app.IntentReceiverLeaked: Activity com.android.internal.app.ChooserActivity has leaked IntentReceiver com.android.internal.app.ResolverActivity$1@417ffc78 that was originally registered here. Are you missing a call to unregisterReceiver()?
01-07 02:42:48.242: E/ActivityThread(11280):    at android.app.LoadedApk$ReceiverDispatcher.(LoadedApk.java:763)
To solve above error make sure your activity is not "singletask". please check your manifist. if activity is "singletask" then remove it and try.

Friday, 10 May 2013

Android Cover flow working with 2.2+

Following is complete code of cover flow.
As i show this cover flow is not working with phone like s3, nexus 4 etc.
Following  is example of cover flow example working with all phones

Download cover flow from Following url
https://code.google.com/p/android-coverflow/

or Download zip

just replace coverflow.java with following

CoverFlow


import android.content.Context;
import android.content.Context;
import android.graphics.Camera;
import android.graphics.Matrix;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.view.animation.Transformation;
import android.widget.Gallery;
import android.widget.ImageView;

public class CoverFlow extends Gallery {

 /**
  * Graphics Camera used for transforming the matrix of ImageViews
  */
 private Camera mCamera = new Camera();

 /**
  * The maximum angle the Child ImageView will be rotated by
  */
 private int mMaxRotationAngle = 60;

 /**
  * The maximum zoom on the centre Child
  */
 private int mMaxZoom = -120;

 /**
  * The Centre of the Coverflow
  */
 private int mCoveflowCenter;

 public CoverFlow(Context context) {
  super(context);
  this.setStaticTransformationsEnabled(true);
 }

 public CoverFlow(Context context, AttributeSet attrs) {
  super(context, attrs);
  this.setStaticTransformationsEnabled(true);
 }

 public CoverFlow(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);
  this.setStaticTransformationsEnabled(true);
 }

 /**
  * Get the max rotational angle of the image
  * 
  * @return the mMaxRotationAngle
  */
 public int getMaxRotationAngle() {
  return mMaxRotationAngle;
 }

 /**
  * Set the max rotational angle of each image
  * 
  * @param maxRotationAngle
  *            the mMaxRotationAngle to set
  */
 public void setMaxRotationAngle(int maxRotationAngle) {
  mMaxRotationAngle = maxRotationAngle;
 }

 /**
  * Get the Max zoom of the centre image
  * 
  * @return the mMaxZoom
  */
 public int getMaxZoom() {
  return mMaxZoom;
 }

 /**
  * Set the max zoom of the centre image
  * 
  * @param maxZoom
  *            the mMaxZoom to set
  */
 public void setMaxZoom(int maxZoom) {
  mMaxZoom = maxZoom;
 }

 /**
  * Get the Centre of the Coverflow
  * 
  * @return The centre of this Coverflow.
  */
 private int getCenterOfCoverflow() {
  return (getWidth() - getPaddingLeft() - getPaddingRight()) / 2
    + getPaddingLeft();
 }

 /**
  * Get the Centre of the View
  * 
  * @return The centre of the given view.
  */
 private static int getCenterOfView(View view) {

   Log.i("visual postion",
   "left : "+view.getLeft()+" , right : "+view.getRight()+ " , width : "+(view.getLeft()+view.getRight()+view.getWidth()));
  return view.getLeft() + view.getWidth() / 2;
 }
 
 private int offsetChildrenLeftAndRight() {
     int offset = 0;
     for (int i = getChildCount() - 1; i >= 0; i--) {

         getChildAt(i).offsetLeftAndRight(offset);

         if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN)
             getChildAt(i).invalidate();
     }
     return offset;
 }

 /**
  * {@inheritDoc}
  * 
  * @see #setStaticTransformationsEnabled(boolean)
  */
 @Override
 protected boolean getChildStaticTransformation(View child, Transformation t) {

  mCoveflowCenter = getCenterOfCoverflow();
  final int childCenter = getCenterOfView(child) + offsetChildrenLeftAndRight();
  final int childWidth = child.getWidth();

  int rotationAngle = 0;

  t.clear();
  t.setTransformationType(Transformation.TYPE_MATRIX);
//  FacyLog.writeToLog("mCoveflowCenter : "+mCoveflowCenter+" , childCenter:"+childCenter+" , difference : "+(mCoveflowCenter - childCenter)+" , ");
  if ((mCoveflowCenter - childCenter) < 45
    && (mCoveflowCenter - childCenter) > -45) {
   transformImageBitmap((ImageView) child, t, 0);
   Log.i("rotation angel", "rotation angel : 0");
//   FacyLog.writeToLog("rotation angel : 0");
  } else {
   rotationAngle = (int) (((float) (mCoveflowCenter - childCenter) / childWidth) * mMaxRotationAngle);
   if (Math.abs(rotationAngle) > mMaxRotationAngle) {
    rotationAngle = (rotationAngle < 0) ? -mMaxRotationAngle
      : mMaxRotationAngle;
   }
   transformImageBitmap((ImageView) child, t, rotationAngle);
   Log.i("rotation angel", "rotation angel : "
     + rotationAngle);
//   FacyLog.writeToLog("rotation angel : "+rotationAngle);
  }
//  FacyLog.writeToLog("\n");

  return true;
 }

 /**
  * This is called during layout when the size of this view has changed. If
  * you were just added to the view hierarchy, you're called with the old
  * values of 0.
  * 
  * @param w
  *            Current width of this view.
  * @param h
  *            Current height of this view.
  * @param oldw
  *            Old width of this view.
  * @param oldh
  *            Old height of this view.
  */
 @Override
 protected void onSizeChanged(int w, int h, int oldw, int oldh) {
  mCoveflowCenter = getCenterOfCoverflow();
  super.onSizeChanged(w, h, oldw, oldh);
 }

 /**
  * Transform the Image Bitmap by the Angle passed
  * 
  * @param imageView
  *            ImageView the ImageView whose bitmap we want to rotate
  * @param t
  *            transformation
  * @param rotationAngle
  *            the Angle by which to rotate the Bitmap
  */
 private void transformImageBitmap(ImageView child, Transformation t,
   int rotationAngle) {
  mCamera.save();
  final Matrix imageMatrix = t.getMatrix();
  ;
  final int imageHeight = child.getLayoutParams().height;
  ;
  final int imageWidth = child.getLayoutParams().width;
  final int rotation = Math.abs(rotationAngle);

  mCamera.translate(0.0f, 0.0f, 100.0f);

  // As the angle of the view gets less, zoom in
  if (rotation < mMaxRotationAngle) {
   float zoomAmount = (float) (mMaxZoom + (rotation * 1.5));
   mCamera.translate(0.0f, 0.0f, zoomAmount);
  }

  mCamera.rotateY(rotationAngle);
  mCamera.getMatrix(imageMatrix);
  imageMatrix.preTranslate(-(imageWidth / 2), -(imageHeight / 2));
  imageMatrix.postTranslate((imageWidth / 2), (imageHeight / 2));
  mCamera.restore();
 }
}