Обновление дисплея SmartEyeglass каждые 40 мс

Я создал растровое изображение на экране моего Sony SmartEyeglass следующим образом:

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

Теперь я хочу обновлять его каждые 40 миллисекунд или около того.

Я пытался звонить снова и снова из другого потока и добавил this.clearDisplay() но это не работает

Как я могу добиться регулярного обновления дисплея?


Обновить:

Я использовал предложенный код ниже.
Результат: заикание изображения, которое перекрывает предыдущее, которое не удаляется с экрана.

Пробовал добавлять canvas.drawRect(new Rect(0, 0, 500, 500), paint); перед перерисовкой.
Результат: он все еще мигает, но теперь также не будет отображать новые изображения.

Кто-нибудь имеет опыт работы с графикой в ​​реальном времени на SmartEyeglass. Перезагрузка расширения с другим сообщением для рисования не вариант!

2 ответа

Создавая обработчик 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();
        }   
    }
};

Вместо showBitmap использование SmartEyeglassControlUtils.showBitmapWithCallback, Таким образом, после завершения процесса рендеринга на SmartEyeglass вы получите обратный вызов в onResultShowBitmap,

Внутри этого обратного вызова вы можете позвонить showBitmapWithCallback снова, чтобы обновить дисплей как можно быстрее.

Скорость ограничена скоростью соединения так:

  1. Рассмотреть возможность использования POWER_MODE_HIGH получить Wi-Fi соединение между SmartEyeglass и телефоном
  2. Рассмотреть возможность использования showBitmapWithCallback(Bitmap bitmap, int x, int y, int transactionNumber) с определением положения x,y и отправкой только той части Bitmap, который должен быть обновлен.
Другие вопросы по тегам