skip to main | skip to sidebar

Android Development Tutorial

Pages

  • Home
 
  • RSS
  • Twitter
Related Posts Plugin for WordPress, Blogger...
Friday, October 26, 2012

Reordering of listview

Posted by Raju Gupta at 3:46 AM – 0 comments
 

Listview rows order can be changed using drag and drop functionality.Dragging should be enabled beyond the visible listview position.



<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent" android:layout_height="wrap_content">
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/icon" android:id="@+id/entryIcon"></ImageView>
<TextView android:layout_height="wrap_content" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_centerVertical="true" android:text="Demo description" android:layout_toRightOf="@+id/entryIcon"></TextView>
</RelativeLayout>




<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout android:id="@+id/mainAbsoluteLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">


<com.myself.dragndrop.CustomListView
 android:id="@+id/android:list"
 android:layout_width="fill_parent"
    android:layout_height="fill_parent"
>
</com.myself.dragndrop.CustomListView>

</AbsoluteLayout>

//CustomListView.java:

import java.util.ArrayList;

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AbsoluteLayout;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.AbsListView.LayoutParams;

public class CustomListView extends ListView {
 
 public View moveView = null;
 private Context context = null;
 public int movedPosition = 0;
 public Entry moveEntry = null;
 
 public boolean isMoveFlag = false;
 private int firstPosition;
 private int lasPosition;
 private ArrayList<com.myself.dragndrop.CustomListView.Coordinates> listCoordinates;
 
 public CustomListView(Context context) {
  super(context);
  // TODO Auto-generated constructor stub
  this.context = context;
  setVerticalScrollBarEnabled(false);

 }

 public CustomListView(Context context, AttributeSet attrs) {
  super(context, attrs);
  // TODO Auto-generated constructor stub
  this.context = context;
  setVerticalScrollBarEnabled(true);

 }
 
 

 
 @Override
 public boolean onTouchEvent(MotionEvent ev) {
  // TODO Auto-generated method stub
  if (isMoveFlag) {
   switch (ev.getAction()) {
   case MotionEvent.ACTION_DOWN:
    Log.v(getClass().toString(),"action_dowm");
    int y = (int)ev.getY();
    if (getParent() instanceof AbsoluteLayout) {
     AbsoluteLayout parent = (AbsoluteLayout)getParent();
     if (moveView != null) {
      parent.removeView(DnDAdapter.emptyView);
      parent.addView(DnDAdapter.emptyView, new AbsoluteLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 0, y - 22));
      
     }
    }
    break;
   case MotionEvent.ACTION_MOVE:
    Log.v(getClass().toString(),"action_move");
    int yMove = (int)ev.getY();
    if (getParent() instanceof AbsoluteLayout) {
     AbsoluteLayout parent = (AbsoluteLayout)getParent();
     if (moveView != null) {
      parent.removeView(DnDAdapter.emptyView);
      parent.addView(DnDAdapter.emptyView, new AbsoluteLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, 0, yMove - 22));
      inChild(MotionEvent.ACTION_MOVE);
     }
    }
    break;
   case MotionEvent.ACTION_UP: 
    if (getParent() instanceof AbsoluteLayout) {
     AbsoluteLayout parent = (AbsoluteLayout)getParent();
     if (moveView != null) {
      parent.removeView(DnDAdapter.emptyView);
      inChild(MotionEvent.ACTION_UP);
//      DnDAdapter.addEntry(movedPosition);
     }
    }
    isMoveFlag = false;
    setEnabled(true);
    Log.v(getClass().toString(),"action_up: " + isMoveFlag);
    break;
   default:
    break;
  }
  }
  return super.onTouchEvent(ev);
 }
 
 @Override
 public void setOnScrollListener(OnScrollListener l) {
  // TODO Auto-generated method stub
  l = new OnScrollListener() {
   
   @Override
   public void onScrollStateChanged(AbsListView view, int scrollState) {
    // TODO Auto-generated method stub
     firstPosition = getFirstVisiblePosition();
     lasPosition = getLastVisiblePosition();
   }
   
   @Override
   public void onScroll(AbsListView view, int firstVisibleItem,
     int visibleItemCount, int totalItemCount) {
    // TODO Auto-generated method stub
    
   }
  };
  super.setOnScrollListener(l);
 }
 
 private void inChild(int action) {
  setCoordinates();
  for (int i = 0; i < listCoordinates.size(); i++) {
   System.err.println("size"+listCoordinates.size());
   Coordinates coordinates = listCoordinates.get(i);
   int topPosition = coordinates.getTop();
   System.err.println("coordinates.getTop()"+coordinates.getTop());
   System.err.println("coordinates.getBottom()"+coordinates.getBottom());
   int bottomPosition = coordinates.getBottom();
   int bottomMoveViewPosition = DnDAdapter.emptyView.getBottom();
   if (i != 0) {
    if (bottomMoveViewPosition > topPosition && bottomMoveViewPosition < bottomPosition) {
     Log.v(getClass().toString(),"Move view in position: " + i);
     DnDAdapter.removeEmptyEntry();
     DnDAdapter.addEmptyEntry(getFirstVisiblePosition() + i);
     if (action == MotionEvent.ACTION_UP) {
      DnDAdapter.removeEmptyEntry();
      DnDAdapter.addEntry(getFirstVisiblePosition() + i);
     }
    }
   }
  }
 }
 
 private void setCoordinates() {
  listCoordinates = new ArrayList<Coordinates>();
  int count = getChildCount();
  System.err.println("count"+count);
  for (int i = 0; i < count; i++) {
   View child = getChildAt(i);
   if (child != null) {
    Coordinates coord = new Coordinates();
    coord.setTop(child.getTop());
    coord.setBottom(child.getBottom());
    listCoordinates.add(coord);
   }
  }
 }
 
 
 
 class Coordinates {
  
  private int top = 0;
  private int bottom = 0;
  
  public int getTop() {
   return top;
  }
  public void setTop(int top) {
   this.top = top;
  }
  public int getBottom() {
   return bottom;
  }
  public void setBottom(int bottom) {
   this.bottom = bottom;
  }
  
  
 }

}


//ReorderAdapter.java:

import java.util.ArrayList;
import java.util.List;

import com.myself.dragndrop.R;

import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnTouchListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class ReorderAdapter extends BaseAdapter {
 
 private static List<Entry> items = null;
 private Context context = null;
 
 public static View emptyView = null;
 
 private static Entry emptyEntry = new Entry();
 
 public ReorderAdapter(Context context) {
  // TODO Auto-generated constructor stub
  this.context = context;
//  buildList();
 }
 
 
 
 public List<Entry> getItems() {
  return items;
 }
 
 public void setList(List<Entry> items) {
  this.items = items;
 }

 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  System.err.println("items.size()"+items.size());
  return items.size();
 }

 @Override
 public Object getItem(int position) {
  // TODO Auto-generated method stub
  return items.get(position);
 }

 @Override
 public long getItemId(int position) {
  // TODO Auto-generated method stub
  return 0;
 }

 @Override
 public View getView(final int position, View convertView, ViewGroup parent) {
  // TODO Auto-generated method stub
  Entry entry = items.get(position);
  System.err.println("getview"+position);
  
  LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  final View view = inflater.inflate(R.layout.listitem, parent, false);
  TextView txt = (TextView)view.findViewById(R.id.TextView01);
  txt.setText(entry.getName());
  txt.setTextColor(Color.WHITE);
  final ImageView img = (ImageView)view.findViewById(R.id.entryIcon);
  img.setOnTouchListener(new OnTouchListener() {
   
   @Override
   public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    Log.v(getClass().toString(),"Icon onTouch. Selected position: " + position);
    
    DragAndDrop.listView.moveEntry = items.get(position);
    buildEmptyView(DragAndDrop.listView.moveEntry);
    items.remove(position);
    items.add(position, emptyEntry);
    DragAndDrop.listView.invalidateViews();
    DragAndDrop.listView.setEnabled(false);
    DragAndDrop.listView.isMoveFlag = true;
    DragAndDrop.listView.moveView = view;
    DragAndDrop.listView.movedPosition = position;
    return false;
   }
  });
  if (entry.getName().equals("Empty entry")) {
   img.setVisibility(View.INVISIBLE);
   txt.setVisibility(View.INVISIBLE);
  }
  return view;
 }

 private void buildEmptyView(Entry moveentry) {
  LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  emptyView = inflater.inflate(R.layout.emptyview, null, false);
  TextView txt = (TextView)emptyView.findViewById(R.id.TextView01);
  txt.setText(moveentry.getName());
  txt.setTextColor(Color.WHITE);
 }
 
 public static void addEntry(int pos) {
  items.add(pos, DragAndDrop.listView.moveEntry);
  DragAndDrop.listView.invalidateViews();
 }
 
 public static void addEmptyEntry(int pos) {
  items.add(pos, emptyEntry);
  DragAndDrop.listView.invalidateViews();
 }
 
 public static void removeEmptyEntry() {
  items.remove(emptyEntry);
  DragAndDrop.listView.invalidateViews();
 }
}

//DragAndDrop.java :

import java.util.ArrayList;
import java.util.List;


import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;


public class DragAndDrop extends ListActivity {
    /** Called when the activity is first created. */
 
 
 public static LinearLayout layout = null;
 public static ScrollView scrollView = null;
 public static CustomListView listView = null; 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        ReorderAdapter adapter = new ReorderAdapter(this);
        adapter.setList(buildList());
        listView = (CustomListView)getListView();
        listView.setAdapter(adapter);
        
    }
    
    private List<Entry> buildList() {
  List<Entry> items = new ArrayList<Entry>();
  for (int i = 0; i < 30; i++) {
   Entry entry = new Entry();
   entry.setName("Demo entry " + i);
   items.add(entry);
  }
  return items;
 }
    
    
}
[ Read More ]
Read more...
Thursday, October 25, 2012

Text-to-Speech capability for Android Devices

Posted by Raju Gupta at 3:34 AM – 0 comments
 

This code snippet described the Text-to-Speech (TTS) capability. Also known as "speech synthesis" for Android Devices. TTS enables Android device to "speak" text of different languages. Mostly all Android-powered devices that are supporting the TTS functionality comes with the TTS engine integrated. But some devices lacks it. There is an API available which checks the TTS engine and install it on device if it is not there.


 import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class TextToSpeechActivity extends Activity implements OnInitListener {
 
 private int CURRENT_DATA_CHECK_CODE = 0;
 
  // Instance of TextToSpeech 
                     private TextToSpeech oTTS;
 
 // Object for the Editable Text Input
                     private EditText inputTextControl;
                     // Object for the button
 private Button speakButtonControl;
    
 @Override
    public void onCreate(Bundle savedInstanceState) {
  
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        inputTextControl = (EditText) findViewById(R.id.input_text);
        speakButtonControl = (Button) findViewById(R.id.speak_button);
        
        speakButtonControl.setOnClickListener(new OnClickListener() {   
   @Override
   public void onClick(View v) {
    String strText = inputTextControl.getText().toString();
    if (strText!=null && strText.length()>0) {
     Toast.makeText(TtsActivity.this, "Testing: " + strText, Toast.LENGTH_LONG).show();
     oTTS.speak(strText, TextToSpeech.QUEUE_ADD, null);
    }
   }
  });
        
        Intent checkIntent = new Intent();
  newIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
  // startActivityForResult will wait till the current intent will not be interpreted
                                           startActivityForResult(newIntent, CURRENT_DATA_CHECK_CODE);
  
    }
 
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == CURRENT_DATA_CHECK_CODE) {
   if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
    // on successful call create the TTS instance
    oTTS = new TextToSpeech(this, this);
   } 
   else {
    // data may be missing so install it
    Intent installIntent = new Intent();
    installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
    startActivity(installIntent);
   }
  }

 }

 @Override
 public void onInit(int status) {  
  if (status == TextToSpeech.SUCCESS) {
   Toast.makeText(TtsActivity.this, 
     "Text-To-Speech engine has been initialized", Toast.LENGTH_LONG).show();
  }
  else if (status == TextToSpeech.ERROR) {
   Toast.makeText(TtsActivity.this, 
     "Error occurred initializing Text-To-Speech engine", Toast.LENGTH_LONG).show();
  }
 }
 
}

