Wednesday, February 29, 2012

How do I convert InputStream to String in android?


public class StreamToString {

    public static void main(String[] args) throws Exception {
        StreamToString sts = new StreamToString();

        /*
         * Get input stream of our data file. This file can be in
         * the root of you application folder or inside a jar file
         * if the program is packed as a jar.
         */
        InputStream is = sts.getClass().getResourceAsStream("/data.txt");

        /*
         * Call the method to convert the stream to string
         */
        System.out.println(sts.convertStreamToString(is));
    }

    public String convertStreamToString(InputStream is)
            throws IOException {
        /*
         * To convert the InputStream to String we use the
         * Reader.read(char[] buffer) method. We iterate until the
         * Reader return -1 which means there's no more data to
         * read. We use the StringWriter class to produce the string.
         */
        if (is != null) {
            Writer writer = new StringWriter();

            char[] buffer = new char[1024];
            try {
                Reader reader = new BufferedReader(
                        new InputStreamReader(is, "UTF-8"));
                int n;
                while ((n = reader.read(buffer)) != -1) {
                    writer.write(buffer, 0, n);
                }
            } finally {
                is.close();
            }
            return writer.toString();
        } else {        
            return "";
        }
    }
}

How do I convert String to Date object in android?


public class StringToDate {
    public static void main(String[] args) {
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");

        try {
            Date today = df.parse("20/12/2005");
            System.out.println("Today = " + df.format(today));
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

Below is the Result
Today = 20/12/2005

How to get HTML content of URL open in Android Webview?

In OnCreate method copy the below code and the desire'd URL....


mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");

progressDialog.ShowProgressDialog(0, getString(R.string.Loading_data));

mWebView.setWebViewClient(new WebViewClient() {
   public boolean shouldOverrideUrlLoading(WebView view, String url) {
mWebView.loadUrl(url);
return false;
   }
 
   @Override
   public void onPageStarted(WebView view, String url, Bitmap favicon){
   }

   public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){
progressDialog.CloseProgressDialog();
   }

   @Override
   public void onPageFinished(WebView view, String url) {
progressDialog.CloseProgressDialog();
mWebView.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");

   }
});
mWebView.loadUrl(selectedSocial);

And below is the method which we have registered will give the html content in String.......


/* An instance of this class will be registered as a JavaScript interface */
    class MyJavaScriptInterface {
public void showHTML(String html) {
    String htmlString = html;
             }
}


Tuesday, February 28, 2012

HowTo: Get the selected list index on Android Activity from context menu event?



Consider the situation where you have an Activity displaying a list of items. You have a context menu and a normal option menu. When pressing the option menu button, you can get the selected item and index as follows:
//the selected index
int index = listView.getSelectedItemPosition();
//selected item
Object selObj = listView.getSelectedItem();
It is as simple as that. If you registered a context menu on the list, then the situation changes slightly and the "getSelectedItemPosition()" will fail. Instead, you have to do something like this
AdapterView.AdapterContextMenuInfo menuInfo;
menuInfo = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
int index = menuInfo.position;




Example for SensorListener in Android?


public class TestActivity extends Activity implements SensorEventListener {
   private SensorManager mgr;
   private Sensor sensorAccelerometer;
   private long lastUpdate;
   private float lastX = 0.5f;
   private float lastY = 0.5f;
   private float lastZ = 0.9f;
   
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setActionBarContentView(R.layout.testactivity);
   
      mgr = (SensorManager)getSystemService(SENSOR_SERVICE);
      sensorAccelerometer = mgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
   }
  
   @Override
   protected void onResume() {
      super.onResume();
      mgr.registerListener(this, sensorAccelerometer, SensorManager.SENSOR_DELAY_UI);
   }
  
   @Override
   protected void onPause() {
      super.onPause();
      mgr.unregisterListener(this);
   }
 
   @Override
   public void onAccuracyChanged(Sensor sensor, int accuracy) {
      // TODO Auto-generated method stub
   }
 
   @Override
   public void onSensorChanged(SensorEvent event) {
      if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
         long currTime = System.currentTimeMillis();
    
         if((currTime - lastUpdate) > 1000){ //just scan every second
            lastUpdate = currTime;
      
            float xAxis = event.values[SensorManager.DATA_X];
            float yAxis = event.values[SensorManager.DATA_Y];
            float zAxis = event.values[SensorManager.DATA_Z];
     
            String comment = inMovement(xAxis, yAxis, zAxis) ? "not moving" : "in movement";
     
            publishValues(xAxis, yAxis, zAxis, comment);
     
            lastX = xAxis;
            lastY = yAxis;
            lastZ = zAxis;
         
      }
   }
 
   private boolean inMovement(float xAxis, float yAxis, float zAxis) {
      final float tolerance = 0.5f;
   
      if(Math.abs(xAxis - lastX) <= tolerance && Math.abs(yAxis - lastY) <= tolerance && Math.abs(zAxis - lastZ)<=tolerance){
         return true;
      }else
         return false;
      }
 
      private void publishValues(float x, float y, float z, String comment) {
         TextView mainText =(TextView)findViewById(R.id.textView);
   
         mainText.setText("X: " + x + " - Y: " + y + " - Z: " + z + "\nComment: " + comment);
      }
}