【发布时间】:2014-12-17 20:28:22
【问题描述】:
Google 审核小组要求眼镜器皿:
如果没有预期用户会调暗屏幕 看着。
这与 Glass 的“此时此地”体验一致。 如果没有预期,玻璃器皿应始终使屏幕变暗 用户正在查看它。理想情况下,它的行为类似于时间线,并且 15s 后变暗。用户可以通过抬头“唤醒”屏幕。
要进行更新:如果用户没有查看结果 卡片卷轴,调暗屏幕。
这暗示了使用EyeGesture,Glass Develop Page 的任何地方似乎都没有提到它。
经过一番搜索,我发现来自this stackoverflow post (Google Glass Eye Gesture Crashing (EyeGestureLib)) 的this EyeGesture library (github) 似乎不再起作用(并且在4 个月内没有更新)。
使用this revised EyeGesture library (github) 提出的已接受答案(来自stackoverflow 帖子)
还提到(在 stackoverflow 帖子中 - 作为评论):
基本上,您是在尝试公开 Glass 中存在的类 环境本身,但不是通过官方 API。通过声明 这些存根类(没有实现任何方法)并通过 将它们放入 com.google.android.glass.eye 包中,我们 允许我们的代码使用这些未实现的类进行编译。在 运行时,系统具有这些类的实现和 应用程序将改为使用系统的实现。
以下是我的以下问题:
- 是否会很快(以及何时)推出 EyeGesture 的官方 API?
- 我尝试按照建议的指南将the revised EyeGesture library 实施到我的活动中,但没有任何运气。我可能做错了什么?
- 我是否遗漏了什么东西才能被检测到?我知道GestureDetector 需要
OverrideonGenericMotionEvent(MotionEvent event),EyeGesture 有类似的东西吗?
这是我目前正在做的事情:
我有一个名为 com.google.android.glass 的包,在这个包中我有以下内容:
-
EyeGestureenum那个implements Parcelable -
EyeGestureManagerclass
我在主包里有:
-
GestureIdsclass(这个与 github 不同,它是公共类而不是私有类)
在我的活动中,我有:
private void createEyeGestureDetector(ResultActivity resultActivity) {
final GestureIds gestureIds = new GestureIds();
//The github guide didn't mention any class names for
//mEyeGestureManager and mEyeGestureListener .. so I added some..
EyeGestureManager mEyeGestureManager = EyeGestureManager.from(resultActivity);
EyeGestureManager.Listener mEyeGestureListener = new EyeGestureManager.Listener() {
@Override
public void onDetected(EyeGesture gesture) {
Log.i("EyeGestureListener", "Gesture: " + gesture.getId());
int id = gesture.getId();
if(id == gestureIds.WINK_ID || id == gestureIds.DOUBLE_WINK_ID) {
Log.d("EyeGesture", "Wink");
} else if (id == gestureIds.BLINK_ID || id == gestureIds.DOUBLE_BLINK_ID){
Log.d("EyeGesture", "Blink");
} else if (id == gestureIds.LOOK_AT_SCREEN_ID || id == gestureIds.LOOK_AWAY_FROM_SCREEN_ID) {
Log.d("EyeGesture", "Screen");
}
}
};
}
在我的onCreate 我有:
//..
super.onCreate(bundle);
createEyeGestureDetector(this);
//..
更新 Logcat:
当我这样做时:
for (EyeGesture eg : EyeGesture.values()) {
boolean supported = mEyeGestureManager.isSupported(eg);
Log.w("yupyup", eg.name() + ":" + supported);
}
我明白了:
12-10 18:40:51.252 2405-2405/com.google.android.glass.websurg.websurg W/yupyup﹕ WINK:true
12-10 18:40:51.252 2405-2405/com.google.android.glass.websurg.websurg W/yupyup﹕ DOUBLE_WINK:false
12-10 18:40:51.252 2405-2405/com.google.android.glass.websurg.websurg W/yupyup﹕ BLINK:false
12-10 18:40:51.252 2405-2405/com.google.android.glass.websurg.websurg W/yupyup﹕ DOUBLE_BLINK:true
12-10 18:40:51.260 2405-2405/com.google.android.glass.websurg.websurg W/yupyup﹕ DON:true
12-10 18:40:51.268 2405-2405/com.google.android.glass.websurg.websurg W/yupyup﹕ DOFF:true
12-10 18:40:51.268 2405-2405/com.google.android.glass.websurg.websurg W/yupyup﹕ LOOK_AT_SCREEN:true
12-10 18:40:51.268 2405-2405/com.google.android.glass.websurg.websurg W/yupyup﹕ LOOK_AWAY_FROM_SCREEN:false
我还添加了(来自第一个 github 链接):
@Override
protected void onStart(){
super.onStart();
createEyeGestureDetector(this);
for (EyeGesture eg : EyeGesture.values()) {
boolean supported = mEyeGestureManager.isSupported(eg);
Log.w("yupyup", eg.name() + ":" + supported);
}
mEyeGestureManager.register(EyeGesture.LOOK_AT_SCREEN, mEyeGestureListener);
mEyeGestureManager.register(EyeGesture.LOOK_AWAY_FROM_SCREEN, mEyeGestureListener);
mEyeGestureManager.register(EyeGesture.WINK, mEyeGestureListener);
}
和
@Override
protected void onStop(){
mEyeGestureManager.unregister(EyeGesture.LOOK_AT_SCREEN, mEyeGestureListener);
mEyeGestureManager.unregister(EyeGesture.LOOK_AWAY_FROM_SCREEN, mEyeGestureListener);
mEyeGestureManager.unregister(EyeGesture.WINK, mEyeGestureListener);
super.onStop();
}
这给了我:
12-10 18:46:11.314 2553-2553/com.google.android.glass.websurg.websurg I/EyeGestureManager﹕ Removing listener: com.google.android.glass.websurg.websurg.ResultActivity$1@41b8b908 for eye gesture: LOOK_AT_SCREEN
12-10 18:46:11.314 2553-2553/com.google.android.glass.websurg.websurg I/EyeGestureManager﹕ Removing listener: com.google.android.glass.websurg.websurg.ResultActivity$1@41b8b908 for eye gesture: LOOK_AWAY_FROM_SCREEN
12-10 18:46:11.314 2553-2553/com.google.android.glass.websurg.websurg I/EyeGestureManager﹕ Removing listener: com.google.android.glass.websurg.websurg.ResultActivity$1@41b8b908 for eye gesture: WINK
但是它们没有被检测到。即使是 WINK,因为它似乎受到支持。
【问题讨论】:
标签: java android google-glass android-logcat google-gdk