[ Read More ]
Read more...
Wednesday, October 24, 2012

Android Stub uninstalling the existing client and launching another client

Posted by Raju Gupta at 3:30 AM – 0 comments
 

This Android Application uninstall prior version of client from the device. It checks for the newer version of client on the device and launch it. There is usage of onActivityResult method which shows how to wait till previous Intent is getting completed (returning its result).



import android.app.Activity;
import android.os.Bundle;
import android.net.Uri;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;

public class PreCachingIssueApp extends Activity
{
   private final static int    UNINSTALL_REQUEST_CODE = 0;

   private final static String m_sPackageToUninstall  = "com.test"; //old client to be uninstall

//client installed from market place
   private final static String m_sPackageToLaunch     = "com.google.android.CalculatorCheck";
   private final static String m_sClassToLaunch       = "com.google.android.CalculatorCheck.Calculator";

//wap url to be opened - just an example set google.com   
private final static String m_sWebUrl              = "http://google.com";

   public void onCreate(Bundle savedInstanceState)
   {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      // Check for the previous Client and uninstall it
      try
      {
         // Check if the package exist or not
         PackageManager oPackageManager = getPackageManager();
         PackageInfo oPackageInfo = oPackageManager.getPackageInfo(m_sPackageToUninstall, PackageManager.GET_ACTIVITIES);
         if (oPackageInfo != null)
         {
            Uri oPackageUri = Uri.parse("package:" + m_sPackageToUninstall);
            Intent oIntent = new Intent(Intent.ACTION_DELETE, oPackageUri);
            // wait till the uninstall is not completed
           startActivityForResult(oIntent, UNINSTALL_REQUEST_CODE);
         }
         else
         {
            launchApp();
         }
      }
      catch (NameNotFoundException e)
      {
         launchApp();
      }
   }

   private void launchApp()
   {
      // Launch the new client from another vendor if it is installed on the device else launch the WAP Mobile TV url
      try
      {
         // Check if the package exist or not
         PackageManager oPackageManager = getPackageManager();
         PackageInfo oPackageInfo = oPackageManager.getPackageInfo(m_sPackageToLaunch, PackageManager.GET_ACTIVITIES);
         if (oPackageInfo != null)
         {
            Intent oNewClientIntent = new Intent(Intent.ACTION_MAIN);
            oNewClientIntent.setComponent(new ComponentName(m_sPackageToLaunch, m_sClassToLaunch));
            // launch the new client
            startActivity(oNewClientIntent);
         }
         else
         {
            Intent oIntent = new Intent(Intent.ACTION_VIEW);
            oIntent.setData(Uri.parse(m_sWebUrl));
            // launch the web url
            startActivity(oIntent);
         }
      }
      catch (NameNotFoundException e)
      {
         Intent oIntent = new Intent(Intent.ACTION_VIEW);
         oIntent.setData(Uri.parse(m_sWebUrl));
         startActivity(oIntent);
      }

     // make sure this stub application will kill itself once user will exit from the application launched by     
     // the stub 
     super.onDestroy();
      finish();
   }

   protected void onActivityResult(int nRequestCode, int nResultCode, Intent oIntent)
   {
      super.onActivityResult(nRequestCode, nResultCode, oIntent);

      if (nRequestCode == UNINSTALL_REQUEST_CODE)
      {
         launchApp();
      }
   }
}

[ Read More ]
Read more...
Tuesday, October 23, 2012

Tab creation in android screen

Posted by Raju Gupta at 3:26 AM – 0 comments
 

Creation of tab using xml   




      
            
            
      
 

[ Read More ]
Read more...
Monday, October 22, 2012

ListView Recordering by drag drop in Android

Posted by Raju Gupta at 3:17 AM – 0 comments
 

It is used to reorder the list items by just draggin and dropping them to the desired posotion.


// Initialize your list view in layout file as follows:
<com.tcs.view.DragDropListView
 android:layout_width="fill_parent" android:clickable="false"
 android:id="@android:id/list" android:layout_height="fill_parent"
 android:drawingCacheQuality="high" android:layout_above="@+id/linearLayout2above">
</com.tcs.view.DragDropListView>

//Import the attached java file in your package.

// Set the listener on your LIst View Object with the following code
Where "view" is the list view object in below line.
 ((DragDropListView) view).setDropListener(mDropListener);

// Initialize the listener as folows.
// Here variable from tells you item's initial position and to tells you the final position. wrtie your own waht you want to do with List you have passed as an adpater. 
 /**
     * Drop Listener it will listen to from and to position of drop event when
     * the user will drop the selected item at the desired event.
     */
    private DragDropListView.DropListener mDropListener = new DragDropListView.DropListener() {
        public void drop(int from, int to) {
           
        }
    };



You need to cutomize the layout item in attached file as per your requirement.

[ Read More ]
Read more...
Sunday, October 21, 2012

Android app for SimpleWiktionary

Posted by Raju Gupta at 3:11 AM – 0 comments
 
This App takes the word and gives its meaning in detail. Also displays the word of the day
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.Uri;
import android.util.Log;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

/**
 * Helper methods to simplify talking with and parsing responses from a
 * lightweight Wiktionary API. Before making any requests, you should call
 * {@link #prepareUserAgent(Context)} to generate a User-Agent string based on
 * your application package name and version.
 */
public class SimpleWikiHelper {
 private static final String TAG = "SimpleWikiHelper";

 /**
  * Regular expression that splits "Word of the day" entry into word
  * name, word type, and the first description bullet point.
  */
 public static final String WORD_OF_DAY_REGEX =
   "(?s)\\{\\{wotd\\|(.+?)\\|(.+?)\\|([^#\\|]+).*?\\}\\}";

 /**
  * Partial URL to use when requesting the detailed entry for a specific
  * Wiktionary page. Use {@link String#format(String, Object...)} to insert
  * the desired page title after escaping it as needed.
  */
 private static final String WIKTIONARY_PAGE =
   "http://en.wiktionary.org/w/api.php?action=query&prop=revisions&titles=%s&" +
     "rvprop=content&format=json%s";

 /**
  * Partial URL to append to {@link #WIKTIONARY_PAGE} when you want to expand
  * any templates found on the requested page. This is useful when browsing
  * full entries, but may use more network bandwidth.
  */
 private static final String WIKTIONARY_EXPAND_TEMPLATES =
   "&rvexpandtemplates=true";

 /**
  * {@link StatusLine} HTTP status code when no server error has occurred.
  */
 private static final int HTTP_STATUS_OK = 200;

 /**
  * Shared buffer used by {@link #getUrlContent(String)} when reading results
  * from an API request.
  */
 private static byte[] sBuffer = new byte[512];

 /**
  * User-agent string to use when making requests. Should be filled using
  * {@link #prepareUserAgent(Context)} before making any other calls.
  */
 private static String sUserAgent = null;

 /**
  * Thrown when there were problems contacting the remote API server, either
  * because of a network error, or the server returned a bad status code.
  */
 public static class ApiException extends Exception {
  public ApiException(String detailMessage, Throwable throwable) {
   super(detailMessage, throwable);
  }

  public ApiException(String detailMessage) {
   super(detailMessage);
  }
 }

 /**
  * Thrown when there were problems parsing the response to an API call,
  * either because the response was empty, or it was malformed.
  */
 public static class ParseException extends Exception {
  public ParseException(String detailMessage, Throwable throwable) {
   super(detailMessage, throwable);
  }
 }

 /**
  * Prepare the internal User-Agent string for use. This requires a
  * {@link Context} to pull the package name and version number for this
  * application.
  */
 public static void prepareUserAgent(Context context) {
  try {
   // Read package name and version number from manifest
   PackageManager manager = context.getPackageManager();
   PackageInfo info = manager.getPackageInfo(context.getPackageName(), 0);
   sUserAgent = String.format(context.getString(R.string.template_user_agent),
     info.packageName, info.versionName);

  } catch(NameNotFoundException e) {
   Log.e(TAG, "Couldn't find package information in PackageManager", e);
  }
 }

 /**
  * Read and return the content for a specific Wiktionary page. This makes a
  * lightweight API call, and trims out just the page content returned.
  * Because this call blocks until results are available, it should not be
  * run from a UI thread.
  *
  * @param title The exact title of the Wiktionary page requested.
  * @param expandTemplates If true, expand any wiki templates found.
  * @return Exact content of page.
  * @throws ApiException If any connection or server error occurs.
  * @throws ParseException If there are problems parsing the response.
  */
 public static String getPageContent(String title, boolean expandTemplates)
   throws ApiException, ParseException {
  // Encode page title and expand templates if requested
  String encodedTitle = Uri.encode(title);
  String expandClause = expandTemplates ? WIKTIONARY_EXPAND_TEMPLATES : "";

  // Query the API for content
  String content = getUrlContent(String.format(WIKTIONARY_PAGE,
    encodedTitle, expandClause));
  try {
   // Drill into the JSON response to find the content body
   JSONObject response = new JSONObject(content);
   JSONObject query = response.getJSONObject("query");
   JSONObject pages = query.getJSONObject("pages");
   JSONObject page = pages.getJSONObject((String) pages.keys().next());
   JSONArray revisions = page.getJSONArray("revisions");
   JSONObject revision = revisions.getJSONObject(0);
   return revision.getString("*");
  } catch (JSONException e) {
   throw new ParseException("Problem parsing API response", e);
  }
 }

 /**
  * Pull the raw text content of the given URL. This call blocks until the
  * operation has completed, and is synchronized because it uses a shared
  * buffer {@link #sBuffer}.
  *
  * @param url The exact URL to request.
  * @return The raw content returned by the server.
  * @throws ApiException If any connection or server error occurs.
  */
 protected static synchronized String getUrlContent(String url) throws ApiException {
  if (sUserAgent == null) {
   throw new ApiException("User-Agent string must be prepared");
  }

  // Create client and set our specific user-agent string
  HttpClient client = new DefaultHttpClient();
  HttpGet request = new HttpGet(url);
  request.setHeader("User-Agent", sUserAgent);

  try {
   HttpResponse response = client.execute(request);

   // Check if server response is valid
   StatusLine status = response.getStatusLine();
   if (status.getStatusCode() != HTTP_STATUS_OK) {
    throw new ApiException("Invalid response from server: " +
      status.toString());
   }

   // Pull content stream from response
   HttpEntity entity = response.getEntity();
   InputStream inputStream = entity.getContent();

   ByteArrayOutputStream content = new ByteArrayOutputStream();

   // Read response into a buffered stream
   int readBytes = 0;
   while ((readBytes = inputStream.read(sBuffer)) != -1) {
    content.write(sBuffer, 0, readBytes);
   }

   // Return result from buffered stream
   return new String(content.toByteArray());
  } catch (IOException e) {
   throw new ApiException("Problem communicating with API", e);
  }
 }
}


import android.app.PendingIntent;
import android.app.Service;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.IBinder;
import android.text.format.Time;
import android.util.Log;
import android.widget.RemoteViews;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Define a simple widget that shows the Wiktionary "Word of the day." To build
 * an update we spawn a background {@link Service} to perform the API queries.
 */
public class WordWidget extends AppWidgetProvider {
 @Override
 public void onUpdate(Context context, AppWidgetManager appWidgetManager,
   int[] appWidgetIds) {
  // To prevent any ANR timeouts, we perform the update in a service
  context.startService(new Intent(context, UpdateService.class));
 }

