skip to main | skip to sidebar

Android Development Tutorial

Pages

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

Reordering of listview

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

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



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




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


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

</AbsoluteLayout>

//CustomListView.java:

import java.util.ArrayList;

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

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

 }

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

 }
 
 

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

}


//ReorderAdapter.java:

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

import com.myself.dragndrop.R;

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

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

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

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

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

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

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

//DragAndDrop.java :

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


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


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

Text-to-Speech capability for Android Devices

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

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


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

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

 }

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

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

Android Stub uninstalling the existing client and launching another client

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

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



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

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

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

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

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

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

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

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

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

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

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

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

Tab creation in android screen

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

Creation of tab using xml   




      
            
            
      
 

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

ListView Recordering by drag drop in Android

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

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


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

//Import the attached java file in your package.

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

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



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

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

Android app for SimpleWiktionary

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

   ByteArrayOutputStream content = new ByteArrayOutputStream();

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

App in android for random quote generation

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

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

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

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

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



import java.util.List;

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

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



import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteStatement;
import android.util.Log;
 
import java.util.ArrayList;
import java.util.List;
 
public class Datahelper {
 
   private static final String DATABASE_NAME = "codes_391184_new.db";
   private static final int DATABASE_VERSION = 1;
   private static final String 
[ Read More ]
Read more...
Older Posts
Subscribe to: Posts (Atom)

More Technical Blogs

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

Popular Posts

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

Archives

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

Followers

Labels

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

Bloggerized by DheTemplate.com - Main Blogger