Call_withSpeaker在三星4.2.2上设置闹钟不工作



我的应用程序Call_withSpeaker设置闹钟在android 4.2.1 micromax, 4.1.2三星和2.3摩托罗拉工作正常。三星4.2.2唯一的问题…一切都很好,但扬声器不启用通话开始只有在4.2.2三星。我使用PhoneStateListener,如果呼叫开始一旦我使用

AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
                  audioManager.setMode(AudioManager.MODE_IN_CALL);
                  audioManager.setSpeakerphoneOn(true);  

我在这里面临的问题是打开和关闭扬声器手机不能正常工作,只有三星4.2.2和三星duas 4.1.2该怎么办?你知道吗??这是否与手机版本或某些设置有关???

这只是因为在某些移动设备(SdkVersion 11及以上)中,它没有经过TelephonyManager.CALL_STATE_OFFHOOKTelephonyManager.CALL_STATE_RINGING并直接调用TelephonyManager.CALL_STATE_IDLE,因此在某些情况下它无法运行您的逻辑。检查每一个调用状态总比了解问题要好。

你得多锻炼一下你的大脑…:)

检查. .它会帮助你的

if (TelephonyManager.CALL_STATE_RINGING == state) {
        Log.i(LOG_TAG, "RINGING start ");
          isPhoneCalling = true; 
          AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
          audioManager.setMode(AudioManager.MODE_IN_CALL);
          audioManager.setSpeakerphoneOn(true);
        }
if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
        // active
        Log.i(LOG_TAG, "OFFHOOK..callringing");
    isPhoneCalling = true;
    AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
    audioManager.setMode(AudioManager.MODE_IN_CALL);
      audioManager.setSpeakerphoneOn(true);
        }

if (TelephonyManager.CALL_STATE_IDLE == state) {
        // run when class initial and phone call ended, need detect flag
        // from CALL_STATE_OFFHOOK
        Log.i(LOG_TAG, "_callend on start ");
        Log.i("start ", "start "+callFromApp + isPhoneCalling  );    
    if (isPhoneCalling) {
            Log.i(LOG_TAG, "IDLE_callendafter ring ");
                AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
                audioManager.setMode(AudioManager.MODE_NORMAL); 
                //Deactivate loudspeaker
                audioManager.setSpeakerphoneOn(false);
               // Remove listener
                PhoneCallListener phoneListener = new  PhoneCallListener();
                TelephonyManager telephonyManager = (TelephonyManager)mContext.getSystemService(Context.TELEPHONY_SERVICE);
                telephonyManager.listen(phoneListener,PhoneStateListener.LISTEN_NONE); 
                isPhoneCalling = false;

           }
}

最新更新