 public static class UpdateService extends Service {
  @Override
  public void onStart(Intent intent, int startId) {
   // Build the widget update for today
   RemoteViews updateViews = buildUpdate(this);

   // Push update for this widget to the home screen
   ComponentName thisWidget = new ComponentName(this, WordWidget.class);
   AppWidgetManager manager = AppWidgetManager.getInstance(this);
   manager.updateAppWidget(thisWidget, updateViews);
  }

  /**
   * Build a widget update to show the current Wiktionary
   * "Word of the day." Will block until the online API returns.
   */
  public RemoteViews buildUpdate(Context context) {
   // Pick out month names from resources
   Resources res = context.getResources();
   String[] monthNames = res.getStringArray(R.array.month_names);

   // Find current month and day
   Time today = new Time();
   today.setToNow();

   // Build today's page title, like "Wiktionary:Word of the day/March 21"
   String pageName = res.getString(R.string.template_wotd_title,
     monthNames[today.month], today.monthDay);
   RemoteViews updateViews = null;
   String pageContent = "";

   try {
    // Try querying the Wiktionary API for today's word
    SimpleWikiHelper.prepareUserAgent(context);
    pageContent = SimpleWikiHelper.getPageContent(pageName, false);
   } catch (ApiException e) {
    Log.e("WordWidget", "Couldn't contact API", e);
   } catch (ParseException e) {
    Log.e("WordWidget", "Couldn't parse API response", e);
   }

   // Use a regular expression to parse out the word and its definition
   Pattern pattern = Pattern.compile(SimpleWikiHelper.WORD_OF_DAY_REGEX);
   Matcher matcher = pattern.matcher(pageContent);
   if (matcher.find()) {
    // Build an update that holds the updated widget contents
    updateViews = new RemoteViews(context.getPackageName(), R.layout.widget_word);

    String wordTitle = matcher.group(1);
    updateViews.setTextViewText(R.id.word_title, wordTitle);
    updateViews.setTextViewText(R.id.word_type, matcher.group(2));
    updateViews.setTextViewText(R.id.definition, matcher.group(3).trim());

    // When user clicks on widget, launch to Wiktionary definition page
    String definePage = res.getString(R.string.template_define_url,
      Uri.encode(wordTitle));
    Intent defineIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(definePage));
    PendingIntent pendingIntent = PendingIntent.getActivity(context,
      0 /* no requestCode */, defineIntent, 0 /* no flags */);
    updateViews.setOnClickPendingIntent(R.id.widget, pendingIntent);

   } else {
    // Didn't find word of day, so show error message
    updateViews = new RemoteViews(context.getPackageName(), R.layout.widget_message);
    CharSequence errorMessage = context.getText(R.string.widget_error);
    updateViews.setTextViewText(R.id.message, errorMessage);
   }
   return updateViews;
  }

  @Override
  public IBinder onBind(Intent intent) {
   // We don't need to bind to this service
   return null;
  }
 }
}

[ Read More ]
Read more...
Saturday, October 20, 2012

App in android for random quote generation

Posted by Raju Gupta at 3:05 AM – 1 comments
 

the class data helper establishes connection with database code generator inserts the quotes with keywords in database randomcodes class toasts the random quote

import android.app.Activity;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class RandomCodes extends  ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        String[] category = getResources().getStringArray(R.array.category_array);
     setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, category));

     final ListView lv = getListView();
     lv.setTextFilterEnabled(true);
    
     lv.setOnItemClickListener(new OnItemClickListener() {
    @Override
       public void onItemClick(AdapterView<?> parent, View view,
           int position, long id) {
         // When clicked, show a toast with the TextView text
        // Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
         //Toast.LENGTH_SHORT).show();
       
       Intent switchIntent= new Intent(getBaseContext(),CodeGenerator.class);
      
     switchIntent.putExtra("myKey",((TextView) view).getText().toString());
     
     startActivity(switchIntent);
     
     
       }
     });
   // Button random=(Button)findViewById(R.id.Button01);
    
    
    }
}



import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class CodeGenerator extends Activity {
 private Datahelper dh;
 private TextView output;
 String category;
 String quote; 
  @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.db);
         this.output = (TextView) this.findViewById(R.id.out_text);
          System.out.println("hello");
         this.dh = new Datahelper(this);
         this.dh.deleteAll();
         this.dh.insert("Fortune and love favor the brave.","Miscellinious");
         this.dh.insert("Honesty is the best policy.","Honesty");
         this.dh.insert("Work is worship.","Wisdom");
         this.dh.insert("Health is Wealth","Health");
         this.dh.insert("The value of achievement lies in the achieving.---Albert Einstien","FamousPersonalities");
         this.dh.insert("If I loved you less, I might be able to talk about it more.","Love");
         this.dh.insert("Friendship is most beautiful thing in life","Friendship");
         this.dh.insert("If it's very painful for you to criticize your friends - you're safe in doing it. But if you take the slightest pleasure in it, that's the time to hold your tongue","Wisdom");
         this.dh.insert("Without hard work, nothing grows but weeds","Hardwork");
         this.dh.insert("We must become the change we want to see","Wisdom");
         this.dh.insert("A man's moral worth is not measured by what his religious beliefs are but rather by what emotional impulses he has received from Nature during his lifetime","Religious");
         this.dh.insert("Dream is some thing what we dont see in sleep it is something that does allow u to sleep.---APJ Abdul Kalam","FamousPersonalities");
         Bundle extras = getIntent().getExtras();
         category= extras.getString("myKey");
        System.out.println(category+"=================");
         
         List<String> names = this.dh.selectAll(quote,category);
          StringBuilder sb = new StringBuilder();
          
          sb.append("" +
            "The available quotes in category are:: nn");
          for (String name : names) {
             sb.append(name +"nn");
          }
           System.out.println("output of sb   ---->"+sb);
          Log.d("EXAMPLE", "names size - " + names.size());
           
          this.output.setText(sb.toString());
           
      }
 
}



import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteStatement;
import android.util.Log;
 
import java.util.ArrayList;
import java.util.List;
 
public class Datahelper {
 
   private static final String DATABASE_NAME = "codes_391184_new.db";
   private static final int DATABASE_VERSION = 1;
   private static final String 
[ Read More ]
Read more...
Friday, October 19, 2012

Implementing ListView-Adapter in Android

Posted by Raju Gupta at 11:02 PM – 0 comments
 

This simple example creates
a new to-do list application using native Android View controls.Some of the features used
to create this application, includes ArrayAdapters, ListViews, and KeyListeners.
following files are required ,
1.java file(Activity)
2.main.xml
3.Another xml holding the textview.(in this ex: simple.xml)

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <EditText android:id="@+id/edittext"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="enter to add to the list"/>
 <ListView android:id="@+id/listView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>
</LinearLayout>

Sample.xml

<?xml version="1.0" encoding="utf-8"?>

    <TextView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

public class to_do_list_activity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

       //get reference to UI widgets
       final EditText text=(EditText) findViewById(R.id.edittext);
        ListView list=(ListView) findViewById(R.id.listView);

        //arraylist to store the items
        final ArrayList<string> al=new ArrayList<string>();

        // Create the array adapter to bind the array to the listview
        final ArrayAdapter<string> aa=new ArrayAdapter<string>(this, R.layout.simple, al);

       // Bind the array adapter to the listview.
        list.setAdapter(aa);
        text.setOnKeyListener(new OnKeyListener() {
  
  public boolean onKey(View v, int keyCode, KeyEvent event) {
   // TODO Auto-generated method stub
   
   if(event.getAction()==KeyEvent.ACTION_DOWN)
   if(keyCode==KeyEvent.KEYCODE_DPAD_CENTER) 
   {
   al.add(0,text.getText().toString());
   aa.notifyDataSetChanged();
   text.setText("");
   return true;
  }
   return false;
  }
 });
    }
}
[ Read More ]
Read more...
Thursday, October 18, 2012

Extract all java classes from APK

Posted by Raju Gupta at 10:56 PM – 0 comments
 

Step 1: Download "dex2jar-0.0.7.8-SNAPSHOT.zip" package from web. This package can be downloaded from "http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.7.8-SNAPSHOT.zip&can=2&q="

Step 2: Extract the package into local folder.

Step 3: Run the following command from console.

> dex2jar "C:\Apk file path\apk file name"

Step 4: Use "jd-gui" (or any class extraction tool) to convert jar to java. Which can be downloaded from "http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/JD-GUI.shtml" OR download it from attached Artifacts   
[ Read More ]
Read more...
Wednesday, October 17, 2012

Get XML from APK

Posted by Raju Gupta at 10:54 PM – 0 comments
 

Step 1. Pass the <APK> file path+name in getIntents(...) method.
Step 2. Run the attached code.

This will convert all layout xmls and extract all files in same directory struture as defined.

import java.io.InputStream;
import java.util.jar.JarFile;

public class Test {

 public static void main(String[] args) {
  Test t = new Test();
  t.getIntents("C:\android\apk\TestPlayer.apk");
  System.out.println("complete ...");
 }

 public void getIntents(String path) {
    try {
      JarFile jf = new JarFile(path);
      InputStream is = jf.getInputStream(jf.getEntry("main.xml"));
      byte[] xml = new byte[is.available()];
      int br = is.read(xml);
      //Tree tr = TrunkFactory.newTree();
      System.out.println("calling ...");
      decompressXML(xml);
      //prt("XMLn"+tr.list());
    } catch (Exception ex) {
     ex.printStackTrace();
      //console.log("getIntents, ex: "+ex);  ex.printStackTrace();
    }
  } // end of getIntents

 
 
 
 
