現状(necessitas 0.3)、QMLではハードキーの戻るの押下をイベント取得することができません。
戻るキーをユーザーが押下すると問答無用でアクティビティが閉じてしまいます。
なので、「修正しないでね」ってコメントで書いてあるjavaコードを修正して実現します。
この辺は開発中でいつ解消されるかわからないですしキー入力を完全に殺してしまうので、さらっと修正前と後のコード載せておきます。
(Androidアプリの開発経験のある人なら聞くまでもないですね。)
修正対象のファイル : QtActivity.java
戻るキーをユーザーが押下すると問答無用でアクティビティが閉じてしまいます。
なので、「修正しないでね」ってコメントで書いてあるjavaコードを修正して実現します。
この辺は開発中でいつ解消されるかわからないですしキー入力を完全に殺してしまうので、さらっと修正前と後のコード載せておきます。
(Androidアプリの開発経験のある人なら聞くまでもないですね。)
修正対象のファイル : QtActivity.java
修正前
<Category : Qt>
@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
if (QtApplication.m_delegateObject != null && QtApplication.dispatchKeyEvent != null)
return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.dispatchKeyEvent, event);
else
return super.dispatchKeyEvent(event);
}
修正後
public boolean dispatchKeyEvent(KeyEvent event)
{
if (QtApplication.m_delegateObject != null && QtApplication.dispatchKeyEvent != null){
boolean process = false;
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK){
// back key
if(event.getAction() == KeyEvent.ACTION_DOWN){
Log.d("Qt", "back key down");
}else{
Log.d("Qt", "back key up");
}
}else{
// other keys
process = (Boolean) QtApplication.invokeDelegateMethod(QtApplication.dispatchKeyEvent, event);;
}
return process;
}else{
return super.dispatchKeyEvent(event);
}
}

