Android-GDK:示例指南针应用程序无法正常工作

时间:2014-05-03 11:49:08

标签: android google-glass

我正在开发Google Glass应用程序。 我已经安装了示例Compass应用程序。

我正在通过adb在Google Glass模拟器上安装我的apk文件。

但它在运行时给我以下错误:

java.lang.NoClassDefFoundError: com.google.android.glass.timeline.LiveCard

我已经安装了最新的Glass Development Kit。

我刚刚修改了我的Manifest文件,因为我不想通过语音启动来运行apk。

我的清单文件如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.android.glass.sample.compass"
    android:versionCode="5"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="19"
        android:targetSdkVersion="19" />

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
        android:allowBackup="true"
        android:label="@string/app_name"
        android:icon="@drawable/ic_compass" >

        <activity
            android:name="com.google.android.glass.sample.compass.CompassMenuActivity"
            android:theme="@style/MenuTheme" />

        <service
            android:name=".CompassService"
            android:label="@string/app_name"
            android:icon="@drawable/ic_compass">
            <intent-filter>
                <action android:name="com.google.android.glass.sample.compass.CompassService" />
            </intent-filter>
        </service>

    </application>

</manifest>

但是在将Live Card创建到服务文件时会抛出错误。

@Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        if (mLiveCard == null) {

            ***mLiveCard = new LiveCard(CompassService.this, LIVE_CARD_TAG);***
            mRenderer = new CompassRenderer(CompassService.this, mOrientationManager, mLandmarks);

            mLiveCard.setDirectRenderingEnabled(true).getSurfaceHolder().addCallback(mRenderer);

            // Display the options menu when the live card is tapped.
            Intent menuIntent = new Intent(this, CompassMenuActivity.class);
            menuIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            mLiveCard.setAction(PendingIntent.getActivity(this, 0, menuIntent, 0));
            mLiveCard.attach(this);
            mLiveCard.publish(PublishMode.REVEAL);

        } else {

            Log.i("onStartCommand Else","onStartCommand Else");

            mLiveCard.navigate();
        }

        return START_STICKY;
    }

我只是坚持下去。 请帮我。 在此先感谢... :)

1 个答案:

答案 0 :(得分:0)

2014年4月15日的XE16版本对GDK进行了重大更改,这意味着旧的Glassware并不总是有效。你可以在这里阅读详细信息:

https://developers.google.com/glass/release-notes

此问题的相关说明是:

The TimelineManager class and support for static cards from the GDK have been removed.

因此,需要更新此代码库以使用XE16。

我最终可以提出拉取请求,但在此期间你可以看到一个类似的Pull Request我修复了一个项目,它是Compass应用程序的一个分支:

https://github.com/mimming/kitty-compass/pull/1

通过遵循我所做的更改,您应该能够了解如何修复Compass应用以使其与XE16兼容。