2014-02-21 2 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
당신은 들어오는 감지 위의 샘플 코드의 이름을 얻기 위해 사용을 onRecieve의 PARAM의 의도에 전화를 할 수있는 방법을 보여줍니다하는 브로드 캐스트를 생성해야합니다

, 당신은 것입니다 서비스를 작성해야합니다

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)); 
        } 

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

관련 문제