Android: 从不在视图中的应用程序中读取游戏手柄(游戏控制器)事件
创始人
2024-10-02 11:30:07
0

要从不在视图中的应用程序中读取游戏手柄事件,可以使用Android的输入管理器(InputManager)来实现。以下是一个包含代码示例的解决方法:

  1. 首先,在AndroidManifest.xml文件中添加以下权限:


  1. 创建一个Service类,用于在后台监听游戏手柄事件。在该类中,我们将使用InputManager注册监听器来获取游戏手柄事件。
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.view.InputDevice;
import android.view.InputEvent;
import android.view.InputManager;

public class GamepadService extends Service {

    private InputManager mInputManager;
    private InputManager.InputDeviceListener mInputDeviceListener;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        // 获取InputManager实例
        mInputManager = (InputManager) getSystemService(Context.INPUT_SERVICE);

        // 注册InputDeviceListener监听器
        mInputDeviceListener = new InputManager.InputDeviceListener() {
            @Override
            public void onInputDeviceAdded(int deviceId) {
                // 检查新添加的设备是否是游戏手柄
                InputDevice device = mInputManager.getInputDevice(deviceId);
                if (device != null && (device.getSources() & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) {
                    // 注册事件监听器
                    mInputManager.registerInputDeviceListener(this, null);
                }
            }

            @Override
            public void onInputDeviceRemoved(int deviceId) {
                // 处理设备移除事件
            }

            @Override
            public void onInputDeviceChanged(int deviceId) {
                // 处理设备变化事件
            }
        };

        mInputManager.registerInputDeviceListener(mInputDeviceListener, null);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mInputManager.unregisterInputDeviceListener(mInputDeviceListener);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }
}
  1. 在你的应用程序中启动这个Service,这样就可以在后台监听游戏手柄事件了。
Intent intent = new Intent(context, GamepadService.class);
context.startService(intent);

通过以上步骤,你就可以在不在视图中的应用程序中读取游戏手柄事件了。你可以在onInputDeviceAdded方法中处理游戏手柄的按键事件和触摸事件。

相关内容

热门资讯

透视关于!hhpoker有作弊... 透视关于!hhpoker有作弊的吗,hhpoker有没有作弊挂-竟然真的有辅助脚本(哔哩哔哩)1、首...
透视必备!德普之星有透视辅助吗... 透视必备!德普之星有透视辅助吗,德普之星透视辅助软件是真的吗-一贯一直都是有辅助技巧(哔哩哔哩);1...
透视有挂!黑侠破解wepoke... 透视有挂!黑侠破解wepoker,wepoker透视脚本免费使用视频-一直是有辅助插件(哔哩哔哩)暗...
透视揭幕!wpk安卓下载辅助,... 透视揭幕!wpk安卓下载辅助,wpk有作弊吗-其实真的有辅助脚本(哔哩哔哩)进入游戏-大厅左侧-新手...
透视教你!菠萝辅助器免费版的功... 透视教你!菠萝辅助器免费版的功能介绍,pokemmo脚本辅助下载-都是真的是有辅助工具(哔哩哔哩)1...
透视教你!wpk模拟器是什么,... 透视教你!wpk模拟器是什么,wpk控制牌是真的吗-其实一直都是有辅助神器(哔哩哔哩)1)辅助插件:...
透视有挂!wpk有那种辅助吗,... 您好,这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】很多玩家在这款游戏中打...
透视开挂!hhpoker有没有... 透视开挂!hhpoker有没有作弊辅助,hhpoker辅助器视频-一贯真的有辅助app(哔哩哔哩)透...
透视辅助!扑克之星辅助,佛手大... 透视辅助!扑克之星辅助,佛手大菠萝13道挂哪里-其实真的是有辅助方法(哔哩哔哩)1、佛手大菠萝13道...
透视总结!wepoker怎么发... 透视总结!wepoker怎么发冤家牌,wepoker提高好牌率-切实真的是有辅助攻略(哔哩哔哩)1、...