0

我目前开始为 Pepper Robot 开发。Choreagraphe/Python + 标准 Android SDK 工作正常。

我现在看到有一个 Java SDK 可以本地访问 Pepper API(ALMemory、ALSpeechToText ...):

http://doc.aldebaran.com/2-4/dev/java/index_java.html

到目前为止我所做的:我下载了库并将其添加到我的 Android 项目中的 libs 下。

我的代码只包含这个:

包 com.example.falu.peppertest;

导入android.support.v7.app.AppCompatActivity;导入android.os.Bundle;

导入 com.aldebaran.qi.Application;导入 com.aldebaran.qi.Session;

公共类 MainActivity 扩展 AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}
@Override
protected void onStart()
{
    super.onStart();

    String[] args = new String[]{"qi-url=tcp://falu-sp4.local:9559"};

    //Using official SDK
    try {
        Application app = new Application(args);

    }
    catch(Exception ex) {
        ex.printStackTrace();
    }
} }

在使用列表中,它说它可以在 ARM Android 4 上使用。不幸的是,Adnroid SDK 在 Android 5 (Lollipop) 上运行

有没有办法在那里使用这个库?

如果我尝试,我总是会收到消息:

10-23 07:11:57.253 3311-3311/com.example.falu.peppertest A/art: art/runtime/check_jni.cc:65] JNI 检测到应用程序错误:GetMethodID 收到 null jclass 10-23 07:11: 57.253 3311-3311/com.example.falu.peppertest A/art: art/runtime/check_jni.cc:65] 在调用 GetMethodID 10-23 07:11:57.253 3311-3311/com.example.falu.peppertest A /art: art/runtime/check_jni.cc:65] 来自 java.lang.Object com.aldebaran.qi.DynamicObjectBuilder.object(long) 10-23 07:11:57.253 3311-3311/com.example.falu.peppertest A/art: art/runtime/check_jni.cc:65] "main" prio=5 tid=1 Runnable 10-23 07:11:57.253 3311-3311/com.example.falu.peppertest A/art: art/runtime /check_jni.cc:65] | group="main" sCount=0 dsCount=0 obj=0x7490b000 self=0xb4025800 10-23 07:11:57.254 3311-3311/com.example.falu.peppertest A/art: 艺术/运行时/check_jni.cc:65] | sysTid=3311 nice=0 cgrp=default sched=0/0 handle=0xb7772ea0 10-23 07:11:57.254 3311-3311/com.example.falu.peppertest A/art: art/runtime/check_jni.cc:65] | state=R schedstat=( 0 0 0 ) utm=15 stm=42 core=0 HZ=100 10-23 07:11:57.254 3311-3311/com.example.falu.peppertest A/art: art/runtime/check_jni .cc:65] | stack=0xbf099000-0xbf09b000 stackSize=8MB 10-23 07:11:57.254 3311-3311/com.example.falu.peppertest A/art: art/runtime/check_jni.cc:65] | 持有互斥锁=“mutator lock”(共享持有)10-23 07:11:57.254 3311-3311/com.example.falu.peppertest A/art: art/runtime/check_jni.cc:65] native: #00 pc 00005d03 /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+83) 10-23 07:11:57.254 3311-3311/com.example.falu.peppertest A/art: art/runtime/ check_jni。)+82) 10-23 07:11:57.255 3311-3311/com.example.falu.peppertest A/art: art/runtime/check_jni.cc:65] native: #10 pc 00097dd5 /data/app/com. example.falu.peppertest-2/lib/x86/libqimessagingjni.so (JNIObject::JNIObject(qi::Object#40 pc 00434a88 /system/lib/libart.so (artQuickToInterpreterBridge+872) 10-23 07:11:57.259 3311-3311/com.example.falu.peppertest A/art: art/runtime/check_jni.cc:65]本机:#41 pc 000e62b2 /system/lib/libart.so (art_quick_to_interpreter_bridge+34) 10-23 07:11:57.259 3311-3311/com.example.falu.peppertest A/art: art/runtime/check_jni.cc: 65] 本机:#42 pc 00852ca5 /data/dalvik-cache/x86/system@framework@boot.oat (???) 10-23 07:11:57.259 3311-3311/com.example.falu.peppertest A/艺术:艺术/运行时/check_jni.cc:65] 本机:#43 pc 98fe3802 ??? 10-23 07:11:57.259 3311-3311/com.example.falu.peppertest A/art: art/runtime/check_jni.cc:65] native: #44 pc 54984e1f ??? 10-23 07:11:57.260 3311-3311/com.example.falu.peppertest A/art: art/runtime/check_jni.cc:65] native: #45 pc 9f0097a1 ??? 10-23 07:11:57。

谢谢!

4

1 回答 1

0

Pepper Java SDK 使用已编译的本机二进制文件(Linux/Android 上的 .so,我猜 Windows 上的 .dll),这意味着 jar 文件不像大多数文件那样可移植。

在此 SDK 的早期版本中,它只有目标平台(例如 Pepper 的 Linux)的二进制文件,因此除非您替换 .so 文件,否则它无法在平板电脑上运行。最新版本似乎确实检测到了 Android 并切换到不同的二进制文件,但我仍然无法让它工作,尤其是它不适合平板电脑。

有一个Android SDK

http://android.aldebaran.com/sdk/doc/pepper-sdk/introduction.html

这是否与您的 Naoqi 版本兼容是另一回事,我能够使其与模拟器和虚拟机器人一起使用,但与我可以访问的 Pepper 相比,插件附带的 Naoqi 似乎具有不同的服务。

于 2017-10-26T08:59:38.800 回答