 // decompressXML -- Parse the 'compressed' binary form of Android XML docs 
 // such as for AndroidManifest.xml in .apk files
 public static int endDocTag = 0x00100101;
 public static int startTag =  0x00100102;
 public static int endTag =    0x00100103;
 public void decompressXML(byte[] xml) {
 // Compressed XML file/bytes starts with 24x bytes of data,
 // 9 32 bit words in little endian order (LSB first):
 //   0th word is 03 00 08 00
 //   3rd word SEEMS TO BE:  Offset at then of StringTable
 //   4th word is: Number of strings in string table
 // WARNING: Sometime I indiscriminently display or refer to word in 
 //   little endian storage format, or in integer format (ie MSB first).
 int numbStrings = LEW(xml, 4*4);

 // StringIndexTable starts at offset 24x, an array of 32 bit LE offsets
 // of the length/string data in the StringTable.
 int sitOff = 0x24;  // Offset of start of StringIndexTable

 // StringTable, each string is represented with a 16 bit little endian 
 // character count, followed by that number of 16 bit (LE) (Unicode) chars.
 int stOff = sitOff + numbStrings*4;  // StringTable follows StrIndexTable

 // XMLTags, The XML tag tree starts after some unknown content after the
 // StringTable.  There is some unknown data after the StringTable, scan
 // forward from this point to the flag for the start of an XML start tag.
 int xmlTagOff = LEW(xml, 3*4);  // Start from the offset in the 3rd word.
 // Scan forward until we find the bytes: 0x02011000(x00100102 in normal int)
 for (int ii=xmlTagOff; ii<xml.length-4; ii+=4) {
   if (LEW(xml, ii) == startTag) { 
     xmlTagOff = ii;  break;
   }
 } // end of hack, scanning for start of first start tag

 // XML tags and attributes:
 // Every XML start and end tag consists of 6 32 bit words:
 //   0th word: 02011000 for startTag and 03011000 for endTag 
 //   1st word: a flag?, like 38000000
 //   2nd word: Line of where this tag appeared in the original source file
 //   3rd word: FFFFFFFF ??
 //   4th word: StringIndex of NameSpace name, or FFFFFFFF for default NS
 //   5th word: StringIndex of Element Name
 //   (Note: 01011000 in 0th word means end of XML document, endDocTag)

 // Start tags (not end tags) contain 3 more words:
 //   6th word: 14001400 meaning?? 
 //   7th word: Number of Attributes that follow this tag(follow word 8th)
 //   8th word: 00000000 meaning??

 // Attributes consist of 5 words: 
 //   0th word: StringIndex of Attribute Name's Namespace, or FFFFFFFF
 //   1st word: StringIndex of Attribute Name
 //   2nd word: StringIndex of Attribute Value, or FFFFFFF if ResourceId used
 //   3rd word: Flags?
 //   4th word: str ind of attr value again, or ResourceId of value

 // TMP, dump string table to tr for debugging
 //tr.addSelect("strings", null);
 //for (int ii=0; ii<numbStrings; ii++) {
 //  // Length of string starts at StringTable plus offset in StrIndTable
 //  String str = compXmlString(xml, sitOff, stOff, ii);
 //  tr.add(String.valueOf(ii), str);
 //}
 //tr.parent();

 // Step through the XML tree element tags and attributes
 int off = xmlTagOff;
 int indent = 0;
 int startTagLineNo = -2;
 while (off < xml.length) {
   int tag0 = LEW(xml, off);
   //int tag1 = LEW(xml, off+1*4);
   int lineNo = LEW(xml, off+2*4);
   //int tag3 = LEW(xml, off+3*4);
   int nameNsSi = LEW(xml, off+4*4);
   int nameSi = LEW(xml, off+5*4);

   if (tag0 == startTag) { // XML START TAG
     int tag6 = LEW(xml, off+6*4);  // Expected to be 14001400
     int numbAttrs = LEW(xml, off+7*4);  // Number of Attributes to follow
     //int tag8 = LEW(xml, off+8*4);  // Expected to be 00000000
     off += 9*4;  // Skip over 6+3 words of startTag data
     String name = compXmlString(xml, sitOff, stOff, nameSi);
     //tr.addSelect(name, null);
     startTagLineNo = lineNo;

     // Look for the Attributes
     StringBuffer sb = new StringBuffer();
     for (int ii=0; ii<numbAttrs; ii++) {
       int attrNameNsSi = LEW(xml, off);  // AttrName Namespace Str Ind, or FFFFFFFF
       int attrNameSi = LEW(xml, off+1*4);  // AttrName String Index
       int attrValueSi = LEW(xml, off+2*4); // AttrValue Str Ind, or FFFFFFFF
       int attrFlags = LEW(xml, off+3*4);  
       int attrResId = LEW(xml, off+4*4);  // AttrValue ResourceId or dup AttrValue StrInd
       off += 5*4;  // Skip over the 5 words of an attribute

       String attrName = compXmlString(xml, sitOff, stOff, attrNameSi);
       String attrValue = attrValueSi!=-1
         ? compXmlString(xml, sitOff, stOff, attrValueSi)
         : "resourceID 0x"+Integer.toHexString(attrResId);
       sb.append(" "+attrName+"=""+attrValue+""");
       //tr.add(attrName, attrValue);
     }
     prtIndent(indent, "<"+name+sb+">");
     indent++;

   } else if (tag0 == endTag) { // XML END TAG
     indent--;
     off += 6*4;  // Skip over 6 words of endTag data
     String name = compXmlString(xml, sitOff, stOff, nameSi);
     prtIndent(indent, "</"+name+">  (line "+startTagLineNo+"-"+lineNo+")");
     //tr.parent();  // Step back up the NobTree

   } else if (tag0 == endDocTag) {  // END OF XML DOC TAG
     break;

   } else {
     System.out.println("  Unrecognized tag code '"+Integer.toHexString(tag0)
       +"' at offset "+off);
     break;
   }
 } // end of while loop scanning tags and attributes of XML tree
 System.out.println("    end at offset "+off);
 } // end of decompressXML


 public String compXmlString(byte[] xml, int sitOff, int stOff, int strInd) {
   if (strInd < 0) return null;
   int strOff = stOff + LEW(xml, sitOff+strInd*4);
   return compXmlStringAt(xml, strOff);
 }


 public static String spaces = "                                             ";
 public void prtIndent(int indent, String str) {
  System.out.println(spaces.substring(0, Math.min(indent*2, spaces.length()))+str);
 }


 // compXmlStringAt -- Return the string stored in StringTable format at
 // offset strOff.  This offset points to the 16 bit string length, which 
 // is followed by that number of 16 bit (Unicode) chars.
 public String compXmlStringAt(byte[] arr, int strOff) {
   int strLen = arr[strOff+1]<<8&0xff00 | arr[strOff]&0xff;
   byte[] chars = new byte[strLen];
   for (int ii=0; ii<strLen; ii++) {
     chars[ii] = arr[strOff+2+ii*2];
   }
   return new String(chars);  // Hack, just use 8 byte chars
 } // end of compXmlStringAt


 // LEW -- Return value of a Little Endian 32 bit word from the byte array
 //   at offset off.
 public int LEW(byte[] arr, int off) {
   return arr[off+3]<<24&0xff000000 | arr[off+2]<<16&0xff0000
     | arr[off+1]<<8&0xff00 | arr[off]&0xFF;
 } // end of LEW


}
[ Read More ]
Read more...
Saturday, October 13, 2012

Sending SMS from the Android Application

Posted by Raju Gupta at 12:48 PM – 0 comments
 
"android.telephony.SmsManager" Class or "android.telephony.gsm.SmsManager" Class according to the SDK level of the device.
import java.lang.reflect.Method;
import java.util.ArrayList;

/**
 * This class implements the SMSSender interface, as defined in Common/DAL/SmsSenderI.h
 * 
 * Reflection feature is used to manage "android.telephony.SmsManager" Class or 
 * "android.telephony.gsm.SmsManager" Class according to the SDK level of the device.
 */
public class SmsSender
{
 /**
  * @brief the sendSMS operation.
  * 
  * The sendSMS operation sends an sms according to the address and the message itself.
  * 
  * @param the address
  * @param the message
  */
 public static int sendSMS(String sAddress, String sMessage)
 {
  int nRes = RMEError.ERMSuccess;

  try
  {
   Object oSmsManager;
   Method oGetDefaultMethod;
   Method oSendMultipartTextMessageMethod;
   Method oDivideMessageMethod;
   ArrayList<String> oDevideMessage;

   if(Globals.API_LEVEL >= 4)
   {
    oSmsManager = Class.forName("android.telephony.SmsManager");
   }
   else
   {
    oSmsManager = Class.forName("android.telephony.gsm.SmsManager");
   }

   oGetDefaultMethod = ((Class)oSmsManager).getMethod("getDefault", (Class[]) null);
   oSendMultipartTextMessageMethod = ((Class)oSmsManager).getMethod("sendMultipartTextMessage", new Class[] {String.class, String.class, ArrayList.class, ArrayList.class, ArrayList.class});
   oDivideMessageMethod = ((Class)oSmsManager).getMethod("divideMessage", new Class[] {String.class});

   oSmsManager = oGetDefaultMethod.invoke(oSmsManager);
   oDevideMessage = (ArrayList<String>)oDivideMessageMethod.invoke(oSmsManager, sMessage);
   oSendMultipartTextMessageMethod.invoke(oSmsManager, sAddress, null, oDevideMessage, null, null);
  }
  catch (Exception e)
  {

  }

  return nRes;
 }
}
[ Read More ]
Read more...
Thursday, October 11, 2012

How to create Drop Down in Android

Posted by Raju Gupta at 2:04 PM – 0 comments
 
It will helps in creating a dynamic drop down in the xml(i.e for font end) and helps in selecting the particular item in the dropdown dynimally. For dynamic selection of items in dropdown the code is written in .java file


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


<Spinner android:id="@+id/spinner"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:prompt="@string/account_prompt"
 android:minWidth="180px" 
 android:layout_below="@+id/accimage" /> 



<?xml version="1.0" encoding="utf-8" ?> 
 <resources>
  <string name="hello">Hello World, PersonActivity!</string> 
  <string name="app_name">P2P</string> 
  <string name="account_prompt">Select Account</string> 
 <string-array name="accounts_array">
  <item>Saving Account</item> 
  <item>Current Account</item> 
  <item>Demat Account</item> 
  </string-array>
  </resources>

//.java file::: For dynamic selection on items in dropdown

import android.view.View;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

public class SpinnerActivity implements OnItemSelectedListener {

 @Override
 public void onItemSelected(AdapterView<?> PersonActivity, View view, int pos, 
   long id) {
  Toast.makeText(PersonActivity.getContext(), "The acounts" +  PersonActivity.getItemAtPosition(pos).toString(),
    Toast.LENGTH_LONG).show();
  
 }

 @Override
 public void onNothingSelected(AdapterView<?> PersonActivity) {
  //Do nothing
  
 }   
 
}
[ Read More ]
Read more...

Android Page Navigation

Posted by Raju Gupta at 1:58 PM – 0 comments
 
This Code snippet tells how to navigate from one page to another page in android.
public class FirstScreen extends Activity {

 Private Button button;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // get button from xml
  setNavigation();
 }

 public void setNavigation() {
  OnClickListener buttonListener = new OnClickListener() {
  
   @Override
   public void onClick(View v) {
    String key1, key2;
    String value1, value2;
    // get the values
    Intent i = new Intent(FirstScreen.this, SecondScreen.class);
    i.putExtra(key1, value1);
    i.putExtra(key2, value2);
    startActivity(i);
   }
  };
  button.setOnClickListener(buttonListener);
 }
}

public void SecondScreen extends Activity {
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  
  String value1 = getIntent().getStringExtra(key1);
  String value2 = getIntent().getStringExtra(key2);
 }
}




[ Read More ]
Read more...
Wednesday, October 10, 2012

To retrieve the cell info for Android device

Posted by Raju Gupta at 1:48 PM – 0 comments
 

Information has been extracted from TelephonyManager. TelephonyManager provides access to information about the telephony services on the device. Applications can use the methods in this class to determine telephony services and states, as well as to access some types of subscriber information

public static int[] getCellInfo()
   {
      // VARs
      int[] oRes = new int[5];
      Context oContext = Globals.m_oContext;
      TelephonyManager oTelManager = (TelephonyManager)oContext.getSystemService(Context.TELEPHONY_SERVICE);
      
      try
      {
         // Retrieve MCC and MNC
         String sMCC_MNC = oTelManager.getNetworkOperator();
         if ( (sMCC_MNC != null) && (sMCC_MNC.length() >= 5) ) // It contains numeric name (MCC+MNC) of current registered operator
         {
            oRes[1] = Integer.parseInt(sMCC_MNC.substring(0, 3));
            oRes[2] = Integer.parseInt(sMCC_MNC.substring(3));
         }
         
         // Retrieve LAC and CellID
         CellLocation oCell = oTelManager.getCellLocation();
         if (oCell instanceof GsmCellLocation)
         {
            oRes[3] =  ((GsmCellLocation)oCell).getLac();
            oRes[4] =  ((GsmCellLocation)oCell).getCid();
         }
         
        }
      catch (Exception e)
      {
         
      }

      return oRes;
   }
}



[ Read More ]
Read more...

Creating the enrty in the agenda for Android devices.

Posted by Raju Gupta at 1:43 PM – 0 comments
 
