0

我在 Sony SmartEyeglass 的屏幕上创建了一个位图,如下所示:

private void updateLayout(){
    this.showBitmap(bitmap);
}

现在我想每 40 毫秒左右更新一次。

我尝试从另一个线程一次又一次地调用它并添加this.clearDisplay()但它不起作用。

如何实现显示屏的定期更新?


更新:

我使用了下面建议的代码。
结果:与前一个重叠的卡顿图像无法从屏幕上清除。

canvas.drawRect(new Rect(0, 0, 500, 500), paint);在重绘之前尝试添加。
结果:它仍然闪烁,但现在也不会显示新图像。

有人对 SmartEyeglass 上的实时图形有任何经验吗?使用不同的消息重新加载扩展程序以从中提取不是一种选择!

4

2 回答 2

1

而不是showBitmap使用SmartEyeglassControlUtils.showBitmapWithCallback. 这样,SmartEyeglass 上的渲染过程完成后,你会在onResultShowBitmap.

在该回调中,您可以showBitmapWithCallback再次调用,以尽快更新显示。

速度受限于连接速度,因此:

  1. 考虑使用POWER_MODE_HIGHSmartEyeglass 和手机之间的 wifi 连接
  2. 考虑使用showBitmapWithCallback(Bitmap bitmap, int x, int y, int transactionNumber)with 定义 x,y 位置并仅发送Bitmap需要更新的那部分。
于 2015-08-18T20:27:25.737 回答
1

通过创建 postDelayed() 处理程序,您可以定期运行方法。

你的代码应该是这样的。

Handler handler = new Handler();

@Override
protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      handler.post(sendData);
}

@Override
protected void onDestroy() {
      super.onDestroy();
      handler.removeCallbacks(sendData);
}

private void updateLayout(){
    this.showBitmap(bitmap);
}


private final Runnable sendData = new Runnable(){
    public void run(){
        try {
            //your method need to call here

                    updateLayout();

            handler.postDelayed(this, 1000);  // 1000 milliseconds means 1 sec.. here you can change your time limit     
        }
        catch (Exception e) {
            e.printStackTrace();
        }   
    }
};
于 2015-08-18T13:04:34.510 回答