My Blog List

Thursday, 27 September 2012

Posting JSON data to WCF REST from iPhone app

Hi,fellas
this is quick post related to posting JSON data to WCF REST web service from iphone or ipad application.


look at the code below








1. Construct your JSON NSString as



     NSString *jsonRequest=@"{\"user\":{\"EmailId\":\"bpsingh216@gmail.com\",\"Password\":\"pass\",\"UserRoleId\":2,\"UserDetails\":{\"FirstName\":\"bp\",\"FamilyName\":\"Singh\",\"CountryId\":1,\"StateId\":1,\"CityId\":2,\"ZipCode\":221712}}}";


2.Construct your url using NSURL
3.Create NSMutableURLRequest with url
4.Create NSData using jsonRequest.
4.set request method i.e. POST or GET
5.set value for Accept and Content-Type
6. set NSData as HTTPBody
7. Execute your request

Tuesday, 25 September 2012

Light Design Tool out now

Hi, folks
It gives me immense pleasure to introduce new Light Design Tool android application which was the part of  Responsive Urban Lighting Research Program at Allborg University ,Denmark

Application user can design light behavior with this application and can schedule his/her design for specific date and lampost which are connected to the app will automatically appears in that way.It was my first freelance projet.Hit the below link for Application live functionality
https://dl.dropbox.com/u/2700192/Gl%20torv%202.mov





i will share some code for the same ..........

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

Friday, 20 July 2012

iPhone Basic UI Controls Demo

Hello fellas,

Here this post comes with some basic iphone UI controls demo. It will illustrate how to deal with
                         UILable
                         UITextField
                         UITextView
                         UIImageView
                         UIButton
                         UISteper
                         UISlider
                         UISwitch
so let's start
1. Open Xcode create new project
  Xcode ->>File->>New->>New Project
create new View Controller name it as BasicControlsVC
Xcode will automatically create
.AppDelegate.h
.AppDelegate.m
.BasicControlsVC.h
BasiccontrolsVC.m

2.Open BasicControls.h and declare your controls (see below)


#import <UIKit/UIKit.h>

@interface BasicControlsVC : UIViewController<UITextFieldDelegate,UITextViewDelegate>
{
    
    
    UIButton *button;
    UILabel *lable;
    UITextView *textview;
    UITextField *textfield;
    UISlider *slider;
    UISwitch *switchControls;
    UIStepper *stepper;
    UIImageView *imageview;
    
}

@end


3.Now Time to create these controls and performing action.
Generally creating controls refers to allocating memory and setting it's property ,so let's do that
open BasicControlsVC.m and modify your init method  as shown below

- (id)init
{
    self = [super init];
    if (self) {
        //allocate controls here..
        
        //create lable
        lable=[[UILabel alloc]init];
        [lable setFrame:CGRectMake(50, 50, 100, 30)];
        lable.text=@"This is label";
        lable.textColor=[UIColor grayColor];
        
        //create Image view
        imageview=[[UIImageView alloc]initWithFrame:CGRectMake(170, 50, 100, 80)];
        imageview.image=[UIImage imageNamed:@"lamborghini.png"];
        
        
        //create  Textfield
        textfield=[[UITextField alloc]initWithFrame:CGRectMake(50, 100, 200, 50)];
        [textfield setPlaceholder:@"this is text field"];
        textfield.delegate=self;
        
        
        //create Textview
        textview=[[UITextView alloc]initWithFrame:CGRectMake(50, 160, 200, 50)];
        [textview setText:@"This is text view"];
        textview.delegate=self;
        
        //create button
        button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [button addTarget:self 
                   action:@selector(aMethod)
         forControlEvents:UIControlEventTouchUpInside];
        [button setTitle:@"Button" forState:UIControlStateNormal];
        [button setTintColor:[UIColor grayColor]];
        [button setTag:1];
        button.frame = CGRectMake(50, 220, 70, 30);
        
        
        
        //create slider
       
        slider = [[UISlider alloc] initWithFrame:CGRectMake(50, 300, 200, 10)];
        [slider addTarget:self action:@selector(sliderAction) forControlEvents:UIControlEventValueChanged];
        [slider setBackgroundColor:[UIColor clearColor]];
        slider.minimumValue = 0.0;
        slider.maximumValue = 50.0;
        slider.continuous = YES;
        slider.value = 20.0;
        
        //create switch control
       
        switchControls = [[UISwitch alloc] initWithFrame:CGRectMake(50, 320, 20, 20)];
        [switchControls addTarget: self action: @selector(switchmethod) forControlEvents: UIControlEventValueChanged];
       
        //create Stepper
        stepper =  [[UIStepper alloc]init];
        [stepper setFrame:CGRectMake(50, 350, 155, 25)];
        [stepper setMinimumValue:0];
        
        stepper.maximumValue = 1000;
        stepper.stepValue = 5;
        stepper.wraps = YES;
        stepper.autorepeat = YES;
        stepper.continuous = YES;
        
        
        [stepper addTarget:self action:@selector(someAction:) forControlEvents:UIControlEventValueChanged];
        
  }
    return self;
}

 Above code snippet will create these controls and  set their property 
