Я пытаюсь отключить входящий звонок и не допустить, чтобы устройство BlackBerry звонило. Я попробовал Alert.setVolume (0) и некоторые ключи EventInjector, но это не сработало.Как отключить входящий звонок
Итак, как отключить входящий звонок?
Я пытаюсь отключить входящий звонок и не допустить, чтобы устройство BlackBerry звонило. Я попробовал Alert.setVolume (0) и некоторые ключи EventInjector, но это не сработало.Как отключить входящий звонок
Итак, как отключить входящий звонок?
Вы won't be able to отключите звук программно (нашли пару других источников, которые сказали то же самое). Лучшим обходным людям, которые, казалось, придумали, было использовать EventInjector
, чтобы изменить звуковой профиль телефона на тихий.
Я был озадачен вашим вопросом и решил заняться решением проблемы. Я пробовал разные вещи, включая
UiApplication.getUiApplication().getActiveScreen()
В конце концов, нажатие клавиши VOLUME UP (клавиша VOLUME DOWN работает также), работала для меня и приглушила звонок устройства при входящем вызове. Недостатком этого подхода является то, что иногда устройство выполняло кольцевую передачу в течение секунды, прежде чем приглушить.
import net.rim.blackberry.api.phone.AbstractPhoneListener;
import net.rim.blackberry.api.phone.Phone;
import net.rim.device.api.system.Application;
import net.rim.device.api.system.EventInjector;
import net.rim.device.api.ui.Keypad;
class Muter extends AbstractPhoneListener {
public void callIncoming(int callId) {
Thread muterThread = new Thread(new Runnable() {
public void run() {
EventInjector.invokeEvent(new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_DOWN, (char) Keypad.KEY_VOLUME_UP, 0));
EventInjector.invokeEvent(new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_UP, (char) Keypad.KEY_VOLUME_UP, 0));
}
});
muterThread.setPriority(Thread.MAX_PRIORITY);
muterThread.start();
}
}
public class MuterApp extends Application {
public static void main(String[] args){
Phone.addPhoneListener(new Muter());
new MyApp().enterEventDispatcher();
}
}
Следующая также работает (заменить Muter
нить callIncoming()
методом с помощью следующего кода).
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
EventInjector.invokeEvent(new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_DOWN, (char) Keypad.KEY_VOLUME_UP, 0));
EventInjector.invokeEvent(new EventInjector.KeyCodeEvent(EventInjector.KeyCodeEvent.KEY_UP, (char) Keypad.KEY_VOLUME_UP, 0));
}
});
Спасибо за ваш ответ. Но я хочу, чтобы звонок был выключен при получении звонка не через несколько секунд. У вас есть какие-то сведения об этом? –
@FaridFarhat Не сейчас. Кстати, это не пара секунд, но, вероятно, менее половины секунды в некоторых случаях. В других случаях звонок немедленно отключается. – mrvincenzo
Некоторые телефоны Blackberry имеют ключ-заглушку. Вы можете попробовать следующую идею:
public void callIncoming(int callId) {
if (KeyPad.hasMuteKey()) {
/* Inject KEY_SPEAKERPHONE event */
}
else {
/* Inject KEY_VOLUME_DOWN event N times, so that you get the mute effect */
}
}
Я совершенно новой для всего этого ... но я думал, что я мог бы также поставить в моей 2 центов стоит ...
я пытался найти способы программного изменения настроек профиля ...
Я обнаружил, что, хотя мы не можем изменить настройки профиля, мы можем изменить настройку, которую мы используем (измените используемый профиль, я думаю) - это то, с чем я столкнулся с поиском информации, хотя я должен отдать должное alishaik786 за код.
public final class LoadingScreen extends MainScreen implements FieldChangeListener
{
public LoadingScreen()
{
createGUI();
}
private void createGUI()
{
try
{
ApplicationManager.getApplicationManager().launch("net_rim_bb_profiles_app");
}
catch (Exception e)
{
//Exception
}
}
public void fieldChanged(Field field, int context)
{
}
}
Хорошо, я знаю это. Но как использовать EventInjector для изменения звукового профиля телефона до молчания? Я пробовал пару комбинаций и не работал ... никаких идей? –
Если у вас есть устройство BB, просто выясните нажатия клавиш, необходимые для изменения телефона в тихом профиле, а затем повторите его с помощью вашего кода. – jprofitt
Выяснил это ... попробовал ... и не работал :) –