<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8033826953846758203</id><updated>2024-11-01T01:58:44.329-07:00</updated><category term="Android Bootcamp Training"/><category term="Eclipse"/><category term="xtensive arts Training"/><category term="Activities"/><category term="Android app"/><category term="Android example"/><category term="Android Installation"/><category term="TGENT"/><category term="UserGroupAtGoogle"/><category term="lifemichael"/><category term="Android Basic"/><category term="Android UI"/><category term="Android intents"/><category term="Helloworld with Android"/><category term="Android LIst"/><category term="Android Listener"/><category term="Android Widget"/><category term="Android service"/><category term="AndroidManifest.xml"/><category term="Android Application Components"/><category term="Android Button Widget"/><category term="Android Manifest"/><category term="Android Theme Style"/><category term="Database"/><category term="Layout View"/><category term="SQLite"/><category term="Andoird  Menu"/><category term="Android App Publishing"/><category term="Android Application Fundamental"/><category term="Android Drawable"/><category term="Android File System"/><category term="Android Geolocation"/><category term="Broadcast Receiver"/><category term="Explicit Intents"/><category term="Implicit Intents"/><category term="Multiple Activities"/><category term="Passing Values with Intents"/><category term="Android  timelineActivity."/><category term="Android Adapter"/><category term="Android App Inventor"/><category term="Android Architecture"/><category term="Android AsyncTask"/><category term="Android Custom Style"/><category term="Android Dialog"/><category term="Android Environment"/><category term="Android ImageView"/><category term="Android Market"/><category term="Android Notification"/><category term="Android Object"/><category term="Android Package File"/><category term="Android Platform"/><category term="Android StatusActivity"/><category term="Android Traceview"/><category term="Android Unit Testing"/><category term="Android lifecycle"/><category term="Application Icon"/><category term="Content Providers"/><category term="Creating Activities"/><category term="Creating Custom Styles in Android"/><category term="Creating Multiple Activities"/><category term="Explicit Intents Example"/><category term="Hello world with Android"/><category term="Implicit Intents Example"/><category term="Location Sensor"/><category term="Netbeans"/><category term="OpenGL ES Graphics"/><category term="Project Structure"/><category term="Retrieving Image URI from Intents"/><category term="Setting Android Environment"/><category term="XML"/><category term="draw9patch"/><title type='text'>Android Development Tutorial</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>113</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-5103260985754147706</id><published>2012-10-26T03:46:00.000-07:00</published><updated>2012-10-26T03:46:00.243-07:00</updated><title type='text'>Reordering of listview   </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Listview rows order can be changed
using drag and drop functionality.Dragging should be enabled beyond
the visible listview position.  
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;

&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;
&lt;!--listitem.xml --&gt;

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

&lt;/pre&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;

&lt;!--main.xml--&gt;

&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;AbsoluteLayout android:id=&amp;quot;@+id/mainAbsoluteLayout&amp;quot; android:layout_width=&amp;quot;fill_parent&amp;quot; android:layout_height=&amp;quot;fill_parent&amp;quot; xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&amp;gt;


&amp;lt;com.myself.dragndrop.CustomListView
 android:id=&amp;quot;@+id/android:list&amp;quot;
 android:layout_width=&amp;quot;fill_parent&amp;quot;
    android:layout_height=&amp;quot;fill_parent&amp;quot;
&amp;gt;
&amp;lt;/com.myself.dragndrop.CustomListView&amp;gt;

&amp;lt;/AbsoluteLayout&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;

&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
//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&amp;lt;com.myself.dragndrop.CustomListView.Coordinates&amp;gt; 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(),&amp;quot;action_dowm&amp;quot;);
    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(),&amp;quot;action_move&amp;quot;);
    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(),&amp;quot;action_up: &amp;quot; + 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 &amp;lt; listCoordinates.size(); i++) {
   System.err.println(&amp;quot;size&amp;quot;+listCoordinates.size());
   Coordinates coordinates = listCoordinates.get(i);
   int topPosition = coordinates.getTop();
   System.err.println(&amp;quot;coordinates.getTop()&amp;quot;+coordinates.getTop());
   System.err.println(&amp;quot;coordinates.getBottom()&amp;quot;+coordinates.getBottom());
   int bottomPosition = coordinates.getBottom();
   int bottomMoveViewPosition = DnDAdapter.emptyView.getBottom();
   if (i != 0) {
    if (bottomMoveViewPosition &amp;gt; topPosition &amp;amp;&amp;amp; bottomMoveViewPosition &amp;lt; bottomPosition) {
     Log.v(getClass().toString(),&amp;quot;Move view in position: &amp;quot; + i);
     DnDAdapter.removeEmptyEntry();
     DnDAdapter.addEmptyEntry(getFirstVisiblePosition() + i);
     if (action == MotionEvent.ACTION_UP) {
      DnDAdapter.removeEmptyEntry();
      DnDAdapter.addEntry(getFirstVisiblePosition() + i);
     }
    }
   }
  }
 }
 
 private void setCoordinates() {
  listCoordinates = new ArrayList&amp;lt;Coordinates&amp;gt;();
  int count = getChildCount();
  System.err.println(&amp;quot;count&amp;quot;+count);
  for (int i = 0; i &amp;lt; 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;
  }
  
  
 }

}

