Saturday 30 June 2012

Go homeActivity with FLAG_ACTIVITY_CLEAR_TOP in android

It sets the FLAG_ACTIVITY_CLEAR_TOP flag on the Intent along with the HomeActivity.  This flag  launches a new instance of the activity if it isn’t currently running, and closes all the activities on top of it.

public static void goHome( Context ctx )
{
    if ( ! ( ctx instanceof HomeActivity ) )
    {
        Intent intent = new Intent( ctx, HomeActivity.class );
        intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
        ctx.startActivity( intent );
    }
}

Get DeviceType, Android API Level , OS Version and Application Version in Android

int osv=Build.VERSION.SDK_INT;
   String osv2=Build.VERSION.RELEASE;

 DisplayMetrics dm = new DisplayMetrics();
         getWindowManager().getDefaultDisplay().getMetrics(dm);
       
         if(dm.widthPixels<600)
             {
                DeviceType="Android SmartPhone";
             }
         else
             {
                 DeviceType="Android Tablet";
             }
       
       
         String model2=android.os.Build.BRAND;       
         System.out.println("BRAND is "+model2+" "+DeviceType);
         String brandname = model2.substring(0,1).toUpperCase() + model2.substring(1);
         DeviceType=brandname+" "+DeviceType;
         try
             {
                 app_ver =Integer.toString( this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionCode);
             }
         catch (NameNotFoundException e1)
            {
                 e1.printStackTrace();
            }
       
       androidinfo.setText(" DeviceType:  "+ DeviceType+"  \n "+"Android:  API Level "+osv+"  OS Version "+osv2+"\n Application Version:  "+app_ver);
        

Get Current time zone TimeZone.getDefault() Android

TextView textTimeZone = (TextView)findViewById(R.id.timezone);

        

        TimeZone timezone = TimeZone.getDefault();

        String TimeZoneName = timezone.getDisplayName();

  int TimeZoneOffset = timezone.getRawOffset()/(60 * 60 * 1000);

  
textTimeZone.setText("My Time Zone\n" + 
    TimeZoneName + " : " +String.valueOf(TimeZoneOffset));

Update UI using RunOnUiThread in Android

package com.umer.runOnUiThreadExmp;
 

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
 
public class RunOnUiThreadExample extends Activity {
    /** Called when the activity is first created. */
 TextView txtview;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        txtview=(TextView)findViewById(R.id.txtview);
        myThread();
    }
    public void myThread(){
     Thread th=new Thread(){
       
      @Override
      public void run(){
       try
       {
        while(true)
        {
        Thread.sleep(100);
 
 
           RunOnUiThreadExample.this.runOnUiThread(new Runnable() {
             
         @Override
         public void run() {
          // TODO Auto-generated method stub
         // do ur UI work
          txtview.setText("my name is umer and i am android developer");
         }
        });
        }
       }catch (InterruptedException e) {
     // TODO: handle exception
    }
      }
     };
     th.start();
    }
}

Sort listview by title Android






Collections.sort(mylistArray, new Comparator<Object>(){
             public int compare(Object o1, Object o2) {
                 HashMap<?, ?> map1=(HashMap<?, ?>)o1;
                 HashMap<?, ?> map2=(HashMap<?, ?>)o2;
                 String s1=(String)map1.get("title");
                 String s2=(String)map2.get("title");
                 return s1.compareToIgnoreCase(s2);
             }
         });
mylistArray have sorted by title. now use sorted array in ur ListView adapter.

Wednesday 6 June 2012

Checking for the presence of an Internet connection on an Android device


final boolean isInternetOn() {CONNECTIVITY_SERVICE);// ARE WE CONNECTED TO THE NET
connec.getNetworkInfo(0).getState() == NetworkInfo.State.
connec.getNetworkInfo(1).getState() == NetworkInfo.State.
connec.getNetworkInfo(1).getState() == NetworkInfo.State.
if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ||CONNECTING ||CONNECTING ||CONNECTED ) {// MESSAGE TO SCREEN FOR TESTING (IF REQ)
//Toast.makeText(this, connectionType + ” connected”, Toast.LENGTH_SHORT).show();
}
return true;else if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED ) {//System.out.println(“Not Connected”);
return
false ;

}
return
false;
}
ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.

Upload a Image in server in Android by JSON webservices

