2012-12-13 66 views
2

我想要做的是打電話從我的應用程序,並打開此通話中的揚聲器。如何打開揚聲器打電話在Android Jellybean

在Android 4.0上一切正常,我剛剛設置audiomanager.setSpeakerphoneOn(true)開始調用intent之前。

但是在Android 4.1 PhoneUtils調用之前籤揚聲器狀態,將其關閉(logcat的):

D/PhoneUtils(1029): about to activate speaker 
D/PhoneUtils(1029): activateSpeakerIfDocked()... 
I/PhoneUtils(1029): Forcing speaker off when initiating a new outgoing call... 

我也試着聽使用通話狀態:mTelephonyManager.listen(接收器,PhoneStateListener.LISTEN_CALL_STATE) ; 這個接收器後,將捕獲3種狀態:

  • IDLE(做MEE不感興趣)
  • CALL_STATE_RINGING(也不要很有趣,因爲我需要撥出電話的工作)雖然這
  • CALL_STATE_OFFHOOK(我一個將幫助)

但最後一個 「事件」 也送PhoneUtils檢查揚聲器狀態(logcat的)前:

11:43:48.089 D/KeyguardViewMediator(665): keyguard receiver action : android.intent.action.PHONE_STATE 
11:43:48.089 D/KeyguardViewMediator(665): keyguard receiver TelephonyManager.EXTRA_STATE : OFFHOOK 
11:43:48.099 D/PhoneUtils(977): setAudioMode()...OFFHOOK 
11:43:48.099 D/MyPhoneStateListener:main(2590): catching call state CALL_STATE_OFFHOOK 
11:43:48.099 D/MyPhoneStateListener:main(2590): turning phone speaker on 
... 
11:43:48.119 D/PhoneUtils(977): about to activate speaker 
11:43:48.119 I/PhoneUtils(977): Forcing speaker off when initiating a new outgoing call... 

如果有人面臨同樣的問題或有solutuion?

謝謝!

+0

在哪一部電話是?在香草Android揚聲器模式只應關閉來電,而不是撥出電話。 – Michael

+0

@Michael我試圖在星系聯繫上做它。 – molokoka

+0

您能否提供更多信息,爲什麼只能關閉來電? 謝謝! – molokoka

回答

1

我有這個星期這個問題..

讀果凍豆源代碼,我已經發現這個代碼

// This is not an error but might cause users' confusion. Add log just in case. 
Log.i(LOG_TAG, "Forcing speaker off when initiating a new outgoing call...");  
PhoneUtils.turnOnSpeaker(app, false, true); 

所以這是它,在4.1版本的Android勢力揚聲器在關閉傳入和傳出呼叫。 我的解決方法是打開我的通話狀態廣播接收器中的揚聲器,開始撥打電話

+1

感謝您的回答! 我也嘗試過使用broascast接收器,但我在接到電話之前收到了這個意圖: '13:56:16.565 D/VoiceDial:main(2554):收到呼叫事件<--- onRecieve(Intent.ACTION_NEW_OUTGOING_CALL)' '13:56:16.875 D/PhoneUtils(1017):即將激活揚聲器' – molokoka

+0

Molokoka你明白這是因爲該意圖的「意圖」是給你一個重定向呼叫的機會。我不知道如何解決這個問題,但這就是爲什麼你要在通話之前得到它。 – eipipuz