2014-11-30 2 views
4

Я пытаюсь проверить Wink from Glass, используя EyeGestureLib.Ошибка Google Glass Eye Gesture (EyeGestureLib)

Я создал новый проект и сделал именно то, что сделал парень с образцом проекта here.

Проблема часть моего кода ниже:

private EyeGestureManager mEyeGestureManager; 
private EyeGestureListener mEyeGestureListener; 

private EyeGesture target1 = EyeGesture.WINK; 
private EyeGesture target2 = EyeGesture.DOUBLE_BLINK; 

Внутри OnCreate, у меня есть:

mEyeGestureManager = EyeGestureManager.from(this); 
    mEyeGestureListener = new EyeGestureListener(); 

    // print out each eye gesture is supported or not 
    for (EyeGesture eg : EyeGesture.values()) { 
     boolean supported = mEyeGestureManager.isSupported(eg); 
     Log.d(TAG, eg.name() + ":" + supported); 
    } 

Моя программа вылетает сразу после открытия. Я понимаю, что проблема в том, когда он пытается получить доступ к mEyeGestureManager. Любой, где в коде, который использует mEyeGestureManager сделает программу crash.According к тому, что я наблюдал, mEyeGestureManager равно нулю, даже после того, как mEyeGestureManager = EyeGestureManager.from(this);

Когда я изменяю

mEyeGestureManager = EyeGestureManager.from(this);

в

mEyeGestureManager = new EyeGestureManager(); 

он перестает сбой, и mEyeGestureManager больше не является нулевым, но не будет обнаруживать подмигивание или двойное подмигивание.

Мое стакан бежал XE21, но я понизил его до XE18.3, потому что мое исследование показывает, что EyeGestureLib не будет нормально работать на стеклянную версию> XE18.3.

EyeGestures NOT working in 19.1

https://github.com/thorikawa/EyeGestureLib/issues/2

Теперь у меня есть XE18.3, но он не работает. Wink не работает, когда у меня есть mEyeGestureManager = new EyeGestureManager(); и я получаю:

Supported:﹕ BLINK:false 
Supported:﹕ DOFF:false 
Supported:﹕ DON:false 
Supported:﹕ DOUBLE_BLINK:false 
Supported:﹕ DOUBLE_WINK:false 
Supported:﹕ LOOK_AT_SCREEN:false 
Supported:﹕ LOOK_AWAY_FROM_SCREEN:false 
Supported:﹕ WINK:false 

Но когда у меня есть:

mEyeGestureManager = EyeGestureManager.from(this); 

он выходит из строя сразу.

Я пошел и установил already compiled example "EyeGestureDemo-debug-1.1.apk" и что РАБОТАЛ очень хорошо, но у меня нет.

Что я делаю неправильно? Я пытался это сделать уже 3 дня. Google не имеет официального API для этого, но я не хочу ждать, пока он их выпустит. Мне нужно это для моего школьного проекта как можно скорее. У кого-нибудь есть идеи о том, что может быть проблемой?

EDIT: CRASH LOG

12-02 09:39:54.347 3758-3758/com.inno.inno.glassplugin D/AndroidRuntime﹕ Shutting down VM 
12-02 09:39:54.347 3758-3758/com.inno.inno.glassplugin W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41f78bd8) 
12-02 09:39:54.363 3758-3758/com.inno.inno.glassplugin E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.inno.inno.glassplugin, PID: 3758 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.inno.inno.glassplugin/com.inno.inno.glassplugin.MainActivity}: java.lang.NullPointerException 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2235) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2285) 
      at android.app.ActivityThread.access$800(ActivityThread.java:138) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1236) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:149) 
      at android.app.ActivityThread.main(ActivityThread.java:5061) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:515) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.NullPointerException 
      at com.inno.inno.glassplugin.MainActivity.onCreate(MainActivity.java:92) 
      at android.app.Activity.performCreate(Activity.java:5236) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1089) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2285) 
            at android.app.ActivityThread.access$800(ActivityThread.java:138) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1236) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:149) 
            at android.app.ActivityThread.main(ActivityThread.java:5061) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
            at dalvik.system.NativeStart.main(Native Method) 
+0

Любое сообщение об ошибке? Не могли бы вы поделиться журналом? Я помню, что lib работал отлично на старых XE. – pt2121

+0

Я только что прикрепил журнал аварий. Спасибо – Programmer

ответ

2

API-интерфейс изменился давно (около 20 ХЕ я думаю).

Мне пришлось сделать довольно много рытья с отражением, чтобы выяснить работу EyeGestureManager.

Вот моя обновленная версия, наряду с некоторыми пример кода, демонстрирующего использование: https://gist.github.com/victorkp/9094a6aea9db236a97f3

+0

Где и как определяется mEyeGestureListener? Можете ли вы представить полный пример. Ява? Благодарю. – Programmer

+0

И для mEyeGestureManager = EyeGestureManager.from (mContext) ;, Могу ли я заменить mContext на «this»? Я не знаю, где вы определили mContext и как он был инициализирован. – Programmer

+0

Whoops забыл заменить это - yep, mContext - это просто контекст, поэтому вы сможете заменить его на «это» (при условии, что вы вызываете этот код в Activity или Service). –