gpt4 book ai didi

java - IOI Activity 和 AppCompatActivity

转载 作者:行者123 更新时间:2023-12-02 12:00:24 24 4
gpt4 key购买 nike

我在 Java 开发和从 Eclipse 迁移方面没有经验。我不知道如何在需要扩展 AppCompactActivityIOIOActivity 的情况下使用嵌套类。考虑到,我有另一个内部类 Looper 已经扩展了另一个类。下面的代码没有运行测试类中的内容。有人可以帮助我了解如何执行我的内部类,即测试类。

我的代码:

public class MainActivity extends AppCompatActivity  {

private class Testing extends IOIOActivity {

private ToggleButton button_;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button_ = (ToggleButton) findViewById(R.id.toggleButton);

}

class Looper extends BaseIOIOLooper {
/** The on-board LED. */
private DigitalOutput led_;

@Override
protected void setup() throws ConnectionLostException {
showVersions(ioio_, "IOIO connected!");
led_ = ioio_.openDigitalOutput(0, true);
enableUi(true);
}
@Override
public void loop() throws ConnectionLostException, InterruptedException {
led_.write(!button_.isChecked());
Thread.sleep(100);
}

@Override
public void disconnected() {
enableUi(false);
toast("IOIO disconnected");
}

@Override
public void incompatible() {
showVersions(ioio_, "Incompatible firmware version!");
}
}

@Override
protected IOIOLooper createIOIOLooper() {
return new Looper();
}

private void showVersions(IOIO ioio, String title) {
toast(String.format("%s\n" +
"IOIOLib: %s\n" +
"Application firmware: %s\n" +
"Bootloader firmware: %s\n" +
"Hardware: %s",
title,
ioio.getImplVersion(IOIO.VersionType.IOIOLIB_VER),
ioio.getImplVersion(IOIO.VersionType.APP_FIRMWARE_VER),
ioio.getImplVersion(IOIO.VersionType.BOOTLOADER_VER),
ioio.getImplVersion(IOIO.VersionType.HARDWARE_VER)));
}

private void toast(final String message) {
final Context context = this;
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
});
}

private int numConnected_ = 0;

private void enableUi(final boolean enable) {
// This is slightly trickier than expected to support a multi-IOIO use-case.
runOnUiThread(new Runnable() {
@Override
public void run() {
if (enable) {
if (numConnected_++ == 0) {
button_.setEnabled(true);
}
} else {
if (--numConnected_ == 0) {
button_.setEnabled(false);
}
}
}
});
}
}
}

谢谢

最佳答案

我找到了答案,我想与大家分享,以供将来使用。这是为了在 Android Studio 中启动一个新的 IOIOActivity。 IOIO 开发人员尚未为 AppCompactActivity 编写官方 IOIO 代码。经过几天的尝试,终于通过了测试,并与 IOIO 领导合作。

  1. 在包中创建一个名为 AppCompactIOIOActivity (我只是喜欢这个名字)的新类文件。注:所有功劳归于 Ytai。来自App507的IOIO代码

public class AppCompactIOIOActivity extends AppCompatActivity implements IOIOLooperProvider {
private final IOIOAndroidApplicationHelper helper_ = new IOIOAndroidApplicationHelper(this, this);

public AppCompactIOIOActivity() {
}

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.helper_.create();
}

protected void onDestroy() {
this.helper_.destroy();
super.onDestroy();
}

protected void onStart() {
super.onStart();
this.helper_.start();
}

protected void onStop() {
this.helper_.stop();
super.onStop();
}

@SuppressLint("WrongConstant")
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if((intent.getFlags() & 268435456) != 0) {
this.helper_.restart();
}

}

protected IOIOLooper createIOIOLooper() {
throw new RuntimeException("Client must override one of the createIOIOLooper overloads!");
}

public IOIOLooper createIOIOLooper(String connectionType, Object extra) {
return this.createIOIOLooper();
}

}

  • 然后在您的 MainActivity 中
  • public class MainActivity extends AppCompactIOIOActivity {

    private ToggleButton button_;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button_ = (ToggleButton) findViewById(R.id.toggleButton);

    }
    class Looper extends BaseIOIOLooper {
    /** The on-board LED. */
    private DigitalOutput led_;

    @Override
    protected void setup() throws ConnectionLostException {
    showVersions(ioio_, "IOIO connected!");
    led_ = ioio_.openDigitalOutput(0, true);
    enableUi(true);
    }

    @Override
    public void loop() throws ConnectionLostException, InterruptedException {
    led_.write(!button_.isChecked());
    Thread.sleep(100);
    }

    @Override
    public void disconnected() {
    enableUi(false);
    toast("IOIO disconnected");
    }

    @Override
    public void incompatible() {
    showVersions(ioio_, "Incompatible firmware version!");
    }
    }

    @Override
    protected IOIOLooper createIOIOLooper() {
    return new Looper();
    }

    private void showVersions(IOIO ioio, String title) {
    toast(String.format("%s\n" +
    "IOIOLib: %s\n" +
    "Application firmware: %s\n" +
    "Bootloader firmware: %s\n" +
    "Hardware: %s",
    title,
    ioio.getImplVersion(IOIO.VersionType.IOIOLIB_VER),
    ioio.getImplVersion(IOIO.VersionType.APP_FIRMWARE_VER),
    ioio.getImplVersion(IOIO.VersionType.BOOTLOADER_VER),
    ioio.getImplVersion(IOIO.VersionType.HARDWARE_VER)));
    }

    private void toast(final String message) {
    final Context context = this;
    runOnUiThread(new Runnable() {
    @Override
    public void run() {
    Toast.makeText(context, message, Toast.LENGTH_LONG).show();
    }
    });
    }

    private int numConnected_ = 0;

    private void enableUi(final boolean enable) {
    // This is slightly trickier than expected to support a multi-IOIO use-case.
    runOnUiThread(new Runnable() {
    @Override
    public void run() {
    if (enable) {
    if (numConnected_++ == 0) {
    button_.setEnabled(true);
    }
    } else {
    if (--numConnected_ == 0) {
    button_.setEnabled(false);
    }
    }
    }
    });
    }
    }

    不要忘记添加 IOIO 开发人员的资源和依赖项。祝你好运!

    关于java - IOI Activity 和 AppCompatActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47297292/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com