4

玻璃 GDK 在这里。尝试使用服务中的远程视图插入 livecard。我正在通过语音调用启动服务。语音命令有效,但似乎我的服务没有启动(日志中没有条目)。服务在 android 清单中。下面是代码:

public class PatientLiveCardService extends Service {

private static final String LIVE_CARD_ID = "timer";


@Override
public void onCreate() {
    Log.warn("oncreate");
    super.onCreate();
}

@Override
public IBinder onBind(Intent intent) {
    return null;
}

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

    return START_STICKY;
}

@Override
public void onDestroy() {
    unpublishCard(this);
    super.onDestroy();
}



private void publishCard(Context context) {
    Log.info("inserting live card");
    if (mLiveCard == null) {
        String cardId = "my_card";
        TimelineManager tm = TimelineManager.from(context);
        mLiveCard = tm.getLiveCard(cardId);

        mLiveCard.setViews(new RemoteViews(context.getPackageName(),
                R.layout.activity_vitals));
        Intent intent = new Intent(context, MyActivity.class);
        mLiveCard.setAction(PendingIntent
                .getActivity(context, 0, intent, 0));
        mLiveCard.publish();
    } else {
        // Card is already published.
        return;
    }
}

private void unpublishCard(Context context) {
    if (mLiveCard != null) {
        mLiveCard.unpublish();
        mLiveCard = null;
    }
}

}

这是 AndroidManifest.xml:

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

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

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

<application
    android:name="com.myApp"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
      <activity
        android:name="com.myApp.MyActivity"
        android:label="@string/app_name"
        android:screenOrientation="landscape" >
    </activity>

    <service android:name="com.myApp.services.MyService" 
         android:enabled="true"
         android:exported="true">
        <intent-filter>
            <action android:name="com.google.android.glass.action.VOICE_TRIGGER" />
        </intent-filter>

        <meta-data
            android:name="com.google.android.glass.VoiceTrigger"
            android:resource="@xml/voice_trigger_get_patient" />
    </service>

</application>

4

1 回答 1

4

这是 XE11 的一个错误:语音识别器完成后服务未启动。

作为一种解决方法,您可以让您的语音触发器启动Activity

  1. 处理识别的语音onResume
  2. 处理完语音后,请Service使用startService.
  3. 来电finish跳转到发布LiveCard
于 2013-11-21T17:28:38.380 回答