Android tutorial - Call announcer for android | Android Simple Caller Talker - android app development - android studio - android development tutorial



 simple caller talker view

what is Caller Talker?

  • Caller Name & SMS Talker speaks out name of the caller on Incoming call or SMS , in situations like you are driving and the Phone is in your pocket, or another room, so that you can identify who is calling you without looking your phone screen.
  • Android provides the facility to know the incoming number and speak it by the help of android speech api and telephony manager.
  • Here, we are going to develop a basic android app that speaks the incoming number while phone is in ringing mode.
 symbols of calltalker

activity_main.xml

  • We have not done anything special here. It has the simple textview.
  • File: activity_main.xml
	<RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android"  
	    xmlns:tools="http://schemas.android.com/tools"  
	    android:layout_width="match_parent"  
	    android:layout_height="match_parent"  
	    android:paddingBottom="@dimen/activity_vertical_margin"  
	    android:paddingLeft="@dimen/activity_horizontal_margin"  
	    android:paddingRight="@dimen/activity_horizontal_margin"  
	    android:paddingTop="@dimen/activity_vertical_margin"  
	    tools:context=".MainActivity" >  
	  
	    <TextView  
	        android:layout_width="wrap_content"  
	        android:layout_height="wrap_content"  
            android:text="@string/hello_world" />  
	  
	</RelativeLayout>  
click below button to copy the code from android tutorial team

Activity class

  • In this activity, we have written the code to know the phone state, and speak the incoming number by the help of TextToSpeech class.
  • File: MainActivity.java
	package com.example.callertalker;  
	import java.util.Locale;  
	import android.media.AudioManager;  
	import android.os.Bundle;  
	import android.app.Activity;  
	import android.content.Context;  
	import android.telephony.PhoneStateListener;  
	import android.telephony.TelephonyManager;  
	import android.util.Log;  
	import android.widget.Toast;  
	import android.speech.tts.TextToSpeech;  
	  
	public class MainActivity extends Activity implements TextToSpeech.OnInitListener {  
	    private TextToSpeech tts;  
	    @Override  
	    protected void onCreate(Bundle savedInstanceState) {  
	        super.onCreate(savedInstanceState);  
	        setContentView(R.layout.activity_main);  
	          
	        tts = new TextToSpeech(this, this);  
	            
	        TelephonyManager telephonyManager = (TelephonyManager)getSystemService(  
	                                                                         Context.TELEPHONY_SERVICE);  
	          
	        PhoneStateListener callStateListener = new PhoneStateListener() {  
	        public void onCallStateChanged(int state, String incomingNumber){  
              if(state==TelephonyManager.CALL_STATE_RINGING){  
	                  tts.speak(incomingNumber+" calling", TextToSpeech.QUEUE_FLUSH, null);  
	                  Toast.makeText(getApplicationContext(),"Phone is Ringing : "+incomingNumber,   
                      Toast.LENGTH_LONG).show();  
	                 }  
                     if(state==TelephonyManager.CALL_STATE_OFFHOOK){  
	                    Toast.makeText(getApplicationContext(),"Phone in a call or call picked",   
	                                                                                  Toast.LENGTH_LONG).show();  
	              }  
	              if(state==TelephonyManager.CALL_STATE_IDLE){  
	                    //phone is neither ringing nor in a call  
	              }  
	        }  
	        };  
	        telephonyManager.listen(callStateListener,PhoneStateListener.LISTEN_CALL_STATE);  
	    }  
	  
	    @Override  
	    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 {          
	            }  
	  
	        } else {  
	            Log.e("TTS", "Initilization Failed!");  
	        }  
	    }  
	      
	    @Override  
	    public void onDestroy() {  
	    // Don't forget to shutdown tts!  
	    if (tts != null) {  
	        tts.stop();  
	        tts.shutdown();  
	    }  
	    super.onDestroy();  
	    }  
	}  
click below button to copy the code from android tutorial team

AndroidManifest.xml

  • You need to add READ_PHONE_STATE uses permission in this xml file. Let's see the full code.
  • File: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:androclass="http://schemas.android.com/apk/res/android"  
    package="com.example.callertalker"  
    android:versionCode="1"  
    android:versionName="1.0" >  
  
    <uses-sdk  
        android:minSdkVersion="8"  
        android:targetSdkVersion="17" />  
  
   <uses-permission android:name="android.permission.READ_PHONE_STATE" />  
       
    <application  
        android:allowBackup="true"  
        android:icon="@drawable/ic_launcher"  
        android:label="@string/app_name"  
        android:theme="@style/AppTheme" >  
        <activity  
            android:name="com.example.callertalker.MainActivity"  
            android:label="@string/app_name" >  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
    </application>  
  
</manifest>  

click below button to copy the code from android tutorial team

Output:

 output of callertalker

Related Searches to Call announcer for android | Android Simple Caller Talker