2014-02-21 125 views
-1

如何在接聽電話時說出來電者姓名。 https://groups.google.com/forum/#!topic/tasker/V_z1YJ6lBGQ http://www.tutorialspoint.com/android/android_text_to_speech.htm 有一些提到,但我已經做到了,我已經收到來電者姓名,現在我想將該文本轉換爲接收方法中的語音。 我確實使用了事件處理程序,並將該名稱發送給其他活動,但它在應用程序關閉時沒有說出名稱。Android說來電者姓名

+0

得到接收器的數量和進行比較在電話聯繫 – appukrb

+0

@appubala我已經做了,現在需要說,即使應用程序關閉的名稱, – user2409402

+0

電話接收器具有更高的優先級,當電話來了所有任務去背景,但有可能性您可以在響鈴時將來電鈴聲更改爲來電者姓名。 – appukrb

回答

0
Bundle bundle = intent.getExtras(); 


      if(null == bundle) 
        return; 


      String state = bundle.getString(TelephonyManager.EXTRA_STATE); 


      if(incoming_flag==true){ 
      if(state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING)) 
      { 

        ////////testing ends 

        String phonenumber = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); 
        // String personname=bundle.getString(TelephonyManager.)  
        Log.i("IncomingCallReceiver","Incomng Number: " + phonenumber); 
        ContentResolver con =null; 


        //testing name 
        Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phonenumber)); 

        Cursor cursor = context.getContentResolver().query(uri, new String[]{PhoneLookup.DISPLAY_NAME},null,null,null); 
        if (cursor.moveToFirst()) 
        { 
         name = cursor.getString(cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME)); 
        } 

你將不得不生成廣播爲它來檢測來電使用onRecieve參數的時意圖獲得命名上面的示例代碼顯示了這樣做的話,你就必須寫一個服務,將從廣播開始呼叫者姓名使用文本播放語音方法

0

首先檢測聯繫電話,只要任何新的呼叫到達時,該線程將幫助你這樣做

Retrieve incoming call's phone number in Android

而且一旦你有檢測T他聯繫來電號碼,比您可以將該聯繫人號碼與設備上保存的所有聯繫人列表進行比較。

使用下面的方法獲取所有聯繫人姓名和電話號碼從您的設備

ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, 
       null, null, null, null); 
     if (cur.getCount() > 0) { 
      while (cur.moveToNext()) { 
        String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
        String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
        if (Integer.parseInt(cur.getString(
         cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
        Cursor pCur = cr.query(
           ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
           null, 
           ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
           new String[]{id}, null); 
        while (pCur.moveToNext()) { 
         String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         Toast.makeText(NativeContentProvider.this, "Name: " + name + ", Phone No: " + phoneNo, Toast.LENGTH_SHORT).show(); 
        } 
        pCur.close(); 
       } 
      } 
     } 

如需詳細瞭解這一點,你可以檢查此方針

http://saigeethamn.blogspot.in/2011/05/contacts-api-20-and-above-android.html