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 と電話の間の Wi-Fi 接続を取得するために使用することを検討してください
  2. showBitmapWithCallback(Bitmap bitmap, int x, int y, int transactionNumber)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 に答える