skip to main | skip to sidebar

Android Development Tutorial

Pages

  • Home
 
  • RSS
  • Twitter
Related Posts Plugin for WordPress, Blogger...
Wednesday, September 19, 2012

Android SMS Reader

Posted by Admin at 12:23 PM – 1 comments
 
SMS Reader is an application that read all incoming SMS loudly.And it has feature of reading existing SMS using navigation keys.
package com.sms.reader;

import java.util.Locale;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

public class ReadSMSActivity  extends Activity implements TextToSpeech.OnInitListener{
  private ImageView prevBtn;
  private ImageView nextBtn;
  private ImageView speakBtn;
  private TextView msgTxt;
  private TextView inboxTxt;
  private TextView fromTxt;
  private TextToSpeech tts;
      int totalSMS=0;
      int smsIndex=0;
      String from="";
 
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.inbox);
         tts = new TextToSpeech(this, this);
         nextBtn = (ImageView) findViewById(R.id.nextImg);
         prevBtn = (ImageView) findViewById(R.id.prevImg);
         speakBtn = (ImageView) findViewById(R.id.speakImg);
         msgTxt= (TextView) findViewById(R.id.msgTxt);
         inboxTxt= (TextView) findViewById(R.id.inboxTxt);
         fromTxt=(TextView) findViewById(R.id.fromTxt);
        
         Uri uriSMSURI = Uri.parse("content://sms/inbox");
        Cursor cur1 = getContentResolver().query(uriSMSURI, null, null, null,null); 
        totalSMS=cur1.getCount();
        inboxTxt.setText("Inbox("+(smsIndex+1)+"/"+totalSMS+")");
          msgTxt.setText(readSMS());
          fromTxt.setText("From: "+from);
      
         nextBtn.setOnClickListener(new View.OnClickListener() {
           
             
             public void onClick(View arg0) {
              smsIndex=smsIndex+1;
                   msgTxt.setText(readSMS());
                 inboxTxt.setText("Inbox("+(smsIndex+1)+"/"+totalSMS+")");
                  fromTxt.setText("From: "+from);
             }

      } );
    speakBtn.setOnClickListener(new View.OnClickListener() {
           
             
             public void onClick(View arg0) {
              

               

               
              String text = msgTxt.getText().toString();
              tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
             }

      } );
         prevBtn.setOnClickListener(new View.OnClickListener() {
      
         
         public void onClick(View arg0) {
           smsIndex=smsIndex-1;
           msgTxt.setText(readSMS());
           inboxTxt.setText("Inbox("+(smsIndex+1)+"/"+totalSMS+")");
           fromTxt.setText("From: "+from);
         
         }

  } );
     }
   public String readSMS(){
     Uri uriSMSURI = Uri.parse("content://sms/inbox");
       Cursor cur = getContentResolver().query(uriSMSURI, null, null, null,null); 
       String sms = "";
       if(smsIndex==-1)
        smsIndex=totalSMS-1;
       else if( smsIndex==totalSMS)
        smsIndex=0;
      if (cur.moveToPosition(smsIndex)) {
           try {
    sms   =  cur.getString(11) ;
    from=cur.getString(2);
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }         
       }
      else
       sms="You don't have SMS";
       return sms;
  }
 public void onInit(int status) {

if (status == TextToSpeech.SUCCESS) {

    int result = tts.setLanguage(Locale.US);

    if (result == TextToSpeech.LANG_MISSING_DATA
            || result == TextToSpeech.LANG_NOT_SUPPORTED) {
        Log.e("TTS", "This Language is not supported");
    } /*else {
        btnSpeak.setEnabled(true);
        speakOut();
    }*/

} else {
    Log.e("TTS", "Initilization Failed!");
}

} 
 public void onDestroy() {
  // Don't forget to shutdown tts!
  if (tts != null) {
      tts.stop();
      tts.shutdown();
  }
  super.onDestroy();
  }
}




package com.sms.reader;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;

public class SMSReaderActivity  extends BroadcastReceiver{

  /*  private SharedPreferences preferences;
    TTSActivity tTSActivity = null;
    

    public void    setMainActivityHandler(TTSActivity tTSActivity){
    this.tTSActivity = tTSActivity;
    }
*/
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

