My Blog List

Friday 24 August 2012

Image Reflection in android

Hi,fellas
Working on my one of android project i got stuck on how to get image reflection on android
after messing a lot i successfully created image reflection with a little bit complicated android coding stuff. so as usual m goona describe how  to achieve this
Here we go..

1.Start fresh project name it  as ImageReflectionDemo
2.Create xml file

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/bpsingh"
        android:layout_width="127dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.21"
        
        android:src="@drawable/rihanna" />

</LinearLayout>

I just took one imageview with drawable image name bpsingh

3.Modify your Activity as


package com.parallelminds.appstore;

import android.app.Activity;

import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Shader.TileMode;
import android.os.Bundle;
import android.widget.ImageView;
public class ImageReflection extends Activity{
ImageView imageview;

/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.imagereflectiondemo); 
        
        //The gap we want between the reflection and the original image
        final int reflectionGap = 4;
        
        //Get you bit map from drawable folder
        Bitmap originalImage = BitmapFactory.decodeResource(getResources(), 
                R.drawable.bpsingh);
        
        int width = originalImage.getWidth();
        int height = originalImage.getHeight();
        
       
        //This will not scale but will flip on the Y axis
        Matrix matrix = new Matrix();
        matrix.preScale(1, -1);
        
        //Create a Bitmap with the flip matix applied to it.
        //We only want the bottom half of the image
        Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, height/2, width, height/2, matrix, false);
        
            
        //Create a new bitmap with same width but taller to fit reflection
        Bitmap bitmapWithReflection = Bitmap.createBitmap(width 
          , (height + height/2), Config.ARGB_8888);
      
       //Create a new Canvas with the bitmap that's big enough for
       //the image plus gap plus reflection
       Canvas canvas = new Canvas(bitmapWithReflection);
       //Draw in the original image
       canvas.drawBitmap(originalImage, 0, 0, null);
       //Draw in the gap
       Paint deafaultPaint = new Paint();
       canvas.drawRect(0, height, width, height + reflectionGap, deafaultPaint);
       //Draw in the reflection
       canvas.drawBitmap(reflectionImage,0, height + reflectionGap, null);
       
       //Create a shader that is a linear gradient that covers the reflection
       Paint paint = new Paint(); 
       LinearGradient shader = new LinearGradient(0, originalImage.getHeight(), 0, 
         bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff, 0x00ffffff, 
         TileMode.CLAMP); 
       //Set the paint to use this shader (linear gradient)
       paint.setShader(shader); 
       //Set the Transfer mode to be porter duff and destination in
      // paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); 
       
       //Draw a rectangle using the paint with our linear gradient
       canvas.drawRect(0, height, width, 
         bitmapWithReflection.getHeight() + reflectionGap, paint); 
       
       //Create an Image view and add our bitmap with reflection to it
       imageview=(ImageView) findViewById(R.id.rihana);
      // ImageView imageView = new ImageView(this);
       imageview.setImageBitmap(bitmapWithReflection);
}
}
       
4. Now run your project and you can see out put as


that's all
enjoy coding









Wednesday 22 August 2012

Face Detection in Android




Hi, fellas
Today i am gonna show you how you can detect face in given bitmap .Android Provides some classes and its associate constructor and method through which you can easily detect a face even eye position in given bitmap .So first take a look on below class description from http://developer.android.com/reference/android/media/FaceDetector.html#FaceDetector(int, int, int)


1.FaceDetector

extends Object
java.lang.Object
   ↳android.media.FaceDetector

Class Overview


Identifies the faces of people in a Bitmap graphic object.


2.

Public Constructors


public FaceDetector (int width, int height, int maxFaces)

Since: API Level 1
Creates a FaceDetector, configured with the size of the images to be analysed and the maximum number of faces that can be detected. These parameters cannot be changed once the object is constructed. Note that the width of the image must be even.
Parameters
widththe width of the image
heightthe height of the image
maxFacesthe maximum number of faces to identify
3.

