私がやろうとしているのは、アプリから電話をかけ、この電話でスピーカーをオンにすることです。
android 4.0ではすべて問題ありませんでした。コールインテントを開始する前に、 audiomanager.setSpeakerphoneOn(true)を設定しました。
しかし、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(receiver、PhoneStateListener.LISTEN_CALL_STATE); このレシーバーが3つの状態をキャッチした後:
- IDLE(私には面白くない)
- 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...
誰かが同じ問題に直面したり、解決策を持っている場合はどうなりますか?
ありがとう!