ContentResolver class is used to add the agenda. This will work for all the android SDK i.e. 1.5 and above. Offset for the timezone has been added so that it should work irrespective of UTC timezone.
public static int createEntry(String sEntryText, long nStartTime)
{
 // VARs
 Uri oUri;
 // Add the timezone offset to the UTC time
 nStartTime -= TimeZone.getDefault().getOffset(System.currentTimeMillis()) / 1000;

 if(Globals.API_LEVEL >= 8)
 {
  oUri = EVENTS_CONTENT_URI_LEVEL_8;
 }
 else
 {
  oUri = EVENTS_CONTENT_URI;
 }

 ContentResolver oContentResolver = Globals.m_oRichMediaDriver.m_oActivity.getContentResolver(); 

 // Create the calendar entry
 ContentValues oValues = new ContentValues();     
 oValues.put(EVENTS_CALENDAR_ID, 1);   
 oValues.put(EVENTS_DT_START, nStartTime * 1000);
 oValues.put(EVENTS_DESCRIPTION, sEntryText);
 // Also define the title field
 oValues.put(EVENTS_TITLE, sEntryText);

 try
 {
  // Insert the new calendar entry in the calendar of the device.
  oContentResolver.insert(oUri, oValues); 
 }
 catch (Exception e)
 {

 }

}

[ Read More ]
Read more...
Tuesday, October 9, 2012

Test Application for Samsung Android devices

Posted by Raju Gupta at 1:39 PM – 0 comments
 
This test application write the traces from device to confirm the device behaviour.


import java.io.File;

import android.app.Activity;
import android.os.Bundle;

public class PreCachingIssueApp extends Activity
{
   private String m_sAppDir = null;
   
   public void onCreate(Bundle savedInstanceState)
   {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      try
      {
         m_sAppDir = getPackageManager().getApplicationInfo(getPackageName(), 0).dataDir + "/files/";

         File oInstallDir = new File(m_sAppDir);
         
         if (!oInstallDir.exists())
         {
            oInstallDir.mkdir();
         }
         else
         {
            android.util.Log.i("PreCachingIssue", "last modified date of the private data dir: "+oInstallDir.lastModified());
         }
      }
      catch (Exception e)
      {
      }
   }
}

[ Read More ]
Read more...
Monday, October 8, 2012

Color Picker from Image in Android

Posted by Raju Gupta at 1:33 PM – 0 comments
 
It implements OnTouch listener, and by using MotionEvent object gets the co-ordinates of touch point. These co-ordinates are used to get color from Image.
// Step 1: create xml layout containing a linear layout with Image view & linear layout

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" android:id="@+id/linearLayout"
 android:layout_height="fill_parent" android:layout_width="fill_parent"
 android:clickable="false">
 <ImageView android:id="@+id/imgView" android:layout_width="fill_parent"
  android:layout_height="380dip"></ImageView>
 <LinearLayout android:orientation="horizontal"
  android:layout_width="fill_parent" android:id="@+id/linearbaseRow"
  android:background="@color/white" android:gravity="bottom"
  android:layout_height="50dip">
 </LinearLayout>

</LinearLayout>


//Step 2: in java code, implement a OnTouch listener  and display color.

public class ColorPicker extends Activity {

 private final int DIALOG_SINGLE_CHOICE = 0;
 LinearLayout linearlayout, linearBaseRow;
 ImageView imgView, showColor;
 int color = 0;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.color_picker_layout);

  linearlayout = (LinearLayout) findViewById(R.id.linearLayout);
  linearBaseRow = (LinearLayout) findViewById(R.id.linearbaseRow);
  imgView = (ImageView) findViewById(R.id.imgView);

  imgView.setBackgroundResource(R.drawable.backgroundimage);
 }

@Override
 public boolean onTouchEvent(MotionEvent event) { 
  try {
   //get access to base layout

   View tempView = linearlayout.getRootView();
   tempView.setDrawingCacheEnabled(true);//enable cache

   Bitmap temBitmap = tempView.getDrawingCache(); //get cache
   color = temBitmap.getPixel((int) event.getX(), (int) event
     .getY());
   showColor();
  } catch (Exception Ex) {

  }
  return true;
 }

 private void showColor(){
  linearBaseRow.setBackgroundColor(color);
 }
@Override
 protected void onDestroy() {
  imgView = null;
  dialog = null;
  super.onDestroy();
 }

}

[ Read More ]
Read more...

Image Switcher & Gallery in Android

Posted by Raju Gupta at 1:22 PM – 1 comments
 

Step 1 : create a simple Linear-layout with an ImageSwitcher & a gallery view.
Step 2: include neccessary animation xml files , like fade in, fade out.   

public class MyImageSwitcher extends Activity implements
        AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory {
 
// create array of thumbnail & image Ids 
private Integer[] mThumbIds = {  
      R.drawable.homeapp1,R.drawable.homeapp3,R.drawable.homeapp4};
    private Integer[] mImageIds = {R.drawable.homeapp1,R.drawable.homeapp3,R.drawable.homeapp4};
 
 String category;
 ViewFlipper mFlipper;
  private ImageSwitcher mSwitcher;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.image_switcher_1);

        mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
        mSwitcher.setFactory(this);
        mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
                android.R.anim.fade_in));
        mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
                android.R.anim.fade_out));

        Gallery g = (Gallery) findViewById(R.id.gallery);
        g.setAdapter(new ImageAdapter(this));
        g.setOnItemSelectedListener(this);
    }

    public void onItemSelected(AdapterView parent, View v, int position, long id) {   
     mSwitcher.setImageResource(mImageIds[position]);
    }

    public void onNothingSelected(AdapterView parent) {
    }

    public View makeView() {
        ImageView i = new ImageView(this);
        i.setBackgroundColor(0xFF000000);
        i.setScaleType(ImageView.ScaleType.FIT_CENTER);
        i.setLayoutParams(new  ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.FILL_PARENT));
        return i;
    }

    public class ImageAdapter extends BaseAdapter {
        //write your own implementation for returning Images from getView method

    }    
}
[ Read More ]
Read more...

Andorid application that listens to incoming sms

Posted by Raju Gupta at 1:06 PM – 0 comments
 

An android app that sits on a phone and listens to incoming sms and makes a http call in format

http://youtestserver.com/pushMsg.php?from=999999999&body=Hi there   
import java.lang.reflect.Array;
import java.util.*;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.provider.Settings.System;
import android.telephony.TelephonyManager.*;
import android.telephony.gsm.SmsManager;
import android.telephony.gsm.SmsMessage;
import android.util.Log;
import java.net.*;
import java.io.*;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.*;
import org.apache.http.client.methods.*;
import org.apache.http.impl.client.DefaultHttpClient;

public class SMSIntentReceiver extends BroadcastReceiver
{

 //@Override
 public void onReceive(Context context, Intent intent)
 {
 try   
 {
  if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED"))
  {
   
    
    Bundle bundle = intent.getExtras();        
          SmsMessage[] msgs = null;
          String str = "";            
          if (bundle != null)
          {
              
              Object[] pdus = (Object[]) bundle.get("pdus");
              msgs = new SmsMessage[pdus.length];
              
              for (int i=0; i<msgs.length; i++)
              {
                  msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
                  
                  URL url = new URL("http://mytestserver.com/pushMsg.php?s=c0mputer&f="+URLEncoder.encode(msgs[i].getOriginatingAddress())+"&r="+URLEncoder.encode(msgs[i].getMessageBody().toString()));
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setConnectTimeout(5000);    // 5 seconds
            conn.setRequestMethod("GET");       
            conn.connect();
            BufferedReader rd  = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = rd.readLine()) != null) {
                //System.out.println(line);
            }
            conn.disconnect();                  
              }
                            
          }
          
    }
   
  }
  catch(Exception e)
  {
   //java.lang.System.out.println("error occured");
  }

   }
  
}
[ Read More ]
Read more...

Accelerometer management for the Android devices

Posted by Raju Gupta at 12:44 PM – 0 comments
 
This code uses the different methods using SensorListener and SensorManager.
import android.content.Context;
import android.hardware.SensorListener;
import android.hardware.SensorManager;

/**
 * The accelerometer manager class
 */
public class AccelerometerManager implements SensorListener
{

 // The unique instance of AccelerometerManager
 private static AccelerometerManager m_oInstance = null; 

 // Object use to synchronize access to the data
 private static Object m_oLock = new Object();

 // Current acceleration on x, y and z axis
 private static float m_fX;
 private static float m_fY;
 private static float m_fZ;

 // Is the accelerometer manager started?
 private static boolean m_bIsStarted = false;

 /**
  * Initialize the accelerometer manager
  * CAUTION : This method must be called before any call to the getX/Y/Z methods
  */
 public static void initialize()
 {
  if (m_bIsStarted)
  {
   return;
  }
  SensorManager oSensorManager =  (SensorManager)Globals.m_oRichMediaDriver.m_oContext.getSystemService(Context.SENSOR_SERVICE);
  m_oInstance = new AccelerometerManager();
  oSensorManager.registerListener(m_oInstance, SensorManager.SENSOR_ACCELEROMETER, SensorManager.SENSOR_DELAY_UI);

  m_bIsStarted = true;
 }

 /**
  * Release the accelerometer manager
  * CAUTION : This method must be called when the accelerometer is not needed anymore,
  *           else the system would continue to send acceleration events uselessly 
  * @param oContext the Context 
  */
 public static void release(Context oContext)
 {
  if (!m_bIsStarted)
  {
   return;
  }
  SensorManager oSensorManager =  (SensorManager)oContext.getApplicationContext().getSystemService(Context.SENSOR_SERVICE);
  oSensorManager.unregisterListener(m_oInstance);
  m_oInstance = null;

  m_bIsStarted = false;
 }

 /**
  * The onPause CB must be called when the Context is paused
  * @param oContext the Context
  */
 public static void onPause(Context oContext)
 {
  if (m_bIsStarted)
  {
   // Unregister listener
   SensorManager oSensorManager =  (SensorManager)oContext.getApplicationContext().getSystemService(Context.SENSOR_SERVICE);
   oSensorManager.unregisterListener(m_oInstance);
  }
 }

 /**
  * The onPause CB must be called when the Context is resumed
  * @param oContext the Context
  */
 public static void onResume(Context oContext)
 {
  if (m_bIsStarted)
  {
   // register listener
   SensorManager oSensorManager =  (SensorManager)oContext.getApplicationContext().getSystemService(Context.SENSOR_SERVICE);
   oSensorManager.registerListener(m_oInstance, SensorManager.SENSOR_ACCELEROMETER, SensorManager.SENSOR_DELAY_UI);
  }
 }

 /**
  * @return the deci-g acceleration in the x axis
  */
 public static int getX()
 {
  int nVal; 

  // Check if the accelerometer manager is already started
  initialize();

  synchronized(m_oLock)
  {
   nVal = (int)(100 * (m_fX/SensorManager.GRAVITY_EARTH)) ;
  }
  return nVal;
 }

 /**
  * @return the deci-g acceleration in the y axis
  */
 public static int getY()
 {
  int nVal; 

  // Check if the accelerometer manager is already started
  initialize();

  synchronized(m_oLock)
  {
   nVal = (int)(100 * (m_fY/SensorManager.GRAVITY_EARTH)) ;
  }
  return nVal;
 }

 /**
  * @return the deci-g acceleration in the z axis
  */
 public static int getZ()
 {
  int nVal; 

  // Check if the accelerometer manager is already started
  initialize();

  synchronized(m_oLock)
  {
   nVal = (int)(100 * (m_fZ/SensorManager.GRAVITY_EARTH)) ;
  }
  return nVal;
 }

 ////////////////////////
 // SensorListener part /
 ////////////////////////
 public void onAccuracyChanged(int sensor, int accuracy)
 {
 }

 public void onSensorChanged(int sensor, float[] values)
 {
  synchronized(m_oLock)
  {
   m_fX = values[SensorManager.DATA_X];
   m_fY = values[SensorManager.DATA_Y];
   m_fZ = values[SensorManager.DATA_Z];
  }
 }
}

[ Read More ]
Read more...

Alert box for Confirm

Posted by Raju Gupta at 12:40 PM – 0 comments
 
