2010-07-12 5 views
5

Я хочу, чтобы иметь возможность захватывать ключевые события внутри службы, которую я пишу. Я могу сделать это внутри деятельности без проблем, но все мои попытки получить эту работу в службе потерпели неудачу. Ключ, который я хотел захватить (глобально), - кнопка BACK, но если это не возможно, любая (аппаратная) кнопка предлагает предложения HTC Desire.Как захватить ключевые события внутри службы?

+0

Почему вы хотите, чтобы захватить его в '' обслуживания? – Macarse

+0

Во-первых: Я новичок в программировании на Android, и я думал, что активность получает только KeyEvents, когда у него есть фокус. Если это не так, мне не нужна услуга строго. Я хочу написать приложение, которое может деактивировать блокировку экрана, которая была активирована датчиком приближения при вызове. Это необходимо, потому что HTC Desire иногда «забывает», чтобы снова включить экран правильно, я хотел сделать это, когда нажата любая кнопка (чтобы можно было повесить трубку, не снимая батарею;)). – user388759

ответ

1

Да, деятельность Android получает только KeyEvents, когда у них есть фокус.

Единственный способ «глобально» захватить нажатие кнопки «Назад» создает InputMethod, чтобы вы могли перехватывать события жестких клавиш. Помните, что использование вашего собственного InputMethod не позволит вам использовать пользовательские клавиатуры, например, Swiftkey.

Вы пытались связаться с HTC по этому вопросу?

+0

Это не мое устройство (у меня есть Samsung Galaxy I9000 - у которого есть свои проблемы;)), но это один из моих друзей. Он искал некоторые форумы, обнаружил, что у некоторых людей такая же проблема, но пока нет решения (я не знаю, связался ли он с HTC). Но после того, как Android был открыт, чтобы мы могли решить проблемы, с которыми мы столкнулись (так я думал), идея заключалась в том, чтобы сделать именно это. ;) – user388759

1

Услуга, не имеет пользовательского интерфейса, так что не получает входной сигнал от пользователя.

Теперь, если у вас была деятельность, которая управляла службой, вы могли бы сделать услугу чем-то особенным, когда во время вашей активности нажата клавиша «назад».

1

Вы можете транслировать KeyEvent из рамок и обработки вещания в вашей службе. Но для этого вам нужно изменить код.

Смежные вопросы