package com.wishingWell.JSONFuntions;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class JSONfunctionImage {

 private static final String TAG = "UPLOADER";
   private static String Tag = "UPLOADER";
     private static  String urlString="........";
     static HttpURLConnection conn;

    
    
    
    
 public static JSONObject getJSONImage(String filepath){
    String lineEnd = "\r\n";
         String twoHyphens = "--";
         String boundary = "-------------------------acebdf13572468";
         String line=null;
         StringBuilder sb = new StringBuilder();
         JSONObject res=null;
         try {
     
             // ------------------ CLIENT REQUEST
       
             FileInputStream fileInputStream = new FileInputStream(new File(
               filepath));
            
             // open a URL connection to the Servlet
             URL url = new URL(urlString);
             // Open a HTTP connection to the URL
          
             conn = (HttpURLConnection) url.openConnection();
             // Allow Inputs
             conn.setDoInput(true);
             // Allow Outputs
             conn.setDoOutput(true);
             // Don't use a cached copy.
             conn.setUseCaches(false);
             // Use a post method.
             conn.setRequestMethod("POST");
          //conn.setRequestProperty("Connection", "Keep-Alive");
       conn.setRequestProperty("Content-Type", "multipart/form-data; boundary="+boundary);
       
             DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
             dos.writeBytes(lineEnd + twoHyphens + boundary + lineEnd); //" + pathToOurFile +"
             dos.writeBytes("Content-Disposition: form-data; name=\"userimage\";filename=\".png\"" + lineEnd);
             dos.writeBytes("Content-Type: image/png" + lineEnd + lineEnd);
        
 
             Log.e(Tag, "Headers are written");
             // create a buffer of maximum size
             int bytesAvailable = fileInputStream.available();
             int maxBufferSize = 10000;
             // int bufferSize = Math.min(bytesAvailable, maxBufferSize);
             byte[] buffer = new byte[bytesAvailable];
             // read file and write it into form...
             int bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
            while (bytesRead > 0) {
                 dos.write(buffer, 0, bytesAvailable);
                 bytesAvailable = fileInputStream.available();
                 bytesAvailable = Math.min(bytesAvailable, maxBufferSize);
                 bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
             }
             // send multipart form data necesssary after file data...
             dos.writeBytes(lineEnd);
       dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
       
             // close streams
             Log.e(Tag, "File is written");
             fileInputStream.close();
             dos.flush();
             dos.close();
            
         } catch (MalformedURLException ex) {
             Log.e(Tag, "error: " + ex.getMessage(), ex);
         }
         catch (IOException ioe) {
             Log.e(Tag, "error: " + ioe.getMessage(), ioe);
         }
         try {
             BufferedReader rd = new BufferedReader(new InputStreamReader(conn
                     .getInputStream()));
            
            
            
            
          try {
              while ((line = rd.readLine()) != null) {
                  sb.append(line + "\n");
              }
             
          } catch (IOException e) {
              e.printStackTrace();
       
          }
         
          
             rd.close();
         
         } catch (IOException ioex) {
             Log.e("MediaPlayer", "error: " + ioex.getMessage(), ioex);
            
         }
        
        
      //   System.out.println(" returnr sb ::"+  sb.toString());
        
         try{
     
           res = new JSONObject(sb.toString());           
       }catch(JSONException e){
               Log.e("log_tag", "Error parsing data "+e.toString());
       }
        
         return res;
        
        
  }
 
 
 
 
 
 







}

Saturday 2 June 2012

body fat or blood pressure measurements resources (API) for android developer



Withings Body metrics Services API (WBS API) is a set of webservices allowing developers and third parties limited access to users' data.

http://www.withings.com/en/api/wbsapiv2 

Android Reading Inbox SMS

import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.widget.TextView;

public class SMSRead extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      TextView view = new TextView(this);
      Uri uriSMSURI = Uri.parse("content://sms/inbox");
      Cursor cur = getContentResolver().query(uriSMSURI, null, null, null,null);
      String sms = "";
      while (cur.moveToNext()) {
          sms += "From :" + cur.getString(2) + " : " + cur.getString(11)+"\n";         
      }
      view.setText(sms);
      setContentView(view);
  }
}
 
 
Add below permission to AndroidManifest.xml
 
<uses-permission name="android.permission.READ_SMS" /> 

Display scrollable ImageView bigger than screen

To display image bigger than the device screen, in true size, with scroll bar. We can embed it in a ImageView within nested ScrollView and HorizontalScrollView.



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

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <HorizontalScrollView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
        <ScrollView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content">
            <ImageView 
                android:src="@drawable/bigpicture"
                android:layout_height="wrap_content" 
                android:layout_width="wrap_content"
                android:scaleType="center"/>
        </ScrollView>
 </HorizontalScrollView>
</LinearLayout>

Vibrate with a given pattern..android.os.Vibrator.



import android.app.Activity;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;

public class AndroidVibratorActivity extends Activity {
 
 Button buttonVibrate1, buttonVibrate2, buttonVibrate3;
 
 Vibrator myVibrator;
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        buttonVibrate1 = (Button)findViewById(R.id.buttonVibrate1);
        buttonVibrate2 = (Button)findViewById(R.id.buttonVibrate2);
        buttonVibrate3 = (Button)findViewById(R.id.buttonVibrate3);
        