This code is used to display a alert box for confirming the data as well as saving the data in the database(SQLite) in Android application.Here we are having the two options as "Ok" and "Cancel" and using the methods as "PositiveButton(OK)" and "NegativeButton(Cancel)".Based up on this,data will be updated/saved in the database.
public class SampleDemoActivity
{
 final private String CLASS_NAME = "SampleDemoActivity";

 protected Button saveButton,clearButton;
 protected AlertDialog saveConfirmDialog,
 protected AlertDialog.Builder saveConfirmBuilder;

 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  //Initialize Activity
  super.onCreate(savedInstanceState);
 }
 public void setButtonListeners()
 {
  OnClickListener saveButtonClickListener = new OnClickListener()
  {

   @Override
   public void onClick(View v)
   {
    /*set the functionality for the cancel button*/
    saveConfirmBuilder.setNegativeButton("NO",new DialogInterface.OnClickListener(){
     @Override
     public void onCLick(DialogInterface dialog, int which)
     {
      //Cancel button clicked;data will not be updated;
     }
    });
    /*set the fucntionality for the OK button*/
    saveConfirmBuilder.setPositiveButton("YES",new DialogInterface.OnClickListener(){
     @Override
     public void onCLick(DialogInterface dialog, int which)
     {
      saveData();
      //Data Saved;
     }
    });
    /*Create and display the call confirm dialog for the builder*/
    saveConfirmDialog = saveCOnfirmBuilder.create();
    saveConfirmDialog.show():
   }
  };

[ Read More ]
Read more...
Sunday, October 7, 2012

3D Rotation in Android

Posted by Raju Gupta at 1:19 PM – 0 comments
 

Android provides Animation API. By using we can create custom animations . Android sample provides Animation classes for some standard types like 3D rotation, Push up , shake etc.

Step 1 : include Rotate3dAnimation.java file in your package.
Step 2 : create a reportview.xml as layout file.
Step 3 : below is code to provide 360 degree rotation and display a html file from assets folder.


XML file Layout code  

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/container" android:layout_width="match_parent"
 android:layout_height="match_parent">

 <WebView android:layout_height="fill_parent"
  android:layout_width="fill_parent" android:id="@+id/webAnim1"></WebView>
 <WebView android:id="@+id/webAnim" android:layout_height="fill_parent"
  android:layout_width="fill_parent"></WebView>

</FrameLayout>

public class HTMLReportDisplay extends Activity {

 private ViewGroup mContainer;
 private WebView mWebView;
 private WebView mWebView1;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.reportview);

  mContainer = (ViewGroup) findViewById(R.id.container);
  mWebView = (WebView) findViewById(R.id.webAnim);
  mWebView1 = (WebView) findViewById(R.id.webAnim1);

  String report = "name of html file from asset folder";
  mWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
  mWebView.getSettings().setBuiltInZoomControls(true);
  mWebView.loadUrl("file:///android_asset/" + report + ".html");
  

  mWebView1.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
  mWebView1.getSettings().setBuiltInZoomControls(true);
  mWebView1.loadUrl("file:///android_asset/" + report + ".html");
  /** Since we are caching large views, we want to keep their cache
    between each animation*/
  mContainer
    .setPersistentDrawingCache(ViewGroup.PERSISTENT_ANIMATION_CACHE);

  applyRotation(1, 90, 0);
 }

 /**
  * Setup a new 3D rotation on the container view.
  * 
  * @param position
  *            the item that was clicked to show a picture, or -1 to show the
  *            list
  * @param start
  *            the start angle at which the rotation must begin
  * @param end
  *            the end angle of the rotation
  */
 private void applyRotation(int position, float start, float end) {
  // Find the center of the container
  final float centerX = mContainer.getWidth() / 2.0f;
  final float centerY = mContainer.getHeight() / 2.0f;
  /** Create a new 3D rotation with the supplied parameter
   The animation listener is used to trigger the next animation*/
  final Rotate3dAnimation rotation = new Rotate3dAnimation(start, end,
    centerX, centerY, 310.0f, true);
  rotation.setDuration(400);
  rotation.setFillAfter(true);
  rotation.setInterpolator(new AccelerateInterpolator());
  rotation.setAnimationListener(new DisplayNextView(position));

  mContainer.startAnimation(rotation);
 }

 /**
  * this function is called when any key is pressed.
  */
 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
  switch (keyCode) {
  /** Check if back button key is pressed */
  case KeyEvent.KEYCODE_BACK:
   applyRotation(-1, 180, 0);
   new Handler().postDelayed(new Runnable() {

    public void run() {
     finishActivity();

    }
   }, 300);

   break;
  }
  return super.onKeyDown(keyCode, event);
 }

 private void finishActivity() {
  finish();
 }

 /**
  * This class listens for the end of the first half of the animation. It
  * then posts a new action that effectively swaps the views when the
  * container is rotated 90 degrees and thus invisible.
  */
 private final class DisplayNextView implements Animation.AnimationListener {
  private final int mPosition;

  public DisplayNextView(int position) {
   mPosition = position;
  }

  public void onAnimationStart(Animation animation) {
  }

  public void onAnimationEnd(Animation animation) {
   mContainer.post(new SwapViews(mPosition));
  }

  public void onAnimationRepeat(Animation animation) {
  }
 }

 /**
  * This class is responsible for swapping the views and start the second
  * half of the animation.
  */
 private final class SwapViews implements Runnable {
  private final int mPosition;

  public SwapViews(int position) {
   mPosition = position;
  }

  public void run() {
   final float centerX = mContainer.getWidth() / 2.0f;
   final float centerY = mContainer.getHeight() / 2.0f;
   Rotate3dAnimation rotation;

   if (mPosition > -1) {
    mWebView.setVisibility(View.GONE);
    mWebView1.setVisibility(View.VISIBLE);
    mWebView1.requestFocus();

    rotation = new Rotate3dAnimation(180, 0, centerX, centerY,
      310.0f, false);
   } else {
    mWebView1.setVisibility(View.GONE);
    mWebView.setVisibility(View.VISIBLE);
    mWebView.requestFocus();

    rotation = new Rotate3dAnimation(90, 0, centerX, centerY,
      310.0f, false);
   }

   rotation.setDuration(500);
   rotation.setFillAfter(true);
   rotation.setInterpolator(new DecelerateInterpolator());

   mContainer.startAnimation(rotation);
  }
 }
}

[ Read More ]
Read more...

Custom Bar Control for Android using Java

Posted by Raju Gupta at 1:15 PM – 1 comments
 

The solution has customized bar control with lot of functions to set various features of control like color, percentage value.
The solution contains the source code for bar control that can be readily integrated to an Android project.


package com.sample.Applicationbar;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Paint.FontMetrics;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;


public class BarClass extends View {
 private Paint paint;
 private long total,covered;
  
 public BarClass(Context context, AttributeSet attrs) {
  super(context, attrs);
  // TODO Auto-generated constructor stub
 
  
  
 }
 public void onDraw(Canvas canvas) {
  String text="25";
  
  paint = new Paint();
  paint.setStyle(Paint.Style.FILL);
  paint.setColor(Color.TRANSPARENT);
  canvas.drawPaint(paint);
  //setBackgroundResource(R.drawable.background); - To set image as background
  paint.setColor(Color.DKGRAY);
  
  Log.v("Raj","Width="+getWidth());
  Log.v("Raj","Height="+getHeight());
  //Rect r = new Rect(10,10,90,90);
  Rect r = new Rect(2,2,getWidth()-2,getHeight()-20);
  canvas.drawRect(r, paint);
  //canvas.drawRect(getPaddingLeft(), getPaddingTop(), getPaddingRight(),getPaddingBottom(), paint);
  Log.v("Raj","getPaddingLeft()="+getPaddingLeft());
  Log.v("Raj","getPaddingRight()="+getPaddingRight());
  Log.v("Raj","getPaddingTop()="+getPaddingTop());
  Log.v("Raj","getPaddingBottom()="+getPaddingBottom());
  
  paint.setTextSize(getHeight()*0.1f);
  float xpos = (getWidth()-2-paint.measureText(text))/2;
  int height=20-2;
  FontMetrics fm = paint.getFontMetrics();
  float ypos = getHeight()-20 +2 + height/2-(fm.ascent + fm.descent) / 2;
  Log.v("Dinesh","paint.measureText(text)="+paint.measureText(text));
  canvas.drawText(text,xpos,ypos,paint);
 }
 
 public void setpercent (long total,long covered){
  this.total=total;
  this.covered=covered;
 }
 
}

[ Read More ]
Read more...
Saturday, October 6, 2012

Creating Layouts TableRows and TextViews dynamically in Android through java

Posted by Raju Gupta at 1:57 PM – 0 comments
 
We have to use "new" keyword to create objects dynamically
public class DynamicViews extends Activity {
 LinearLayout L1, L2;     // Created in xml
 LinearLayout L3;        // Created dynamically in java using "new" operator
 TableLayout TL;          // Created in xml;
 TableRow tr1, tr2, tr3;    // Created dynamically in java using "new" operator
 TextView t1, t2, t3, t4;   // Created dynamically in java using "new" operator

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  
  <-- setContentView( int ); -->

  <-- Get L1 from xml -->
  <-- Get L2 from xml -->

  t1 = new TextView(this);
  <-- t1.setters() -->
  L2.addView(t1);

  L3 = new LinearLayout(this);
  <-- L3.setters() -->
  L3.setOrientation(LinearLayout.VERTICAL);

  <-- Get TL from xml -->
  
  tr1 = new TableRow(this);
  tr2 = new TableRow(this);

  t2 = new TextView(this);
  <-- t2.setters() -->
  tr1.addView(t2);

  
  t3 = new TextView(this);
  <-- t3.setters() -->
  L3.addView(t3);
  t4 = new TextView(this);
  <-- t4.setters() -->
  L3.addView(t4);
  tr2.addView(L3);
  TL.addView(tr1);
  TL.addView(tr2);
  TL.addView(tr3);
 }
}

[ Read More ]
Read more...

Android SeekBar

Posted by Raju Gupta at 1:54 PM – 0 comments
 
Whenever the progress bar of SeekBar is moved, it will call the inbuild method of OnProgressChange(), inside which we can write our functionality
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class SeekBarDemo extends Activity implements OnSeekBarChangeListener, OnFocusChangeListener {
 
 SeekBar seekBar;
 EditText editText;

 @Override
 public void onCreate(Bundle savedInstance) {
  super.onCreate(savedInstance);

  <-- get seekBar and editTexts from xml -->

  // Set onClick Listeners
  seekBar.setOnSeekBarChangeListener(this);
  editText.setOnFocusChangeListener(this);

  // Initial setup
  editText.setText("2000.00");
  this.onFocusChange(editText, false);
 }

 // Whenever progress of seekbar is changed, this method will be called
 @Override
 public void onProgressChange(SeekBar seekBar, int progress, boolean fromUser) {
  if(fromUser) {
   int fieldValue = progress * 1000;
   editText.setText(String.format("%d", fieldValue));
  }
 }

 // This method wil be called once mouse is pressed on progress of seekbar 
 @Override 
 public void onStartTrackingTouch(SeekBar seekBar) {
  // TODO Auto-generated method stub (This method is defined in OnSeekBarChangeListener)
 }

 // This method wil be called once mouse is released from progress of seekbar
 @Override
 public void onStopTrackingTouch(SeekBar seekBar) {
  // TODO Auto-generated method stub (This method is defined in OnSeekBarChangeListener)
 }

 // Whenever EditText field is clicked, this method will be called
 @Override
 public void onFocusChange(View v, boolean hasFocus) {
  if(!hasFocus) {
   Double fieldValue = Double.valueOf(((EditText) v).getText().toString());
   int progress = (int) (fieldValue / 1000);
   seekBar.setProgress(progress);
  }
 } 
}

