Я пишу приложение для Android, мне нужно запустить широковещательный приемник внутри службы, приемник обнаруживает, когда есть входящий звонок, и когда вызов завершен или отвечает, служба переключает телефон в тихий режим, и ресивер обнаруживает, когда есть входящий вызов, если есть входящий вызов, приемник устанавливает, что режим звонка звонит и вибрирует нормально, когда на вызов отвечает или заканчивается, ресивер устанавливает звоните в бесшумный режим.Обнаружение завершения вызова с широковещательным приемником внутри службы
вот мой приемник:
private final BroadcastReceiver CallReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
amanager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (TelephonyManager.EXTRA_STATE_RINGING.equals(state))
{
amanager.setRingerMode(2); //Ringer ON
}
if (TelephonyManager.EXTRA_STATE_IDLE.equals(state))
{
amanager.setRingerMode(0); //Ringer Silent
}
if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(state))
{
amanager.setRingerMode(0); ////Ringer Silent
}
}
};
Внутри onStartCommand метода в моей службе:
IntentFilter filter = new IntentFilter();
filter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
registerReceiver(CallReceiver, filter);
сервис работает успешно и приемник определяет, когда есть входящий вызов, но сбой приложения впоследствии, какие-либо идеи, почему это происходит? Ваша помощь приветствуется!
EDIT: Я решил проблему, выяснилось, что я написал неправильное действие в манифесте, оно не сработает после его изменения.
Но теперь приемник обнаруживает только входящий вызов, но не обнаруживает, что ответ на вызов или закончился, он обнаружил его несколько раз, но в большинстве случаев он не работает, звонок остается включенным после звонок закончился! любые идеи?
Посмотрите на аварии в LogCat и вывесить StackTrace и сообщение об ошибке, –
я зафиксировал аварию, но теперь приемник не обнаруживает конец вызова и телефон остается в нормальном режиме звонка после того, как вызов свыше .. – naz89
Как вы начинаете/останавливаете обслуживание? Что вы возвращаете из 'onStartCommand()'? Можете ли вы сказать, работает ли ваша служба по завершении вызова? –