        myVibrator = (Vibrator)getSystemService(AndroidVibratorActivity.VIBRATOR_SERVICE);
        
        buttonVibrate1.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    myVibrator.vibrate(500);
   }});
        
        buttonVibrate2.setOnTouchListener(new OnTouchListener(){

   @Override
   public boolean onTouch(View v, MotionEvent event) {
    int action = event.getAction();
    
    if(action == MotionEvent.ACTION_DOWN){
     myVibrator.vibrate(1000);
    }else if(action == MotionEvent.ACTION_UP){
     myVibrator.cancel();
    }
    
    return true;
   }});
        
        buttonVibrate3.setOnTouchListener(new OnTouchListener(){

   @Override
   public boolean onTouch(View v, MotionEvent event) {
    int action = event.getAction();
    
    if(action == MotionEvent.ACTION_DOWN){
     
     long[] pattern = {
      50,   //Off before vibration
      100, 100,  //on-off
      100, 1000, //on-off
     };
     
     myVibrator.vibrate(pattern, 0); //repeat from pattern[0]
    }else if(action == MotionEvent.ACTION_UP){
     myVibrator.cancel();
    }
    
    return true;
   }});
        
    }
}
 
**main.xml***
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <Button
        android:id="@+id/buttonVibrate1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Vibrate for 500ms" />
    <Button
        android:id="@+id/buttonVibrate2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Touch to Vibrate (max. 1 sec.)" />
    <Button
        android:id="@+id/buttonVibrate3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Touch to Vibrate Pattern" />

</LinearLayout> 
 
"android.permission.VIBRATE" is needed. 
 

BitmapManager


**** import this class in ur project *******
import java.io.InputStream;
import java.lang.ref.SoftReference;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.WeakHashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.ImageView;

public enum BitmapManager {
   
     INSTANCE; 
      
         private final Map<String, SoftReference<Bitmap>> cache; 
         private final ExecutorService pool; 
         private Map<ImageView, String> imageViews = Collections 
                 .synchronizedMap(new WeakHashMap<ImageView, String>()); 
         private Bitmap placeholder; 
      
         BitmapManager() { 
             cache = new HashMap<String, SoftReference<Bitmap>>(); 
             pool = Executors.newFixedThreadPool(5); 
         } 
      
         public void setPlaceholder(Bitmap bmp) { 
             placeholder = bmp; 
         } 
      
         public Bitmap getBitmapFromCache(String url) { 
             if (cache.containsKey(url)) { 
                 return cache.get(url).get(); 
             } 
      
             return null; 
         } 
      
         public void queueJob(final String url, final ImageView imageView, 
                 final int width, final int height) { 
             /* Create handler in UI thread. */ 
             final Handler handler = new Handler() { 
                 @Override 
                 public void handleMessage(Message msg) { 
                     String tag = imageViews.get(imageView); 
                     if (tag != null && tag.equals(url)) { 
                         if (msg.obj != null) { 
                             imageView.setImageBitmap((Bitmap) msg.obj); 
                         } else { 
                             imageView.setImageBitmap(placeholder); 
                             Log.d(null, "fail " + url); 
                         } 
                     } 
                 } 
             }; 
      
             pool.submit(new Runnable() { 
                 @Override 
                 public void run() { 
                     final Bitmap bmp = downloadBitmap(url, width, height); 
                     Message message = Message.obtain(); 
                     message.obj = bmp; 
                     Log.d(null, "Item downloaded: " + url); 
      
                     handler.sendMessage(message); 
                 } 
             }); 
         } 
      
         public void loadBitmap(final String url, final ImageView imageView, 
                 final int width, final int height) { 
             imageViews.put(imageView, url); 
             Bitmap bitmap = getBitmapFromCache(url); 
      
             // check in UI thread, so no concurrency issues 
             if (bitmap != null) { 
                 Log.d(null, "Item loaded from cache: " + url); 
                 imageView.setImageBitmap(bitmap); 
         } else { 
                 imageView.setImageBitmap(placeholder); 
                 queueJob(url, imageView, width, height); 
             } 
         } 
      
         private Bitmap downloadBitmap(String url, int width, int height) { 
             try { 
                 Bitmap bitmap = BitmapFactory.decodeStream((InputStream) new URL( 
                         url).getContent()); 
                 bitmap = Bitmap.createScaledBitmap(bitmap, width, height, true); 
                 cache.put(url, new SoftReference<Bitmap>(bitmap)); 
                 return bitmap; 
             } catch (MalformedURLException e) { 
                 e.printStackTrace(); 
             } catch (IOException e) { 
                 e.printStackTrace(); 
             } 
      
             return null; 
         } 
     } 
   







**********And**************8






 use in ur Activity as
BitmapManager.INSTANCE.loadBitmap(urlpath, ImageView ,100,100);