[ Read More ]
Read more...

Dialing phone number from Google Android Application

Posted by Raju Gupta at 1:38 PM – 0 comments
 
Android basic framework is used to call a number from Android application.


import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;

public class DialANumber extends Activity {
  EditText mEditText_number = null;
  LinearLayout mLinearLayout_no_button = null;
  Button mButton_dial = null;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mLinearLayout_no_button = new LinearLayout(this);

    mEditText_number = new EditText(this);
    mEditText_number.setText("9999999999");
    mLinearLayout_no_button.addView(mEditText_number);

    mButton_dial = new Button(this);
    mButton_dial.setText("Dial!");
    mLinearLayout_no_button.addView(mButton_dial);
    mButton_dial.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
        performDial();
      }
    });

    setContentView(mLinearLayout_no_button);
  }

  public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_CALL) {
      performDial();
      return true;
    }
    return false;
  }

  public void performDial(){
    if(mEditText_number!=null){
      try {
        startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + mEditText_number.getText())));
      } catch (Exception e) {
        e.printStackTrace();
      }
    }//if
  }
}
[ Read More ]
Read more...

Login Screen Creation using Android

Posted by Raju Gupta at 1:13 PM – 0 comments
 
This code snippet creates a login screen with 2 labels (Username, Password), corresponding 2 text boxes and 2 buttons (Login, Reset) using Android. All the above resources are defined in login.xml file. The events for Login and Reset button are handled and further database authentication can be enhanced from there.
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_height="270px"
xmlns:android="http://schemas.android.com/apk/res/android"
android:fitsSystemWindows="true" android:paddingBottom="0px" android:paddingLeft="0px" android:paddingRight="0px" android:paddingTop="0px" android:persistentDrawingCache="scrolling" android:layout_width="480px">
<TextView
android:id="@+id/widget1"
android:layout_width="wrap_content"
android:layout_height="20px"
android:text="User Name"
android:textStyle="bold"
android:layout_y="43px"
android:layout_x="110px" android:textColor="#FFFFFF">
</TextView>
<TextView
android:id="@+id/widget2"
android:layout_width="wrap_content"
android:layout_height="20px"
android:text="Password"
android:textStyle="bold"
android:layout_x="110px" android:textColor="#FFFFFF" android:layout_y="87px">
</TextView>
<EditText
android:id="@+id/userName"
android:layout_width="162px"
android:layout_x="191px"
android:textSize="12px" android:layout_y="33px" android:textStyle="bold" android:nextFocusDown="@+id/password" android:numeric="integer" android:layout_height="38px">
</EditText>
<EditText
android:id="@+id/password"
android:layout_width="162px"
android:password="true"
android:layout_x="190px"
android:textSize="12px" android:layout_height="38px" android:layout_y="77px">
</EditText>
<Button
android:id="@+id/submit"
android:text="Login"
android:textStyle="bold"
android:textSize="11sp" android:layout_width="71px" android:layout_y="126px" android:layout_x="197px" android:layout_height="32px" android:ellipsize="start">
</Button>
<Button
android:id="@+id/cancel"
android:layout_width="71px"
android:text="Reset"
android:textSize="12sp"
android:textStyle="bold"
android:layout_x="277px"
android:layout_y="126px" android:layout_height="32px">
</Button>
</AbsoluteLayout>

import android.app.Activity;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Login extends Activity {
 
 //Global declaration
 Button submit;
 Button reset;
 EditText username;
 EditText password;
 String uname=null;
 String pwd=null;


 String pwd=null;
 
 /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle b) {
        super.onCreate(b);
        setContentView(R.layout.login);
        
        username = (EditText) this.findViewById(R.id.userName);
        password = (EditText) this.findViewById(R.id.password);
  
        submit = (Button) this.findViewById(R.id.submit);
  submit.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) {
    authenticate();
   }
  });

  reset = (Button) this.findViewById(R.id.cancel);
  reset.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) {
    reset();
   }
  });
    }

    // Function to perform authentication using the entered values

    private void authenticate() {
     uname = username.getText().toString();
     pwd = password.getText().toString();     

   // Can perform checks with the input given from screen using uname and pwd
 }    
   
   // Function to clear the username and password fields

 private void reset() {
  username.setText("");
  password.setText("");
 }
}

[ Read More ]
Read more...

Add a Progress Bar to Android based Mobile Screens

Posted by Raju Gupta at 1:09 PM – 0 comments
 
The code snippet displays the Progress Bar in the Mobile Screen
// Additional Text Views are added to display the progress bar in the middle of the screen
progressbar.xml

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:gravity="center" android:orientation="vertical"  
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

  <TextView android:layout_width="fill_parent"
   android:layout_height="wrap_content" android:text="" />
  <ProgressBar android:id="@android:id/progress"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content" android:soundEffectsEnabled="true" />  
  <TextView android:layout_width="fill_parent"
   android:layout_height="wrap_content" android:text="" />
  <TextView android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:gravity="center"
   android:text="Launching Application.... " />
  
 </LinearLayout>



// Function to be written inside a Class extending Activity
     
        protected void onCreate(Bundle b) {
  super.onCreate(b);
  requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

         //  Layout for Progress Bar to be defined in progressbar.xml
  setContentView(R.layout.progressbar);

  getWindow().setFeatureInt(Window.FEATURE_INDETERMINATE_PROGRESS,
    Window.PROGRESS_VISIBILITY_ON);
  }
[ Read More ]
Read more...

Adding a button to Android based mobile screens

Posted by Raju Gupta at 11:47 AM – 0 comments
 

Button can be added to the screen in two ways. One is through XML and the other is through java.
Click event should be handled only in java. This related code should be written in onCreate() method.   

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
             android:layout_width="fill_parent" 
             android:layout_height="fill_parent"     
             android:orientation="vertical" >
           <Button android:id="@+id/button"  
                    android:layout_width="wrap_content"   
                    android:layout_height="wrap_content"  
                    android:text="Clear" />
</LinearLayout>

public void onCreate(Bundle b){
    Button clearbutton=(Button)findViewById(R.id.button); 
    OnClickListener clearButtonlistener = new OnClickListener(){
        public void onClick(View viewParam) {
             //Add OnclickEvent Handling logic at this part.
         }
   };
}
[ Read More ]
Read more...

Android Dynamically generating views

Posted by Raju Gupta at 11:42 AM – 0 comments
 
This code snippet will generate the textview and button at run time.
//The layout LinearLayout01 should be predefined.In this layout you add all the controls
         
         LinearLayout layout = (LinearLayout) findViewById(R.id.LinearLayout01); 
         for (int i = 2; i < 6; i++)
         { 
             TextView textView = new TextView(this); 
             //You can set the value depending on the condition
             textView.setText("Text View " + i); 
          LinearLayout.LayoutParams p = new 
          LinearLayout.LayoutParams( 
                     LinearLayout.LayoutParams.FILL_PARENT, 
                     LinearLayout.LayoutParams.WRAP_CONTENT 
              ); 
             layout.addView(textView, p); 
             Button buttonView = new Button(this); 
             buttonView.setText("Button " + i);
             layout.addView(buttonView, p); 
         } 

[ Read More ]
Read more...

Timezone converter

Posted by Raju Gupta at 11:40 AM – 0 comments
 
It converts the time for the places specified.
import java.util.*;
import java.text.*;
import java.util.Calendar;
import java.util.Hashtable;
import java.util.SimpleTimeZone;

import org.w3c.dom.Text;

import java.net.URISyntaxException;
import java.security.PublicKey;

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.Window;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.style.StyleSpan;
import android.view.View;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

public class TimeZone extends Activity {
 /** Called when the activity is first created. */
 GMTtable g1 = new GMTtable();
 TextView tv = null;
 ProgressDialogExample pd;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  // //////DATE////////
  final Spinner date = (Spinner) findViewById(R.id.date);
  ArrayAdapter<CharSequence> date_adpt = ArrayAdapter.createFromResource(
    this, R.array.dts, android.R.layout.simple_spinner_item);
  date_adpt
    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  date.setAdapter(date_adpt);

  // /MONTH///
  final Spinner month = (Spinner) findViewById(R.id.month);
  ArrayAdapter<CharSequence> month_adpt = ArrayAdapter
    .createFromResource(this, R.array.month,
      android.R.layout.simple_spinner_item);
  month_adpt
    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  month.setAdapter(month_adpt);

  // //YEAR/////

  final Spinner year = (Spinner) findViewById(R.id.year);
  ArrayAdapter<CharSequence> year_adpt = ArrayAdapter.createFromResource(
    this, R.array.year, android.R.layout.simple_spinner_item);
  year_adpt
    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  year.setAdapter(year_adpt);

  // //////TO TIME ZONE SPINNER//////

  final Spinner totimzone = (Spinner) findViewById(R.id.totimezone);
  ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(
    this, R.array.timezone, android.R.layout.simple_spinner_item);
  adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  totimzone.setAdapter(adapter1);

  // /////FROM TIME ZONE SPINNER/////
  final Spinner fromtimezone = (Spinner) findViewById(R.id.fromtimezone);
  ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(
    this, R.array.timezone, android.R.layout.simple_spinner_item);
  adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  fromtimezone.setAdapter(adapter2);
  // //////////////////////////////////

  // //////////////TIME///////////////////////

  // ///HOUR SPINNER
  final Spinner hour = (Spinner) findViewById(R.id.hour);
  ArrayAdapter<CharSequence> adapter3 = ArrayAdapter.createFromResource(
    this, R.array.hrs, android.R.layout.simple_spinner_item);
  adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  hour.setAdapter(adapter3);

  // ///MINUTE SPINNER////
  final Spinner minute = (Spinner) findViewById(R.id.minute);
  ArrayAdapter<CharSequence> adapter4 = ArrayAdapter.createFromResource(
    this, R.array.min, android.R.layout.simple_spinner_item);
  adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  minute.setAdapter(adapter4);

  // ////FORMAT SPINNER////
  final Spinner format = (Spinner) findViewById(R.id.format);
  ArrayAdapter<CharSequence> adapter5 = ArrayAdapter.createFromResource(
    this, R.array.format, android.R.layout.simple_spinner_item);
  adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  format.setAdapter(adapter5);

  // / BUTTON///