Public Methods


public int findFaces (Bitmap bitmap, Face[] faces)

Since: API Level 1
Finds all the faces found in a given Bitmap. The supplied array is populated with FaceDetector.Faces for each face found. The bitmap must be in 565 format (for now).
Parameters
bitmapthe Bitmap graphic to be analyzed
facesan array in which to place all found FaceDetector.Faces. The array must be sized equal to the maxFaces value set at initialization
Returns
  • the number of faces found
Here we go....
1.Create your Project ,name it as FaceDetectionDemo
2.Create FaceDetectionActivity
In your onCreate method write setContentView(new MyView(this)); after call to super.
public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
       setContentView(new MyView(this));
}
3.So next step is to create MyView class

private class MyView extends View
    {
    private Bitmap myBitmap;
    private int width, height;
    private FaceDetector.Face[] detectedFaces;
    private int NUMBER_OF_FACES=2;
    private FaceDetector faceDetector;
    private int NUMBER_OF_FACE_DETECTED;
    private float eyeDistance;
    
public MyView(Context context) 
{
super(context);
BitmapFactory.Options bitmapFatoryOptions=new BitmapFactory.Options();
bitmapFatoryOptions.inPreferredConfig=Bitmap.Config.RGB_565;
myBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.fourface,bitmapFatoryOptions);
width=myBitmap.getWidth();
height=myBitmap.getHeight();
detectedFaces=new FaceDetector.Face[NUMBER_OF_FACES];
faceDetector=new FaceDetector(width,height,NUMBER_OF_FACES);
NUMBER_OF_FACE_DETECTED=faceDetector.findFaces(myBitmap, detectedFaces);
}
@Override
protected void onDraw(Canvas canvas)
{
canvas.drawBitmap(myBitmap, 0,0, null);
Paint myPaint = new Paint();
            myPaint.setColor(Color.GREEN);
            myPaint.setStyle(Paint.Style.STROKE); 
            myPaint.setStrokeWidth(3);

            for(int count=0;count<NUMBER_OF_FACE_DETECTED;count++)
            {
            Face face=detectedFaces[count];
            PointF midPoint=new PointF();
            face.getMidPoint(midPoint);
            
            eyeDistance=face.eyesDistance();
            canvas.drawRect(midPoint.x-eyeDistance, midPoint.y-eyeDistance, midPoint.x+eyeDistance, midPoint.y+eyeDistance, myPaint);
            }
}
    
    }
Let me Explain the Constructor


  • For FaceDetection we need to convert in bitmap format that too in RGB_565.
  • Now get the image from the drawable folder. Get the width and height of image.
  • Now the reason I feel this API the simplest is coming now.
  • You need to pass the number of faces you want to detect.It will return the array of Face type.Last three lines is having logic for that.So you must declare an array with the size of number of faces you want to detect.
Now when the face gets detected we will draw a red rectangle on it.For that we need to write few lines in our onDraw method.
  • drawRect is taking five parameter left x,y and top x,y coordinate.From that given pint it will start drawing rectangle.We need to pass paint object also.



That's all run your project and it will detect faces and drawRect on given bitmap
enjoy!
for more query plz mail me @bpsingh216@gmail.com

How to get Installed packages List in Android

Hi, folks
This quick post is related to grab the app information installed on to your device.

Here is sample method  on button clicked..


 public void getInstalledPackage(View view)
{
Log.d("Clicked", " button Clicked");
             PackageManager pm = getPackageManager();
//get a list of installed apps.
        List<ApplicationInfo> packages = pm
                .getInstalledApplications(PackageManager.GET_META_DATA);
                // iterate over the list.
        for (ApplicationInfo packageInfo : packages) {
                           // print package name.
            Log.d("package name" , packageInfo.packageName);

        }
      }
that's all  
open your log cat and you can see the result
pretty cool  is'nt?


for any query just mail me @ bpsingh216@gmail.com