Я делаю приложение, в котором пользователь может звонить своим любимым контактам через мое приложение. При начале разговора включается динамик. Чтобы позвонить, я использую этот Intent.
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel: "+contactnum.get(0)));
startActivity(callIntent);
И когда есть исходящий вызов, есть намерение, которое запускает BroadcastReceiver
<receiver android:name=".MyBroadcast">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
public class MyBroadcast extends BroadcastReceiver{
@Override
public void onReceive(final Context context, Intent intent){
// TODO Auto-generated method stub
PhoneStateListener phoneStateListener = new PhoneStateListener(){
@Override
public void onCallStateChanged(int state, String incomingNumber){
if(state == TelephonyManager.CALL_STATE_RINGING){
}
else if(state == TelephonyManager.CALL_STATE_IDLE){
AudioManager audioManager = (AudioManager) context
.getSystemService(Context.AUDIO_SERVICE);
audioManager.setSpeakerphoneOn(false);
}
else if(state == TelephonyManager.CALL_STATE_OFFHOOK){
AudioManager audioManager = (AudioManager) context
.getSystemService(Context.AUDIO_SERVICE);
audioManager.setSpeakerphoneOn(true);
}
super.onCallStateChanged(state, incomingNumber);
}
};
TelephonyManager mgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
if(mgr != null){
mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}
}
}
Как видите, onReceive включает динамик, когда это необходимо.
Проблема в том, что динамик включается не всегда, а только при первом звонке пользователя. Странно то, что если пользователь звонит во время работы приложения, но не через мое приложение, оно работает правильно, динамик включается каждый раз. Что может вызвать подобное?
И еще кое-что, даже когда приложение не запущено, как будто интент, который запускает приемник, продолжает работать, поэтому, когда я звоню или получаю звонки, он крутит динамик, хотя приложение даже не запущено.