google-gdk - 谷歌眼镜 GDK 向后兼容性?

标签 google-gdk

我刚刚在我的 glass XE 20.1 上试用了更新后的 gdk,我的测试应用程序崩溃了,因为新的 api 不可用。

CardBuilder card = new CardBuilder(this, CardBuilder.Layout.TEXT);

(旧的 Card 构造函数已弃用。构建器模式正在替换它。)

日志:

09-09 00:27:16.239    1992-1992/com.prat.testgdk E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.prat.testgdk, PID: 1992
java.lang.NoClassDefFoundError: com.google.android.glass.widget.CardBuilder
        at com.prat.testgdk.MainActivity.buildView(MainActivity.java:95)
        at com.prat.testgdk.MainActivity.onCreate(MainActivity.java:40)

在其他 Android 设备上,我可以检查 android.os.Build.VERSION.SDK_INT 或设置 minSdkVersion,但在 Glass 上,当新的 sdk 发布时,SDK_INT 不会更新。

处理这个问题的正确方法是什么?有没有比使用反射更好的方法来测试特定类的可用性?

我错过了什么吗?

编辑:

根据 API 演示,我们似乎不应该关心。让它在旧的 XE 上崩溃。希望所有眼镜都能尽快更新。 参见 https://github.com/googleglass/gdk-apidemo-sample/commit/e644c7325bb74a02b0f383bf9f19e9f851313dc2

最佳答案

现在,我会使用反射...可能:

private View buildView() {
    try {
        String cardBuilderName = "com.google.android.glass.widget.CardBuilder";
        Class clazz = Class.forName(cardBuilderName);
        CardBuilder cardBuilder = new CardBuilder(this, CardBuilder.Layout.TEXT);
        cardBuilder.setText(R.string.hello_world);
        return cardBuilder.getView();
    } catch (Exception e) {
        //ClassNotFoundException?
        Log.v(TAG, e.toString());
        Card card = new Card(this);
        card.setText(R.string.hello_world);
        return card.getView();
    }        
}

注意:我没有在旧的 XE 上测试过,因为我刷过 XE 21。

但这很丑陋。希望我们有更好的方法来处理这个问题。

关于google-gdk - 谷歌眼镜 GDK 向后兼容性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25736745/

相关文章:

java - 在 Google Glass 上显示拍摄的图像

java - 发卡时能唤醒设备吗?

android - 谷歌眼镜上的 rfcomm 蓝牙

google-glass - 如何从 GDK 启动路线

google-glass - 谷歌眼镜眼睛手势崩溃(EyeGestureLib)

android - 如何调试 Google Glass GDK 应用程序?

google-glass - 谷歌眼镜 GDK : get current item on CardScrollView

java - 使用 GDK 检索 Google Glass 中的帐户

google-glass - Glass Mirror API 和 Google GDK 有什么区别?

android - 向后滑动在 Google Glass Activity 中不起作用