        if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
            Bundle bundle = intent.getExtras();           //---get the SMS message passed in---
            SmsMessage[] msgs = null;
            String msg_from;
            if (bundle != null){
                //---retrieve the SMS message received---
                try{
                    Object[] pdus = (Object[]) bundle.get("pdus");
                    msgs = new SmsMessage[pdus.length];
                    for(int i=0; i<msgs.length; i++){
                        msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                        msg_from = msgs[i].getOriginatingAddress();
                        String msgBody = msgs[i].getMessageBody();
                        Log.d("APP","SMS Receiver started."+msgBody);
                        Intent intent1 = new Intent(context, TTSActivity.class);
                        intent1.putExtra("sms-text", msgBody);
                        intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
                        context.startActivity(intent1);
                    }
                }catch(Exception e){
//                            Log.d("Exception caught",e.getMessage());
                }
            }
        }
    }
}


package com.sms.reader;

import java.util.Locale;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
/*import com.sms.reader.R;*/
import android.widget.ImageView;

public class TTSActivity extends Activity implements
TextToSpeech.OnInitListener {
/** Called when the activity is first created. */

private TextToSpeech tts;
 
private EditText txtText;
private ImageView inboxBtn;

 

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

tts = new TextToSpeech(this, this);

 

txtText = (EditText) findViewById(R.id.txtText);
inboxBtn = (ImageView) findViewById(R.id.inboxImg);
 
Intent intent = getIntent();
String sms = intent.getExtras().getString("sms-text");
txtText.setText(sms);
String text = txtText.getText().toString();
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("You Got SMS. Shall I read ?").setPositiveButton("Yes", dialogClickListener)
    .setNegativeButton("No", dialogClickListener).show();
// button on click event
inboxBtn.setOnClickListener(new View.OnClickListener() {
  
    
    public void onClick(View arg0) {
     Intent intent = new Intent(TTSActivity.this, ReadSMSActivity.class);
        startActivity(intent);  
    }

} );
}

public void onDestroy() {
// Don't forget to shutdown tts!
if (tts != null) {
    tts.stop();
    tts.shutdown();
}
super.onDestroy();
}


public void onInit(int status) {

if (status == TextToSpeech.SUCCESS) {

    int result = tts.setLanguage(Locale.US);

    if (result == TextToSpeech.LANG_MISSING_DATA
            || result == TextToSpeech.LANG_NOT_SUPPORTED) {
        Log.e("TTS", "This Language is not supported");
    } /*else {
        btnSpeak.setEnabled(true);
        speakOut();
    }*/

} else {
    Log.e("TTS", "Initilization Failed!");
}

}

private void speakOut() {

String text = txtText.getText().toString();

tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
        switch (which){
        case DialogInterface.BUTTON_POSITIVE:
         speakOut();
            break;

        case DialogInterface.BUTTON_NEGATIVE:
            //No button clicked
            break;
        }
    }
};
}
Email This BlogThis! Share to X Share to Facebook

One Response so far.

  1. SID says:
    February 14, 2013 at 6:42 AM

    can u upload the androidmanifest file . . strings.xml .... n view file ?

Leave a Reply

Newer Post Older Post
Subscribe to: Post Comments (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

  • How to Program for Android: Video Tutorial 5 - Switch Activities
    This tutorial shows you how to switch activities in your application.
  • Custom Bar Control for Android using Java
    The solution has customized bar control with lot of functions to set various features of control like color, percentage value. The sol...
  • Android Video Tutorial - Creating and using themes
    In this video, you learn about how to create theme in andorid and apply them to your application.
  • Android Application Development Episode #8 - The Alert Dialog
    In this episode we will take a look at the Alert Dialog. This dialog lets the user interact with your application and it is also very easy...
  • Android Application Development Episode #4 - Using Checkboxes In A Slightly Advanced Layout
    In this episode we will have a look at how to use checkboxes and how to incorporate them into a complex layout.
  • Android Application Development Episode #10 - Intents: An Introduction
    In this tutorial I want to give you a brief overview of what Intents are and how to use them. We will start out very simple here and will ...
  • 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...
  • How to Program for Android: Video Tutorial 3 - Add widget
    This video shows how to add basic widgets to an android application
  • Android Test Project Using Instrumentation
    This video clips explain how to create an android test project that uses instrumentation for executing tests on the handset itself.
  • Android Video Tutorial: Android Application Development - Location Sensors
    This example illustrates how to use location-based services in Android. First, we use LocationManager to figure out our current location ba...
Powered by Blogger.

Archives

  • ▼  2012 (44)
    • ►  October (31)
    • ▼  September (3)
      • Android SMS Reader
      • Using Account Manager in Andriod
      • Get User name using Andriod
    • ►  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