我希望从连接到我的Android的操纵杆中捕捉键和动作事件中的事件。
我正在使用InputManager.InputDeviceListener
,但支持的最低API级别为14,InputManager.InputDeviceListener
要求API级别为16。
您知道API级别14支持的解决方案吗?
不编译的代码:
public class MyActivity extends Activity implements InputManager.InputDeviceListener {
@Override
public void onResume() {
inputManager.registerInputDeviceListener(this, null);
// Query all input devices.
// We do this so that we can see them in the log as they are enumerated.
int[] ids = inputManager.getInputDeviceIds();
for (int i = 0; i < ids.length; i++)
{
getInputDeviceState(ids[i]);
}
}
@Override
protected void onPause()
{
inputManager.unregisterInputDeviceListener(this);
}
public InputDeviceState getInputDeviceState(int deviceId)
{
InputDeviceState state = inputDeviceStates.get(deviceId);
if (state == null)
{
final InputDevice device = inputManager.getInputDevice(deviceId);
if (device == null)
{
return null;
}
state = new InputDeviceState(device);
inputDeviceStates.put(deviceId, state);
}
return state;
}
}
代码来自Android示例。
答案 0 :(得分:0)
只看你的代码......
您将获得例外,因为您遗漏了super.onResume();
和super.onPause();
答案 1 :(得分:0)
您可以在此处找到有关如何在Android Android版本中支持输入设备侦听器的示例代码: http://developer.android.com/training/game-controllers/compatibility.html#newer
本质上,解决方案是为InputManager和InputDeviceListener提供新的类和接口,它们在API级别16和更高级别上实现为SDK类的包装,在API级别9到15上,它们实现了跟踪和通知连接的输入设备。在运行时,应用程序应通过将Build.VERSION.SDK_INT与Build.VERSION_CODES.JELLY_BEAN进行比较来选择适当的实现。