  final Button button = (Button) findViewById(R.id.button);
  button.setOnClickListener(new Button.OnClickListener() {
   public void onClick(View v) {

    int frm_tmz_pos = fromtimezone.getSelectedItemPosition();
    int to_tmz_pos = totimzone.getSelectedItemPosition();

    String to_time_str = (String) totimzone
      .getItemAtPosition(to_tmz_pos);
    String frm_time_str = (String) fromtimezone
      .getItemAtPosition(frm_tmz_pos);
    double to_val, frm_val;
    to_val = g1.getvalues(to_time_str);
    frm_val = g1.getvalues(frm_time_str);
    int format_pos = format.getSelectedItemPosition();
    String format_val = (String) format
      .getItemAtPosition(format_pos);
    int day_pos = date.getSelectedItemPosition();
    int month_pos = month.getSelectedItemPosition();
    int year_pos = year.getSelectedItemPosition();
    int day_val = Integer.parseInt((String) date
      .getItemAtPosition(day_pos));
    // int month_val
    // =Integer.parseInt((String)month.getItemAtPosition(month_pos));
    int year_val = Integer.parseInt((String) year
      .getItemAtPosition(year_pos));
    int hrs_pos = hour.getSelectedItemPosition();
    int min_pos = minute.getSelectedItemPosition();
    int hrs_val = Integer.parseInt((String) hour
      .getItemAtPosition(hrs_pos));
    int min_val = Integer.parseInt((String) minute
      .getItemAtPosition(min_pos));
    double min_val1 = (int) min_val;
    min_val1 = (min_val / 60);
    double tot_time = hrs_val + min_val1;
    double diff = to_val - frm_val;
    double con_factor = (19800000 * diff) - 19800000;
    hrs_val = hrs_val + (int) diff;
    min_val = min_val + (int) ((diff - (int) diff) * 60);

    if (min_val >= 60) {
     min_val -= 60;
     hrs_val += 1;

    } else if (min_val < 0) {
     min_val += 60;
     hrs_val -= 1;
    }

    String month_val = (String) month.getItemAtPosition(month_pos);
    tv = (TextView) findViewById(R.id.error);
    int flag = 0;

    /* VALIDATION OF DAYS AND MONTH */

    int leapyear_flag = 0;

    GregorianCalendar cal = new GregorianCalendar();
    if (cal.isLeapYear(year_val)) {
     leapyear_flag = 1;
     System.out.println("leapyear_flag=" + leapyear_flag);
    }

    else
     leapyear_flag = 0;

    String error = "";
    int errors = 0;

    if (((day_val == 31) && ((month_pos == 3) | (month_pos == 5)
      | (month_pos == 8) | (month_pos == 10)))
      | (((month_pos == 1) && ((leapyear_flag == 0) && (day_val > 28))
        | ((leapyear_flag == 1) && (day_val > 29))))) {

     if (((month_pos == 1) && ((leapyear_flag == 0) && (day_val == 29)))) {

      final Intent myIntent = new Intent(
        android.content.Intent.ACTION_VIEW, Uri
          .parse("geo:38.899533,-77.036476"));
      startActivity(myIntent);
      tv = (TextView) findViewById(R.id.result);
      tv.setText("");
      tv = (TextView) findViewById(R.id.error);
      error = "" + year_val + " IS NOT A LEAP YEAR";
      tv.setText(error);
     } else {

      tv = (TextView) findViewById(R.id.result);
      tv.setText("");
      tv = (TextView) findViewById(R.id.error);
      error = "" + month.getItemAtPosition(month_pos)
        + "  CAN NOT HAVE " + day_val + " DAYS";
      tv.setText(error);
      System.out
        .print("EITHER OF THE VALUES IN MONTH OR DAY IS WRONG");
     }

    } else {

     switch (format_pos) {
     case 0:
      if (hrs_val > 12) {
       hrs_val = hrs_val - 12;

       format_val = "PM";
      } else if (hrs_val < 0) {
       if (day_val == 1) {

        if ((day_val == 1)
          && ((month_pos - 1 == 3)
            | (month_pos - 1 == 5)
            | (month_pos - 1 == 8) | (month_pos - 1 == 10))) {
         day_val = 30;
         month_pos -= 1;
         hrs_val += 12;
         format_val = "PM";
        } else if (((day_val == 1) && ((month_pos - 1 == 0)
          | (month_pos - 1 == 2)
          | (month_pos - 1 == 4)
          | (month_pos - 1 == 6)
          | (month_pos - 1 == 7) | (month_pos - 1 == 9)))) {
         day_val = 31;
         month_pos -= 1;
         hrs_val += 12;
         format_val = "PM";

        } else if ((day_val == 1)
          && (month_pos - 1 < 0)) {
         year_val -= 1;
         day_val = 31;
         hrs_val += 12;
         month_pos = 11;
         format_val = "PM";
        }

        else if ((day_val == 1) && (month_pos - 1 == 1)) {
         if (leapyear_flag == 1) {
          day_val = 29;
          hrs_val += 12;
          month_pos -= 1;
          format_val = "PM";
         } else {
          day_val = 28;
          hrs_val += 12;
          month_pos -= 1;
          format_val = "PM";
         }
        }

       }

       else {
        day_val -= 1;
        hrs_val += 12;

        format_val = "PM";
       }

      }
      break;

     case 1:

      if (hrs_val > 12) {

       if ((flag != 1)
         && (day_val == 30)
         && ((month_pos == 3) | (month_pos == 5)
           | (month_pos == 8)
           | (month_pos == 10) | (month_pos == 7))) {

        format_val = "AM";
        day_val = 1;
        month_pos += 1;
        flag = 1;
       }
       if ((flag != 1)
         && ((month_pos == 3) | (month_pos == 5)
           | (month_pos == 8)
           | (month_pos == 10) | (month_pos == 7))) {
        hrs_val = hrs_val - 12;
        day_val += 1;
        flag = 1;
       }

       if ((flag != 1)
         && (day_val == 31)
         && ((month_pos == 0) | (month_pos == 2)
           | (month_pos == 4)
           | (month_pos == 6)
           | (month_pos == 7)
           | (month_pos == 9) | (month_pos == 11))) {
        hrs_val = hrs_val - 12;
        format_val = "AM";
        day_val = 1;
        flag = 1;
        if (month_pos == 11) {
         month_pos = 0;
         year_val += 1;
        } else
         month_pos += 1;
       } else if ((month_pos == 0) | (month_pos == 2)
         | (month_pos == 4) | (month_pos == 6)
         | (month_pos == 7) | (month_pos == 9)
         | (month_pos == 11)) {
        hrs_val = hrs_val - 12;
        format_val = "AM";
       }

       if ((flag != 1)
         && (month_pos == 1)
         && (((day_val == 28) && (leapyear_flag == 0)) | ((day_val == 29) && (leapyear_flag == 1)))) {
        hrs_val = hrs_val - 12;
        format_val = "AM";
        day_val = 1;
        month_pos += 1;
        flag = 1;
       }

       else if (flag != 1) {

        day_val += 1;
        format_val = "AM";
       }
      } else if (hrs_val < 0)

      {

      }

      break;
     }

     month_val = (String) month.getItemAtPosition(month_pos);
     String dates1 = frm_time_str + " WAS " + diff
       + " HOURS BEHIND OF " + to_time_str + "n"
       + year_val + "-" + month_val + "-" + day_val + " "
       + hrs_val + ":" + min_val + ":" + "00" + format_val;

     tv = (TextView) findViewById(R.id.error);
     tv.setText("");
     tv = (TextView) findViewById(R.id.result);

     tv.setText(dates1);

    }

   }

  });

 }
}
[ Read More ]
Read more...
Newer Posts Older Posts
Subscribe to: Posts (Atom)

More Technical Blogs

  • Tech Savvy - Technology Tips
  • PHP Video Tutorial
  • Java Programs with Output
  • C Programming Tutorial
  • Linux Tutorial
  • Language Tutorial
  • Web Development tutorial
  • Popular
  • Recent
  • Archives

Popular Posts

  • What are Intents in Android?
    What are Intents in Android System? Different types of Intents in Android System. Example of how to create different types of Intents.
  • Android Video Tutorial - Learn How to Unit Test Your Android Application (with Robolectric)
    Tyler Schultz, from Pivotal Labs, introduces you to Robolectric - an open source unit testing framework that makes it possible to run unit...
  • Installing Android SDK Plugin for Eclipse IDE
    Short video clip that explains how to install the Android SDK plugin for the Eclipse IDE. When following the guidelines make sure you ente...
  • Android Video Tutorial: Android Application Development - Databases
    Class 3, Part 3. This video comes from Marakana's 5-Day Android Bootcamp Training Course which Marko Gargenta taught in San Jose, CA e...
  • Test Application for Samsung Android devices
    This test application write the traces from device to confirm the device behaviour. import java.io.File; import android.app.Activity; ...
  • Reordering of listview
    Listview rows order can be changed using drag and drop functionality.Dragging should be enabled beyond the visible listview position. ...
  • Extract all java classes from APK
    Step 1: Download "dex2jar-0.0.7.8-SNAPSHOT.zip" package from web. This package can be downloaded from " http://code.google...
  • Android Video Tutorial: Android Application Development - BroadcastReceivers
    Class 5, Part 3. This video comes from Marakana's 5-Day Android Bootcamp Training Course which Marko Gargenta taught in San Jose, CA e...
  • Get User name using Andriod
    import android.accounts.Account; import android.accounts.AccountManager; import android.content.Context; class Utils { private static ...
  • How to Create Multiple Activities in Android
    How to create multiple activities in android? Example of multiple activities in android.
Powered by Blogger.

Archives

  • ▼  2012 (44)
    • ▼  October (31)
      • Reordering of listview
      • Text-to-Speech capability for Android Devices
      • Android Stub uninstalling the existing client and ...
      • Tab creation in android screen
      • ListView Recordering by drag drop in Android
      • Android app for SimpleWiktionary
      • App in android for random quote generation
      • Implementing ListView-Adapter in Android
      • Extract all java classes from APK
      • Get XML from APK
      • Sending SMS from the Android Application
      • How to create Drop Down in Android
      • Android Page Navigation
      • To retrieve the cell info for Android device
      • Creating the enrty in the agenda for Android devices.
      • Test Application for Samsung Android devices
      • Color Picker from Image in Android
      • Image Switcher & Gallery in Android
      • Andorid application that listens to incoming sms
      • Accelerometer management for the Android devices
      • Alert box for Confirm
      • 3D Rotation in Android
      • Custom Bar Control for Android using Java
      • Creating Layouts TableRows and TextViews dynamical...
      • Android SeekBar
      • Dialing phone number from Google Android Application
      • Login Screen Creation using Android
      • Add a Progress Bar to Android based Mobile Screens
      • Adding a button to Android based mobile screens
      • Android Dynamically generating views
      • Timezone converter
    • ►  September (3)
    • ►  March (1)
    • ►  February (9)
  • ►  2011 (69)
    • ►  December (69)
 

Followers

Labels

  • Activities (9)
  • Andoird Menu (2)
  • Android timelineActivity. (1)
  • Android Adapter (1)
  • Android app (9)
  • Android App Inventor (1)
  • Android App Publishing (2)
  • Android Application Components (3)
  • Android Application Fundamental (2)
  • Android Architecture (1)
  • Android AsyncTask (1)
  • Android Basic (7)
  • Android Bootcamp Training (18)
  • Android Button Widget (3)
  • Android Custom Style (1)
  • Android Dialog (1)
  • Android Drawable (2)
  • Android Environment (1)
  • Android example (9)
  • Android File System (2)
  • Android Geolocation (2)
  • Android ImageView (1)
  • Android Installation (8)
  • Android intents (5)
  • Android lifecycle (1)
  • Android LIst (4)
  • Android Listener (4)
  • Android Manifest (3)
  • Android Market (1)
  • Android Notification (1)
  • Android Object (1)
  • Android Package File (1)
  • Android Platform (1)
  • Android service (4)
  • Android StatusActivity (1)
  • Android Theme Style (3)
  • Android Traceview (1)
  • Android UI (6)
  • Android Unit Testing (1)
  • Android Widget (4)
  • AndroidManifest.xml (4)
  • Application Icon (1)
  • Broadcast Receiver (2)
  • Content Providers (1)
  • Creating Activities (1)
  • Creating Custom Styles in Android (1)
  • Creating Multiple Activities (1)
  • Database (3)
  • draw9patch (1)
  • Eclipse (12)
  • Explicit Intents (2)
  • Explicit Intents Example (1)
  • Hello world with Android (1)
  • Helloworld with Android (5)
  • Implicit Intents (2)
  • Implicit Intents Example (1)
  • Layout View (3)
  • lifemichael (8)
  • Location Sensor (1)
  • Multiple Activities (2)
  • Netbeans (1)
  • OpenGL ES Graphics (1)
  • Passing Values with Intents (2)
  • Project Structure (1)
  • Retrieving Image URI from Intents (1)
  • Setting Android Environment (1)
  • SQLite (3)
  • TGENT (8)
  • UserGroupAtGoogle (8)
  • XML (1)
  • xtensive arts Training (11)
 
 
© 2011 Android Development Tutorial | Designs by Web2feel & Fab Themes

Bloggerized by DheTemplate.com - Main Blogger