6

我想在电话响铃时说出来电者姓名。我知道如何用他的名字获取来电者的来电号码

String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
        incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);

        Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(incomingNumber)); 
        Cursor cursor = context.getContentResolver().query(uri, new String [] {PhoneLookup.DISPLAY_NAME}, null, null, null);

        if (cursor.moveToFirst()) {
            callerName = cursor.getString(0);
        }

        Log.d(TAG, "Display name: " + callerName);

当电话响起时,我知道如何倾听android.intent.action.PHONE_STATE并抓住它。

我也知道如何说出来电者姓名,TextToSpeech.OnInitListener但我遇到了如何停止响铃并播放来电者姓名然后再次开始响铃的问题。

如何在未播放来电者姓名之前停止响铃?我正在搜索,但找不到解决方案。

4

1 回答 1

0

恐怕这是不可能的。Android 参考资料并未涵盖这一点,但我对其进行了一段时间的测试,并且只能在通话的早期阶段(在您听到声音之前)控制铃声音量。您在通话结束后所做的每项更改都会在通话结束后生效(因此,在下一次通话时)。我不知道其他流的行为是什么,我只对这个感兴趣(但我猜这没关系,因为你不能静音 STREAM_RING)。

于 2013-10-28T15:19:22.757 回答