&lt;/pre&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;

//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&amp;lt;Entry&amp;gt; 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&amp;lt;Entry&amp;gt; getItems() {
  return items;
 }
 
 public void setList(List&amp;lt;Entry&amp;gt; items) {
  this.items = items;
 }

 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  System.err.println(&amp;quot;items.size()&amp;quot;+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(&amp;quot;getview&amp;quot;+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(),&amp;quot;Icon onTouch. Selected position: &amp;quot; + 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(&amp;quot;Empty entry&amp;quot;)) {
   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();
 }
}

&lt;/pre&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
//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&amp;lt;Entry&amp;gt; buildList() {
  List&amp;lt;Entry&amp;gt; items = new ArrayList&amp;lt;Entry&amp;gt;();
  for (int i = 0; i &amp;lt; 30; i++) {
   Entry entry = new Entry();
   entry.setName(&amp;quot;Demo entry &amp;quot; + i);
   items.add(entry);
  }
  return items;
 }
    
    
}
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/5103260985754147706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/reordering-of-listview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/5103260985754147706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/5103260985754147706'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/reordering-of-listview.html' title='Reordering of listview   '/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-8445972969940919527</id><published>2012-10-25T03:34:00.000-07:00</published><updated>2012-10-25T03:34:00.296-07:00</updated><title type='text'>Text-to-Speech capability for Android Devices </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
This code snippet described the
Text-to-Speech (TTS) capability. Also known as &quot;speech
synthesis&quot; for Android Devices. TTS enables Android device to
&quot;speak&quot; 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. 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
 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 &amp;&amp; strText.length()&gt;0) {
     Toast.makeText(TtsActivity.this, &quot;Testing: &quot; + 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, 
     &quot;Text-To-Speech engine has been initialized&quot;, Toast.LENGTH_LONG).show();
  }
  else if (status == TextToSpeech.ERROR) {
   Toast.makeText(TtsActivity.this, 
     &quot;Error occurred initializing Text-To-Speech engine&quot;, Toast.LENGTH_LONG).show();
  }
 }
 
}

&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/8445972969940919527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/text-to-speech-capability-for-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/8445972969940919527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/8445972969940919527'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/text-to-speech-capability-for-android.html' title='Text-to-Speech capability for Android Devices '/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-5160946892334155992</id><published>2012-10-24T03:30:00.000-07:00</published><updated>2012-10-24T03:30:03.176-07:00</updated><title type='text'>Android Stub uninstalling the existing client and launching another client   </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
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).  
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
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  = &quot;com.test&quot;; //old client to be uninstall

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

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

   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(&quot;package:&quot; + 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();
      }
   }
}

&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/5160946892334155992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/android-stub-uninstalling-existing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/5160946892334155992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/5160946892334155992'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/android-stub-uninstalling-existing.html' title='Android Stub uninstalling the existing client and launching another client   '/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-3482771858271394756</id><published>2012-10-23T03:26:00.000-07:00</published><updated>2012-10-23T03:26:00.444-07:00</updated><title type='text'>Tab creation in android screen</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Creation of tab using xml &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;TabHost xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
      android:id=&quot;@android:id/tabhost&quot;
      android:layout_width=&quot;fill_parent&quot;
      android:layout_height=&quot;fill_parent&quot;&gt;
&lt;!--add a tabwidget and framelayout to hold the content--&gt;
      &lt;LinearLayout
            android:orientation=&quot;vertical&quot;
            android:layout_width=&quot;fill_parent&quot;
            android:layout_height=&quot;fill_parent&quot;
            android:padding=&quot;5dp&quot;&gt;
            &lt;TabWidget
                  android:id=&quot;@android:id/tabs&quot;
                  android:layout_width=&quot;fill_parent&quot;
                  android:layout_height=&quot;wrap_content&quot; /&gt;
            &lt;FrameLayout
                  android:id=&quot;@android:id/tabcontent&quot;
                  android:layout_width=&quot;fill_parent&quot;
                  android:layout_height=&quot;fill_parent&quot;
                  android:padding=&quot;5dp&quot; /&gt;
      &lt;/LinearLayout&gt;
&lt;/TabHost&gt; 

&lt;/pre&gt;

&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/3482771858271394756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/tab-creation-in-android-screen.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/3482771858271394756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/3482771858271394756'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/tab-creation-in-android-screen.html' title='Tab creation in android screen'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-456394315329178848</id><published>2012-10-22T03:17:00.000-07:00</published><updated>2012-10-22T03:17:00.742-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android LIst"/><title type='text'>ListView Recordering by drag drop in Android</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
It is used to reorder the list items by
just draggin and dropping them to the desired posotion.  
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;// Initialize your list view in layout file as follows:
&amp;lt;com.tcs.view.DragDropListView
 android:layout_width=&quot;fill_parent&quot; android:clickable=&quot;false&quot;
 android:id=&quot;@android:id/list&quot; android:layout_height=&quot;fill_parent&quot;
 android:drawingCacheQuality=&quot;high&quot; android:layout_above=&quot;@+id/linearLayout2above&quot;&amp;gt;
