2013-07-26 3 views
0

Я создаю приложение для своего маленького, потому что она любит телефон, но испортит мой рабочий стол. Я делаю мое приложение с помощью NDK и у меня есть следующие ....Prevent Home Button Press Android NDK

static int32_t handle_input(struct android_app* app, AInputEvent* event) { 
    if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_KEY) 
    { 
    int key_val = AKeyEvent_getKeyCode(event); 
    switch(key_val){ 
     case AKEYCODE_BACK: 
     LOGI("Back Button hit"); 
     break; 
     case AKEYCODE_HOME: 
     LOGI("HOME HIT"); 
     break; 
    } 
    LOGI("Input Recieved %d", key_val); 
    } 
    return 1; 
} 

Но когда я нажимаю кнопку назад, а затем кнопку домой, я вижу ...

I/native-activity(24450): Back Button hit 
I/native-activity(24450): Input Recieved 4 
I/native-activity(24450): Back Button hit 
I/native-activity(24450): Input Recieved 4 
I/ActivityManager( 278): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher} from pid 278 

Есть разрешение или что-то, что я могу дать, чтобы позволить мне поймать кнопку дома? Похоже, что должно быть в этом тестовом классе ...

TEST_F(KeyboardInputMapperTest, Process_SimpleKeyPress) { 
    const int32_t USAGE_A = 0x070004; 
    const int32_t USAGE_UNKNOWN = 0x07ffff; 
    mFakeEventHub->addKey(DEVICE_ID, KEY_HOME, 0, AKEYCODE_HOME, POLICY_FLAG_WAKE); 
+0

Вы укоренены? Благодаря доступу к корню я мог бы что-то написать для вас. – NightSkyCode

+0

Я пытаюсь сделать это без корня, однако, мой эмулятор укоренен, поэтому я мог бы его там. Будет ли это связано с редактированием InputDispatcher.cpp? – Jackie

+0

Вы правы. Однако без root теперь можно это сделать. Вам придется подумать о чем-то умном, я полагаю. – NightSkyCode

ответ

1

Это не имеет значения, если вы разрабатываете с Java SDK или NDK. Ключевые события для кнопки HOME не отправляются в ваше приложение. Это по дизайну, кнопка HOME является универсальной функцией на устройстве Android, и приложения не должны изменять свое поведение.

+0

Я слышу вас от перспективы Spec, однако, от теоретического (это то, что я имею в виду). Я не уверен, что это так. Я думаю, что последний комментарий был прав, мне, вероятно, пришлось бы переписать InputDispatcher.cpp или некоторые из них. – Jackie

+0

Вы абсолютно правы. Получение этих данных в приложение потребует настройки Android и самого фреймворка. – Devunwired

+0

сэр, я хотел узнать, можно ли переключить экран своего Android-устройства при нажатии кнопки «домой», как это делает самсунд. Можете ли вы это сделать? Пожалуйста, направляйте. –