We provide complete mobile and web apps development solutions

Monday, October 29, 2012

Service in android

Activity is a foreground process. It contains user interaction. To run long running operations, we have to create a service.It will run in background. It does not contain user interaction.

Types of services:

1. Unbound Service: it runs in the background indefinitely even started activity with service ends also.
2. Bound Service : it will run till life time of activity.

 Activity can start service via startService()and it will stop via stopService().
If activity want to interact with service,it can use bindService().

first onCreate() is called, after onStartCommand is called with the intent data provided by the activity.


Android provides many predefined services exposed via Manager class.


Own services must be declared in the manifest file..


Some methods:

An activity can start a service via startService() method.

stop the service by using stopService() method.

bindService() - this is for activity to interact with service.

it needs "ServiceConnection" object.


Once service is started    onCreate()  is called.
onStart()



onBind()- the system calls when other component want to bind the service.

onStop() - for stopping the service.

OnDestroy()- called when service is no longer used. and it is destroyed.



Own services must be declared in manifest file.

how to declare own service:

<service android:name="your class"></service>
implementing class must extend the class   " service or one of its subclasses.


Ex: AsyncTask:
using services in android allows to have app running inthe background. if u want to do a simple task run in the background, use AsyncTask.

AsyncTask class:


private class someclassname extends AsyncTask<x,y,z>

protected void onPreExecute()
{
// starting new thread i.e    initilizing


protected void doInBackground()

// perform the action or do the task


protected void onPostExecute(){
// closing the process
}


 Example:

MainActivity.java
package com.example.servicetest;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startService(new Intent(this,ServiceAct.class));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}


ServiceAct.java
package com.example.servicetest;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class ServiceAct extends Service{
    String tag="service tag";
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        Log.d(tag, "service destroyed");   
    }
   
@Override
    public void onStart(Intent intent, int startId) {
        // TODO Auto-generated method stub
        super.onStart(intent, startId);
        Log.d(tag, "service started");
        stopSelf();
    }}

manifest permission

<service android:name="ServiceAct" />

Tuesday, October 23, 2012

Camera:

in android, we can access camera from app by 2 ways.

implicit intent launches default camera

Intent i=new Intent("android.media.action.IMAGE_CAPTURE");
startActivity(i);
permission in manifest.xml


<uses-permission android:name="android.permission.CAMERA"/>


 Button b=(Button)findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener() {
           
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 Intent  i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                    i.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
                    startActivityForResult(i, cameraData);
            }
        });



Other way is creating Camera class


camera class: to access camera hardware
SurfaceView class : dedicate a drawing surface at lowest level of the view as a placeholder to display the camera preview before describing how these are tied together and the layout structure we have to declare.



















WifiManager

java.lang.object

-  android.net.wifi.wifimanager

WifiManager class provides primary api for managing all aspects of wifi connectivity.

get the instance of this class by calling

contaxt.getSystemService(context.WIFI_Service);

it deals with list of configured networks. this can be viewed, updated.


check wifi status:

ConnectivityManager conMgr;
NetworkInfo netInfo;
WifiManager wifiMgr;

conMgr=(ConnectivityManager)getSystemService(context.WIFI_Service);
netInfo=conMgr.getActiveNetworkInfo();
if(!(netInfo==null))
{
if(WifiMgr.isWifiEnabled())
{
//wifi  enabled
}
else
{
//wifi disabled i.e not available
}
}







WifiManager in Android

java.lang.object

-  android.net.wifi.wifimanager

WifiManager class provides primary api for managing all aspects of wifi connectivity.

get the instance of this class by calling

contaxt.getSystemService(context.WIFI_Service);

it deals with list of configured networks. this can be viewed, updated.


check wifi status:

ConnectivityManager conMgr;
NetworkInfo netInfo;
WifiManager wifiMgr;

conMgr=(ConnectivityManager)getSystemService(context.WIFI_Service);
netInfo=conMgr.getActiveNetworkInfo();
if(!(netInfo==null))
{
if(WifiMgr.isWifiEnabled())
{
//wifi  enabled
}
else
{
//wifi disabled i.e not available
}
}







TelephonyManager

java.lang.object
android.telephony.TelephonyManager

it provides access to the info about telephony services.
we can register services to receive notification of telephony state changes.


context.getSystemService(context.TELEPHONY_SERVICE);


SOME METHODS:

public int getCallState()-    get the call state

public cellLocation getCellLocation()- returns current location of the device.. returns null if the current location not available.

this requires permission in the manifest file.

what permissions we need to declare:

ACCESS_COARSE_LOCATION
ACCESS_FINE_LOCATION

some more methods:

we can get device id


public string getDeviceId()

we can get network operator

public string getNetworkOperator()


we can get sim operator name

public string getSimOperatorName()







Bluetooth in Android



package:
import package:
import android.bluetooth.*;

<uses-permission android:name="android.permission.BLUETOOTH"/>
 for more advanced bluetooth tasks , like setting name, connecting....

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>


ACCESS THE BLUETOOTH ADAPTER

Android bluetooth apis include bluetooth adapter class.
if we want to perform any action
BluetoothAdapter class must be instantiated.

BluetoothAdapter bluetooth=BluetoothAdapter.getDefaultAdapter();
if(bluetooth!=null)
{
// work with bluetooth
}
else
{
//disabled// switch on bluetooth
}



for displaying name of bluetooth

String status;
if(bluetooth.isEnabled)
{
String mydeviceaddress=bluetooth.getAddress();
String mydevicename=bluetooth.getName();
status=mydeviceaddress+:+mydevicename;
}
else
{
status="bluetooth is not enabled"
}



}


setting name
bluetooth.setName("Mydevice");







Pending Intent in Android


Pending intent is a token to the other application, which allows the other application to use your application’s permissions to execute a predefined piece of code.
Here other applications means  it may be an alarm manager, home screen widget manager etc......

To perform a broadcast via a pending intent, so get a pendingIntent via PendingIntent.getBroadcast().
To perform an activity via pending intent, you receive the activity via PendingIntent.getActivity.

Online Training

Your Name :
Your Email: (required)
Your Message: (required)

Powered by Blogger.

Recent Posts

Find Us On Facebook

Popular Posts