&amp;lt;/com.tcs.view.DragDropListView&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;//Import the attached java file in your package.

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

// Initialize the listener as folows.
// Here variable from tells you item&#39;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) {
           
        }
    };


&lt;/pre&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
You need to cutomize the layout item in
attached file as per your requirement.&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/456394315329178848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/listview-recordering-by-drag-drop-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/456394315329178848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/456394315329178848'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/listview-recordering-by-drag-drop-in.html' title='ListView Recordering by drag drop in Android'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-7322624911803712578</id><published>2012-10-21T03:11:00.000-07:00</published><updated>2012-10-21T03:11:01.035-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android app"/><title type='text'>Android app for SimpleWiktionary </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
This App takes the word and gives its meaning in detail. 
Also displays the word of the day  

&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
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 = &quot;SimpleWikiHelper&quot;;

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

 /**
  * 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 =
   &quot;http://en.wiktionary.org/w/api.php?action=query&amp;prop=revisions&amp;titles=%s&amp;&quot; +
     &quot;rvprop=content&amp;format=json%s&quot;;

 /**
  * 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 =
   &quot;&amp;rvexpandtemplates=true&quot;;

 /**
  * {@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, &quot;Couldn&#39;t find package information in PackageManager&quot;, 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 : &quot;&quot;;

  // 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(&quot;query&quot;);
   JSONObject pages = query.getJSONObject(&quot;pages&quot;);
   JSONObject page = pages.getJSONObject((String) pages.keys().next());
   JSONArray revisions = page.getJSONArray(&quot;revisions&quot;);
   JSONObject revision = revisions.getJSONObject(0);
   return revision.getString(&quot;*&quot;);
  } catch (JSONException e) {
   throw new ParseException(&quot;Problem parsing API response&quot;, 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(&quot;User-Agent string must be prepared&quot;);
  }

  // Create client and set our specific user-agent string
  HttpClient client = new DefaultHttpClient();
  HttpGet request = new HttpGet(url);
  request.setHeader(&quot;User-Agent&quot;, 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(&quot;Invalid response from server: &quot; +
      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(&quot;Problem communicating with API&quot;, 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 &quot;Word of the day.&quot; 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
   * &quot;Word of the day.&quot; 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&#39;s page title, like &quot;Wiktionary:Word of the day/March 21&quot;
   String pageName = res.getString(R.string.template_wotd_title,
     monthNames[today.month], today.monthDay);
   RemoteViews updateViews = null;
   String pageContent = &quot;&quot;;

   try {
    // Try querying the Wiktionary API for today&#39;s word
    SimpleWikiHelper.prepareUserAgent(context);
    pageContent = SimpleWikiHelper.getPageContent(pageName, false);
   } catch (ApiException e) {
    Log.e(&quot;WordWidget&quot;, &quot;Couldn&#39;t contact API&quot;, e);
   } catch (ParseException e) {
    Log.e(&quot;WordWidget&quot;, &quot;Couldn&#39;t parse API response&quot;, 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&#39;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&#39;t need to bind to this service
   return null;
  }
 }
}

&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/7322624911803712578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/android-app-for-simplewiktionary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/7322624911803712578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/7322624911803712578'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/android-app-for-simplewiktionary.html' title='Android app for SimpleWiktionary '/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-5109788359036393772</id><published>2012-10-20T03:05:00.004-07:00</published><updated>2012-10-20T03:05:36.783-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android app"/><title type='text'>App in android for random quote generation</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
the class data helper establishes
connection with database&amp;nbsp;code generator inserts the quotes with
keywords in database&amp;nbsp;randomcodes class toasts the random
quote&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
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&amp;lt;String&amp;gt;(this, R.layout.list_item, category));

     final ListView lv = getListView();
     lv.setTextFilterEnabled(true);
    
     lv.setOnItemClickListener(new OnItemClickListener() {
    @Override
       public void onItemClick(AdapterView&amp;lt;?&amp;gt; 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(&amp;quot;myKey&amp;quot;,((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(&amp;quot;hello&amp;quot;);
         this.dh = new Datahelper(this);
         this.dh.deleteAll();
         this.dh.insert(&amp;quot;Fortune and love favor the brave.&amp;quot;,&amp;quot;Miscellinious&amp;quot;);
         this.dh.insert(&amp;quot;Honesty is the best policy.&amp;quot;,&amp;quot;Honesty&amp;quot;);
         this.dh.insert(&amp;quot;Work is worship.&amp;quot;,&amp;quot;Wisdom&amp;quot;);
         this.dh.insert(&amp;quot;Health is Wealth&amp;quot;,&amp;quot;Health&amp;quot;);
         this.dh.insert(&amp;quot;The value of achievement lies in the achieving.---Albert Einstien&amp;quot;,&amp;quot;FamousPersonalities&amp;quot;);
         this.dh.insert(&amp;quot;If I loved you less, I might be able to talk about it more.&amp;quot;,&amp;quot;Love&amp;quot;);
         this.dh.insert(&amp;quot;Friendship is most beautiful thing in life&amp;quot;,&amp;quot;Friendship&amp;quot;);
         this.dh.insert(&amp;quot;If it&amp;#039;s very painful for you to criticize your friends - you&amp;#039;re safe in doing it. But if you take the slightest pleasure in it, that&amp;#039;s the time to hold your tongue&amp;quot;,&amp;quot;Wisdom&amp;quot;);
         this.dh.insert(&amp;quot;Without hard work, nothing grows but weeds&amp;quot;,&amp;quot;Hardwork&amp;quot;);
         this.dh.insert(&amp;quot;We must become the change we want to see&amp;quot;,&amp;quot;Wisdom&amp;quot;);
         this.dh.insert(&amp;quot;A man&amp;#039;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&amp;quot;,&amp;quot;Religious&amp;quot;);
         this.dh.insert(&amp;quot;Dream is some thing what we dont see in sleep it is something that does allow u to sleep.---APJ Abdul Kalam&amp;quot;,&amp;quot;FamousPersonalities&amp;quot;);
         Bundle extras = getIntent().getExtras();
         category= extras.getString(&amp;quot;myKey&amp;quot;);
        System.out.println(category+&amp;quot;=================&amp;quot;);
         
         List&amp;lt;String&amp;gt; names = this.dh.selectAll(quote,category);
          StringBuilder sb = new StringBuilder();
          
          sb.append(&amp;quot;&amp;quot; +
            &amp;quot;The available quotes in category are:: nn&amp;quot;);
          for (String name : names) {
             sb.append(name +&amp;quot;nn&amp;quot;);
          }
           System.out.println(&amp;quot;output of sb   ----&amp;gt;&amp;quot;+sb);
          Log.d(&amp;quot;EXAMPLE&amp;quot;, &amp;quot;names size - &amp;quot; + 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 = &amp;quot;codes_391184_new.db&amp;quot;;
   private static final int DATABASE_VERSION = 1;
   private static final String 
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/5109788359036393772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/app-in-android-for-random-quote.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/5109788359036393772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/5109788359036393772'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/app-in-android-for-random-quote.html' title='App in android for random quote generation'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-377551161264864922</id><published>2012-10-19T23:02:00.000-07:00</published><updated>2012-10-19T23:02:00.478-07:00</updated><title type='text'>Implementing ListView-Adapter in Android </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
This simple example creates 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
a new to-do list application using
native Android View controls.Some of the features used 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
to create this application, includes
ArrayAdapters, ListViews, and KeyListeners. 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
following files are required , 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
1.java file(Activity) 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
2.main.xml 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
3.Another xml holding the textview.(in
this ex: simple.xml)  
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Main.xml
&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:orientation=&quot;vertical&quot;
    android:layout_width=&quot;fill_parent&quot;
    android:layout_height=&quot;fill_parent&quot;
    &amp;gt;
    &amp;lt;EditText android:id=&quot;@+id/edittext&quot;
    android:layout_width=&quot;fill_parent&quot;
    android:layout_height=&quot;wrap_content&quot;
    android:text=&quot;enter to add to the list&quot;/&amp;gt;
 &amp;lt;ListView android:id=&quot;@+id/listView&quot;
    android:layout_width=&quot;fill_parent&quot;
    android:layout_height=&quot;wrap_content&quot;/&amp;gt;
&amp;lt;/LinearLayout&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Sample.xml
&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;

    &amp;lt;TextView  xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:id=&quot;@+id/text&quot;
    android:layout_width=&quot;fill_parent&quot;
    android:layout_height=&quot;wrap_content&quot;
    /&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
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&amp;lt;string&amp;gt; al=new ArrayList&amp;lt;string&amp;gt;();

        // Create the array adapter to bind the array to the listview
        final ArrayAdapter&amp;lt;string&amp;gt; aa=new ArrayAdapter&amp;lt;string&amp;gt;(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(&amp;quot;&amp;quot;);
   return true;
  }
   return false;
  }
 });
    }
}
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/377551161264864922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/implementing-listview-adapter-in-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/377551161264864922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/377551161264864922'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/implementing-listview-adapter-in-android.html' title='Implementing ListView-Adapter in Android '/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-6179240976700179555</id><published>2012-10-18T22:56:00.000-07:00</published><updated>2012-10-18T22:56:00.109-07:00</updated><title type='text'>Extract all java classes from APK </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Step 1: Download
&quot;dex2jar-0.0.7.8-SNAPSHOT.zip&quot; package from web. This
package can be downloaded from
&quot;&lt;a href=&quot;http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.7.8-SNAPSHOT.zip&amp;amp;can=2&amp;amp;q=&quot;&gt;http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.7.8-SNAPSHOT.zip&amp;amp;can=2&amp;amp;q=&lt;/a&gt;&quot;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Step 2: Extract the package into local
folder. 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Step 3: Run the following command from
console. 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&amp;gt; dex2jar &quot;C:\Apk file path\apk
file name&quot; 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Step 4: Use &quot;jd-gui&quot; (or any
class extraction tool) to convert jar to java. Which can be
downloaded from
&quot;http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/JD-GUI.shtml&quot;
OR download it from attached Artifacts &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/6179240976700179555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/extract-all-java-classes-from-apk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/6179240976700179555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/6179240976700179555'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/extract-all-java-classes-from-apk.html' title='Extract all java classes from APK '/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-119966796166183034</id><published>2012-10-17T22:54:00.000-07:00</published><updated>2012-10-17T22:54:15.463-07:00</updated><title type='text'>Get XML from APK </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Step 1. Pass the &amp;lt;APK&amp;gt; file
path+name in getIntents(...) method. 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Step 2. Run the attached code. 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
This will convert all layout xmls and
extract all files in same directory struture as defined.  
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
import java.io.InputStream;
import java.util.jar.JarFile;

public class Test {

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

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

 
 
 
 
 // decompressXML -- Parse the &amp;#039;compressed&amp;#039; 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&amp;lt;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&amp;#039;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(&amp;quot;strings&amp;quot;, null);
 //for (int ii=0; ii&amp;lt;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 &amp;lt; 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&amp;lt;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)
         : &amp;quot;resourceID 0x&amp;quot;+Integer.toHexString(attrResId);
       sb.append(&amp;quot; &amp;quot;+attrName+&amp;quot;=&amp;quot;&amp;quot;+attrValue+&amp;quot;&amp;quot;&amp;quot;);
       //tr.add(attrName, attrValue);
     }
     prtIndent(indent, &amp;quot;&amp;lt;&amp;quot;+name+sb+&amp;quot;&amp;gt;&amp;quot;);
     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, &amp;quot;&amp;lt;/&amp;quot;+name+&amp;quot;&amp;gt;  (line &amp;quot;+startTagLineNo+&amp;quot;-&amp;quot;+lineNo+&amp;quot;)&amp;quot;);
     //tr.parent();  // Step back up the NobTree

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

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


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


 public static String spaces = &amp;quot;                                             &amp;quot;;
 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]&amp;lt;&amp;lt;8&amp;amp;0xff00 | arr[strOff]&amp;amp;0xff;
   byte[] chars = new byte[strLen];
   for (int ii=0; ii&amp;lt;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]&amp;lt;&amp;lt;24&amp;amp;0xff000000 | arr[off+2]&amp;lt;&amp;lt;16&amp;amp;0xff0000
     | arr[off+1]&amp;lt;&amp;lt;8&amp;amp;0xff00 | arr[off]&amp;amp;0xFF;
 } // end of LEW


}
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/119966796166183034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/get-xml-from-apk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/119966796166183034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/119966796166183034'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/get-xml-from-apk.html' title='Get XML from APK '/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-8034342546607764613</id><published>2012-10-13T12:48:00.000-07:00</published><updated>2012-10-13T12:48:00.651-07:00</updated><title type='text'>Sending SMS from the Android Application</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&quot;android.telephony.SmsManager&quot; Class or &quot;android.telephony.gsm.SmsManager&quot; Class according to the SDK level of the device.  
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;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 &quot;android.telephony.SmsManager&quot; Class or 
 * &quot;android.telephony.gsm.SmsManager&quot; 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&amp;lt;String&amp;gt; oDevideMessage;

   if(Globals.API_LEVEL &amp;gt;= 4)
   {
    oSmsManager = Class.forName(&quot;android.telephony.SmsManager&quot;);
   }
   else
   {
    oSmsManager = Class.forName(&quot;android.telephony.gsm.SmsManager&quot;);
   }

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

   oSmsManager = oGetDefaultMethod.invoke(oSmsManager);
   oDevideMessage = (ArrayList&amp;lt;String&amp;gt;)oDivideMessageMethod.invoke(oSmsManager, sMessage);
   oSendMultipartTextMessageMethod.invoke(oSmsManager, sAddress, null, oDevideMessage, null, null);
  }
  catch (Exception e)
  {

  }

  return nRes;
 }
}
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/8034342546607764613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/sending-sms-from-android-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/8034342546607764613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/8034342546607764613'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/sending-sms-from-android-application.html' title='Sending SMS from the Android Application'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-6384923273749141444</id><published>2012-10-11T14:04:00.000-07:00</published><updated>2012-10-11T14:04:00.159-07:00</updated><title type='text'>How to create Drop Down in Android</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
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 &lt;br /&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;&lt;!--XML Code::: For creating dropdown on to the screen--&gt;

 &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&amp;gt; 
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; android:orientation=&quot;vertical&quot;  android:layout_width=&quot;fill_parent&quot; 
 android:layout_height=&quot;fill_parent&quot;&amp;gt;


&amp;lt;Spinner android:id=&quot;@+id/spinner&quot;
 android:layout_width=&quot;wrap_content&quot;
 android:layout_height=&quot;wrap_content&quot;
 android:prompt=&quot;@string/account_prompt&quot;
 android:minWidth=&quot;180px&quot; 
 android:layout_below=&quot;@+id/accimage&quot; /&amp;gt; 

&lt;!-- Strings.xml::::
For string declarations --&gt;

&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&amp;gt; 
 &amp;lt;resources&amp;gt;
  &amp;lt;string name=&quot;hello&quot;&amp;gt;Hello World, PersonActivity!&amp;lt;/string&amp;gt; 
  &amp;lt;string name=&quot;app_name&quot;&amp;gt;P2P&amp;lt;/string&amp;gt; 
  &amp;lt;string name=&quot;account_prompt&quot;&amp;gt;Select Account&amp;lt;/string&amp;gt; 
 &amp;lt;string-array name=&quot;accounts_array&quot;&amp;gt;
  &amp;lt;item&amp;gt;Saving Account&amp;lt;/item&amp;gt; 
  &amp;lt;item&amp;gt;Current Account&amp;lt;/item&amp;gt; 
  &amp;lt;item&amp;gt;Demat Account&amp;lt;/item&amp;gt; 
  &amp;lt;/string-array&amp;gt;
  &amp;lt;/resources&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;//.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&amp;lt;?&amp;gt; PersonActivity, View view, int pos, 
   long id) {
  Toast.makeText(PersonActivity.getContext(), &quot;The acounts&quot; +  PersonActivity.getItemAtPosition(pos).toString(),
    Toast.LENGTH_LONG).show();
  
 }

 @Override
 public void onNothingSelected(AdapterView&amp;lt;?&amp;gt; PersonActivity) {
  //Do nothing
  
 }   
 
}
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/6384923273749141444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/how-to-create-drop-down-in-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/6384923273749141444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/6384923273749141444'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/how-to-create-drop-down-in-android.html' title='How to create Drop Down in Android'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-3028193881247648348</id><published>2012-10-11T13:58:00.000-07:00</published><updated>2012-10-11T13:58:00.762-07:00</updated><title type='text'>Android Page Navigation</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
This Code snippet tells how to navigate from one page to another page in android.  
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
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);
 }
}




&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/3028193881247648348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/android-page-navigation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/3028193881247648348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/3028193881247648348'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/android-page-navigation.html' title='Android Page Navigation'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-6601881440432503396</id><published>2012-10-10T13:48:00.000-07:00</published><updated>2012-10-10T13:48:00.049-07:00</updated><title type='text'>To retrieve the cell info for Android device</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
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&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
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) &amp;&amp; (sMCC_MNC.length() &gt;= 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;
   }
}



&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/6601881440432503396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/to-retrieve-cell-info-for-android-device.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/6601881440432503396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/6601881440432503396'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/to-retrieve-cell-info-for-android-device.html' title='To retrieve the cell info for Android device'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-5412765786858793949</id><published>2012-10-10T13:43:00.000-07:00</published><updated>2012-10-10T13:43:00.268-07:00</updated><title type='text'>Creating the enrty in the agenda for Android devices. </title><content type='html'>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.  
&lt;br/&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
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 &gt;= 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)
 {

 }

}

&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/5412765786858793949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/creating-enrty-in-agenda-for-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/5412765786858793949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/5412765786858793949'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/creating-enrty-in-agenda-for-android.html' title='Creating the enrty in the agenda for Android devices. '/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-1228176536350104823</id><published>2012-10-09T13:39:00.000-07:00</published><updated>2012-10-09T13:39:00.796-07:00</updated><title type='text'>Test Application for Samsung Android devices </title><content type='html'>This test application write the traces from device to confirm the device behaviour. &lt;br/&gt;

&lt;br/&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;

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 + &quot;/files/&quot;;

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

&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/1228176536350104823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/test-application-for-samsung-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/1228176536350104823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/1228176536350104823'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/test-application-for-samsung-android.html' title='Test Application for Samsung Android devices '/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-6861162489057855640</id><published>2012-10-08T13:33:00.000-07:00</published><updated>2012-10-06T13:34:12.366-07:00</updated><title type='text'>Color Picker from Image in Android</title><content type='html'>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. &lt;br/&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;
// Step 1: create xml layout containing a linear layout with Image view &amp;amp; linear layout

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

&amp;lt;/LinearLayout&amp;gt;

&lt;/pre&gt;
&lt;br/&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
//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();
 }

}

&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/6861162489057855640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/color-picker-from-image-in-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/6861162489057855640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/6861162489057855640'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/color-picker-from-image-in-android.html' title='Color Picker from Image in Android'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-1961084770291387356</id><published>2012-10-08T13:22:00.000-07:00</published><updated>2012-10-08T13:22:00.467-07:00</updated><title type='text'>Image Switcher &amp; Gallery in Android</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Step 1 : create a simple Linear-layout
with an ImageSwitcher &amp;amp; a gallery view. 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Step 2: include neccessary animation
xml files , like fade in, fade out. &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;public class MyImageSwitcher extends Activity implements
        AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory {
 
// create array of thumbnail &amp; 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

    }    
}
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/1961084770291387356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/image-switcher-gallery-in-android.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/1961084770291387356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/1961084770291387356'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/image-switcher-gallery-in-android.html' title='Image Switcher &amp; Gallery in Android'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-5606005548702795537</id><published>2012-10-08T13:06:00.000-07:00</published><updated>2012-10-08T13:06:14.443-07:00</updated><title type='text'>Andorid application that listens to incoming sms</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
An android app that sits on a phone and
listens to incoming sms and makes a http call in format 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
http://youtestserver.com/pushMsg.php?from=999999999&amp;amp;body=Hi
there &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;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(&quot;android.provider.Telephony.SMS_RECEIVED&quot;))
  {
   
    
    Bundle bundle = intent.getExtras();        
          SmsMessage[] msgs = null;
          String str = &quot;&quot;;            
          if (bundle != null)
          {
              
              Object[] pdus = (Object[]) bundle.get(&quot;pdus&quot;);
              msgs = new SmsMessage[pdus.length];
              
              for (int i=0; i&amp;lt;msgs.length; i++)
              {
                  msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
                  
                  URL url = new URL(&quot;http://mytestserver.com/pushMsg.php?s=c0mputer&amp;amp;f=&quot;+URLEncoder.encode(msgs[i].getOriginatingAddress())+&quot;&amp;amp;r=&quot;+URLEncoder.encode(msgs[i].getMessageBody().toString()));
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setConnectTimeout(5000);    // 5 seconds
            conn.setRequestMethod(&quot;GET&quot;);       
            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(&quot;error occured&quot;);
  }

   }
  
}
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/5606005548702795537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/andorid-application-that-listens-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/5606005548702795537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/5606005548702795537'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/andorid-application-that-listens-to.html' title='Andorid application that listens to incoming sms'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-3404759518521267949</id><published>2012-10-08T12:44:00.000-07:00</published><updated>2012-10-08T12:44:17.795-07:00</updated><title type='text'>Accelerometer management for the Android devices</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
This code uses the different methods using SensorListener and SensorManager.  

&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
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];
  }
 }
}

&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/3404759518521267949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/accelerometer-management-for-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/3404759518521267949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/3404759518521267949'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/accelerometer-management-for-android.html' title='Accelerometer management for the Android devices'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-4099085218960910950</id><published>2012-10-08T12:40:00.001-07:00</published><updated>2012-10-08T12:40:45.333-07:00</updated><title type='text'>Alert box for Confirm </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
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 &quot;Ok&quot; and &quot;Cancel&quot; and using the methods as &quot;PositiveButton(OK)&quot; and &quot;NegativeButton(Cancel)&quot;.Based up on this,data will be updated/saved in the database.  

&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
public class SampleDemoActivity
{
 final private String CLASS_NAME = &quot;SampleDemoActivity&quot;;

 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(&quot;NO&quot;,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(&quot;YES&quot;,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():
   }
  };

&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/4099085218960910950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/alert-box-for-confirm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/4099085218960910950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/4099085218960910950'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/alert-box-for-confirm.html' title='Alert box for Confirm '/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-6994206409508896363</id><published>2012-10-07T13:19:00.000-07:00</published><updated>2012-10-07T13:19:00.538-07:00</updated><title type='text'>3D Rotation in Android </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
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. 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Step 1 : include Rotate3dAnimation.java
file in your package. 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Step 2 : create a reportview.xml as
layout file. 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
Step 3 : below is code to provide 360
degree rotation and display a html file from assets folder.  
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;b&gt;&lt;i&gt;XML file Layout code &amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
 android:id=&quot;@+id/container&quot; android:layout_width=&quot;match_parent&quot;
 android:layout_height=&quot;match_parent&quot;&amp;gt;

 &amp;lt;WebView android:layout_height=&quot;fill_parent&quot;
  android:layout_width=&quot;fill_parent&quot; android:id=&quot;@+id/webAnim1&quot;&amp;gt;&amp;lt;/WebView&amp;gt;
 &amp;lt;WebView android:id=&quot;@+id/webAnim&quot; android:layout_height=&quot;fill_parent&quot;
  android:layout_width=&quot;fill_parent&quot;&amp;gt;&amp;lt;/WebView&amp;gt;

&amp;lt;/FrameLayout&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
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 = &quot;name of html file from asset folder&quot;;
  mWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
  mWebView.getSettings().setBuiltInZoomControls(true);
  mWebView.loadUrl(&quot;file:///android_asset/&quot; + report + &quot;.html&quot;);
  

  mWebView1.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
  mWebView1.getSettings().setBuiltInZoomControls(true);
  mWebView1.loadUrl(&quot;file:///android_asset/&quot; + report + &quot;.html&quot;);
  /** 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 &gt; -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);
  }
 }
}

&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/6994206409508896363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/3d-rotation-in-android.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/6994206409508896363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/6994206409508896363'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/3d-rotation-in-android.html' title='3D Rotation in Android '/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-1628290848488951072</id><published>2012-10-07T13:15:00.000-07:00</published><updated>2012-10-07T13:15:00.370-07:00</updated><title type='text'>Custom Bar Control for Android using Java</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
The solution has customized bar control
with lot of functions to set various features of control like color,
percentage value. 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
The solution contains the source code
for bar control that can be readily integrated to an Android project.
 
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
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=&quot;25&quot;;
  
  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(&quot;Raj&quot;,&quot;Width=&quot;+getWidth());
  Log.v(&quot;Raj&quot;,&quot;Height=&quot;+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(&quot;Raj&quot;,&quot;getPaddingLeft()=&quot;+getPaddingLeft());
  Log.v(&quot;Raj&quot;,&quot;getPaddingRight()=&quot;+getPaddingRight());
  Log.v(&quot;Raj&quot;,&quot;getPaddingTop()=&quot;+getPaddingTop());
  Log.v(&quot;Raj&quot;,&quot;getPaddingBottom()=&quot;+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(&quot;Dinesh&quot;,&quot;paint.measureText(text)=&quot;+paint.measureText(text));
  canvas.drawText(text,xpos,ypos,paint);
 }
 
 public void setpercent (long total,long covered){
  this.total=total;
  this.covered=covered;
 }
 
}

&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/1628290848488951072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/custom-bar-control-for-android-using.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/1628290848488951072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/1628290848488951072'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/custom-bar-control-for-android-using.html' title='Custom Bar Control for Android using Java'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-5877773895117656735</id><published>2012-10-06T13:57:00.000-07:00</published><updated>2012-10-06T13:57:22.987-07:00</updated><title type='text'>Creating Layouts TableRows and TextViews dynamically in Android through java</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
We have to use &quot;new&quot; keyword to create objects dynamically
&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
public class DynamicViews extends Activity {
 LinearLayout L1, L2;     // Created in xml
 LinearLayout L3;        // Created dynamically in java using &quot;new&quot; operator
 TableLayout TL;          // Created in xml;
 TableRow tr1, tr2, tr3;    // Created dynamically in java using &quot;new&quot; operator
 TextView t1, t2, t3, t4;   // Created dynamically in java using &quot;new&quot; operator

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  
  &lt;-- setContentView( int ); --&gt;

  &lt;-- Get L1 from xml --&gt;
  &lt;-- Get L2 from xml --&gt;

  t1 = new TextView(this);
  &lt;-- t1.setters() --&gt;
  L2.addView(t1);

  L3 = new LinearLayout(this);
  &lt;-- L3.setters() --&gt;
  L3.setOrientation(LinearLayout.VERTICAL);

  &lt;-- Get TL from xml --&gt;
  
  tr1 = new TableRow(this);
  tr2 = new TableRow(this);

  t2 = new TextView(this);
  &lt;-- t2.setters() --&gt;
  tr1.addView(t2);

  
  t3 = new TextView(this);
  &lt;-- t3.setters() --&gt;
  L3.addView(t3);
  t4 = new TextView(this);
  &lt;-- t4.setters() --&gt;
  L3.addView(t4);
  tr2.addView(L3);
  TL.addView(tr1);
  TL.addView(tr2);
  TL.addView(tr3);
 }
}

&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/5877773895117656735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/creating-layouts-tablerows-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/5877773895117656735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/5877773895117656735'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/creating-layouts-tablerows-and.html' title='Creating Layouts TableRows and TextViews dynamically in Android through java'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8033826953846758203.post-8265810851689716705</id><published>2012-10-06T13:54:00.000-07:00</published><updated>2012-10-06T13:54:37.548-07:00</updated><title type='text'>Android SeekBar</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Whenever the progress bar of SeekBar is moved, it will call the inbuild method of OnProgressChange(), inside which we can write our functionality  

&lt;br /&gt;
&lt;pre class=&quot;java&quot; name=&quot;code&quot;&gt;
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);

  &lt;-- get seekBar and editTexts from xml --&gt;

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

  // Initial setup
  editText.setText(&quot;2000.00&quot;);
  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(&quot;%d&quot;, 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);
  }
 } 
}

&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://android-video-tutorial.blogspot.com/feeds/8265810851689716705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/android-seekbar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/8265810851689716705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8033826953846758203/posts/default/8265810851689716705'/><link rel='alternate' type='text/html' href='http://android-video-tutorial.blogspot.com/2012/10/android-seekbar.html' title='Android SeekBar'/><author><name>Raju Gupta</name><uri>http://www.blogger.com/profile/13350804494797609989</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>