Add your controls on BasicControlsVC by modifying your loadView method as shown below


-(void)loadView
{
    [super loadView];
    //add view to this view controller
    [self.view addSubview:lable];
    [self.view addSubview:textfield];
    [self.view addSubview:textview];
    [self.view addSubview:button];
    [self.view addSubview:imageview];
    [self.view addSubview:slider];
    [self.view addSubview:switchControls];
    [self.view addSubview:stepper];
    
    
    
}


3. addTarget:self action:@selector
you can add selector method on  contols eg. UIButton to perform an action when button clicks

[button addTarget:self 
                   action:@selector(aMethod)
         forControlEvents:UIControlEventTouchUpInside];


and ofcourse you have to implement  this aMethod

-(void)aMethod
{
    NSLog(@"button clicked");
    lable.text=@"button clicked";
    
}
 like wise here i implemented respective @selector method for UISwitch,UIStepper,UISlider



-(void)sliderAction
{
    NSLog(@"value changed");
    lable.text=@"value changed";
    
   
 }

-(void)switchmethod
{
    if(switchControls.on)
    {
    NSLog(@"ON");
        lable.text=@"ON";
    }else
    {
       NSLog(@"OFF"); 
        lable.text=@"OFF";
    }
}

- (void) someAction:(UIStepper *) stepper {
    NSLog(@"stepper clicked");
    lable.text = [NSString stringWithFormat:@"%.f", stepper.value];
}





4. Implement UITextFieldDelegate and UITextViewDelegate Method 
As you know when you are dealing with TextField or TextView in iPhone , Keyboard automatically appears and by clicking return button it hides.
To achieve this must implement these two method 


- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    
    if([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    }
    
    return YES;
}



5. Now Build and run your Project you'll get something like that


full source code of this BasicUIControlsDemo you can grab from
here  http://www.4shared.com/zip/KeHWh86P/BasicUIControlsDemo.html


feel free to query @:    bpsingh216@gmail.com
enjoy coding :-)


Friday, 13 July 2012

How to download and install .apk from server(not market app) programmatically

Hi folks,
If you are planning to develop android application which is responsible to download .apk file from server(not market app,Enterprise distribution) and then install it on to the device this post will help you
so here is the choice.

1. Download Manager: this can be done using the Download Manager available from 2.3.3 your newely downloaded file goes in Downloads application as shown below,you can install your newly download .apk by clicking on it .


Android system just ask for permission to install  your .apk with the help of Package Installer . This seems that after downloading their is no controls of your application to install it rather than going to downloads and manually install the .apk .I am not explaing the the code for Download Manager coz this post is all about "How to download .apk from server and  install it programatically" :-).
So  here is the 2nd way


2. 
a. First download .apk file using simple http connection and store it on external storage area.


private void downloadapk(){
    try {
        URL url = new URL("http://www.efimoto.com/nilesh/HelloWorldProject.apk");
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setRequestMethod("GET");
        urlConnection.setDoOutput(true);
        urlConnection.connect();

        File sdcard = Environment.getExternalStorageDirectory();
        File file = new File(sdcard, "filename.apk");

        FileOutputStream fileOutput = new FileOutputStream(file);
        InputStream inputStream = urlConnection.getInputStream();

        byte[] buffer = new byte[1024];
        int bufferLength = 0;

        while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
            fileOutput.write(buffer, 0, bufferLength);
        }
        fileOutput.close();
        this.checkUnknownSourceEnability();
        this.initiateInstallation();

    } catch (MalformedURLException e) {
            e.printStackTrace();
    } catch (IOException e) {
            e.printStackTrace();
    }
    }


b. Now instantiate installing process.

 private void installApk(){
        Intent intent = new Intent(Intent.ACTION_VIEW);
        Uri uri = Uri.fromFile(new File("/sdcard/filename.apk"));
        intent.setDataAndType(uri, "application/vnd.android.package-archive");
        startActivity(intent);
    }

c.  Give uses-permission in application menifest file.

 <uses-permission android:name="android.permission.INSTALL_PACKAGES"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
    <uses-permission android:name="android.permission.INTERNET"/>
d. Ensure that your "Unknown source " check box must enable.




I have been created simple UI for this  having a button when button clicked it downloads apk after that installation process appears . If unknown source is disable you must got "Install blocked"


That's all, you are successfully downloaded and installed your .apk from server.
feel free to query @:    bpsingh216@gmail.com
enjoy coding :-)