Google glass 在单个Google Glass Live卡上显示多个图像
我正在创建一个live card应用程序,它接收服务器上运行的php脚本的PNG,以响应扫描二维码的请求。目前,我只是将Live card上的图像替换为从服务器接收到的PNG,但我希望在每次请求时接收并显示来自服务器的多个图像 是否有一种认可的方式在实时卡上显示多张图像?我在想,有可能会生成一个菜单,菜单上满是图片,点击后会自动关闭,但似乎还有更好的选择 这是我目前的代码: 现行代码Google glass 在单个Google Glass Live卡上显示多个图像,google-glass,google-gdk,Google Glass,Google Gdk,我正在创建一个live card应用程序,它接收服务器上运行的php脚本的PNG,以响应扫描二维码的请求。目前,我只是将Live card上的图像替换为从服务器接收到的PNG,但我希望在每次请求时接收并显示来自服务器的多个图像 是否有一种认可的方式在实时卡上显示多张图像?我在想,有可能会生成一个菜单,菜单上满是图片,点击后会自动关闭,但似乎还有更好的选择 这是我目前的代码: 现行代码 只需在布局文件iot_splash_屏幕中或以编程方式添加更多图像视图 使用ImageView的资源ID,您可以
只需在布局文件iot_splash_屏幕中或以编程方式添加更多图像视图 使用ImageView的资源ID,您可以调用每个视图
在调用Live Card上的SetView之前,请确保已设置这些图像。您的mLiveCard类是什么?为清晰起见,添加了整个文件。mLiveCard只是我当前从主玻璃菜单制作的实时卡。您的物联网启动屏幕布局是什么样子的?考虑到这是一张实时卡,如何向用户显示?作为现场卡片上的菜单?或者它会在时间线上添加几张实时卡?还是会在同一张卡片上显示它们?非常感谢你的帮助!它将在同一张live卡上显示布局文件中设置的所有图像ImageView。太棒了,谢谢!我这个项目的目标是让每个PNG占据自己的全屏。有没有一种方法可以在实时卡中实现这一点,而不是像在弹出菜单中那样共享空间?或者我应该在这一点上切换卡类型?谢谢你的帮助!我懂了。您可能会在菜单中添加操作来更改Live卡上的图像,如下一张图像或上一张图像。不过,使用可能会更好。嘿,对不起,已经过去一个多月了,我不得不专注于项目的其他部分。你推荐的卷轴卡片很合适。我要把这条线标记为正确的。谢谢你的帮助!
import com.google.android.glass.timeline.LiveCard;
import com.google.android.glass.timeline.LiveCard.PublishMode;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Binder;
import android.os.IBinder;
import android.util.Base64;
import android.widget.RemoteViews;
public class iotSplashScreen extends Service {
private static final String LIVE_CARD_TAG = "iotSplashScreen";
private LiveCard mLiveCard;
private RemoteViews mLiveCardView;
public class iotBinder extends Binder {
public void changeImage(String change) {
try {
byte[] bob = Base64.decode(change, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(bob, 0, bob.length);
if(bitmap != null) {
mLiveCardView.setImageViewBitmap(R.id.image_view_id, bitmap);
mLiveCard.setViews(mLiveCardView);
}
else
{
System.out.println("Daaang, dat bitmap was null doe");
}
}
catch (IllegalArgumentException e)
{
System.out.println("Base64 had an issues: " + e);
System.out.println(change);
}
catch (NullPointerException e)
{
System.out.println("Null Pointer: " + e);
}
}
}
private final iotBinder mBinder = new iotBinder();
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (mLiveCard == null) {
mLiveCard = new LiveCard(this, LIVE_CARD_TAG);
mLiveCardView = new RemoteViews(getPackageName(), R.layout.iot_splash_screen);
mLiveCard.setViews(mLiveCardView);
// Display the options menu when the live card is tapped.
Intent menuIntent = new Intent(this, LiveCardMenuActivity.class);
mLiveCard.setAction(PendingIntent.getActivity(this, 0, menuIntent, 0));
mLiveCard.publish(PublishMode.REVEAL);
} else {
mLiveCard.navigate();
}
return START_STICKY;
}
@Override
public void onDestroy() {
if (mLiveCard != null && mLiveCard.isPublished()) {
mLiveCard.unpublish();
mLiveCard = null;
}
super.onDestroy();
}
}