Libgdx和Android NFC

3
  1. 我正在使用LIBGDX,尽管遇到了一些困难,但我一直在进步。不过我遇到了一些困难:在安卓端,从LibGDX中如何使用NFC?以及USB?

  2. 其他解决方案:

    2.1 如果LibGDX不允许,有没有办法访问Android SDK的本机调用呢?

    2.2 第三个解决方案是在Android SDK中编写第二个(隐藏)应用程序,但是否可能拥有自己的意图/应用程序名称呼叫原因?这样,调用只需要一个应用程序打开。

感谢这个伟大的社区

2个回答

2

在主项目中添加一些接口,像这样。

public interface NfcCommunicator {
    public void initialize();
    public void sendData(Object data);
    public void setReceiveCallback(NfcReceiveCallback callback);
    public void checkForReceivedData();
}

同时,

public class NfcReceiveCallback {
    public void execute(Object receivedData) {
        // Do whatever you want to do with the received data.
    }
}

现在将以上接口的实现放入Android项目中。
public class AndroidNfcCommunicator implements NfcCommunicator {
    private NfcReceiveCallback myCallback;
    private Activity myActivity;

    public AndroidNfcCommunicator(Activity activity) {
        this.myActivity = activity;
    }

    public void initialize() {
        // NFC initialization code if any.
    }

    public void sendData(Object data) {
        // Send data (you have access to android sdk here)
    }

    public void setReceiveCallback(NfcReceiveCallback callback) {
        this.myCallback = callback;
    }

    public void checkForReceivedData() {
        if (/* Data has been received (Use Activity object here. Since data comes from intent.)*/) {
            this.myCallback.execute(/* Pass data here. */);
        }
    }
}

在Android项目中创建以上类的对象并将其传递给ApplicationListener的构造函数。 在render方法中反复调用checkForReceivedData方法。
祝好运。

谢谢你,编程方面的正确方法!现在我明白了Lucian所说的话,对implements标签也有了更深的理解。下周我会尝试一下,看起来很有前途。非常感谢你的分享和付出的时间。 - ph4nt0ma5ter
@ph4nt0ma5ter,如果你觉得这个答案有用,请不要忘记点赞或接受它。 - SteveL
答案很有用(所以第一个)。我想点赞它,但是我受限制了,无法这样做。:( ... - ph4nt0ma5ter

2
由于您在常规项目中无法访问Android SDK,因此可以在常规项目中定义一个接口,并在Android项目中实现该接口。之后,在初始化时将带有该实现的对象传递给您的常规项目。
另一种解决方法是使用反射,但这更加麻烦和容易出错。
免责声明:这只是我用于向libGDX传播访问Android SDK的一种方式(我能想到最干净的方式),但我已经有18个月没有使用过libGDX了,可能会有一些变化。

首先感谢您的回答。 让我们看看我是否理解了这个概念:在我的libgdx应用程序中,我将扩展一个类,该类将位于libgdx-android项目中,在其中将有一个Android SDK类,即我想要执行的操作,例如NFC。 如果是这样,您有关于如何定义libgdx接口以及如何在Android端启动类的任何参考资料吗? 如果不是,请问我可以在哪里阅读有关此方法的信息? - ph4nt0ma5ter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接