My Blog List

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 :-)