0

Googleマップでアニメーションのようなビデオを再生しようとしています-マーカーのinfoWindow。以下は完全に機能するものです:

  1. マーカーの infoWindow 内の UI 画像ビューを更新するハンドラーを使用して、マーカーの infoWindow 内に画像スライド ショー (res/drawable フォルダーに格納されている) を表示できます。
  2. また、要求に応じてイメージ ビットマップをストリームとして提供するビデオ サーバーを稼働させました。
  3. また、サーバーからビデオ (一連の画像) を取得してビデオとして再生するモバイル クライアントも開発しました。

今、私が開発したアプリケーション[1]から、保存された画像の代わりに、サーバー[2]から一連の画像(ビデオに属する)をフェッチし、受信した画像をimageViewに設定しようとしています。

私が直面している問題は、新しい画像を取得していて、imageView.setImageBitmap(bt); を呼び出していることです。しかし、ビューを強制的に更新するまで(タッチイベントを介して)imageViewは更新されません

以下は私のコードです:

class RefreshHandler extends Handler {
    @Override
    public void handleMessage(Message msg) {
        BasicMapActivity.this.updateUI();
    }

    public void sleep(long delayMillis) {
        this.removeMessages(0);
        sendMessageDelayed(obtainMessage(0), delayMillis);
    }
};


public void updateUI() {

    refreshHandler.sleep(200); // Handler type object which makes this function to call as if its on a different thread

    Log.d("Update UI - in RUN", "liveOffset : " + liveOffset);

    StreamElement se = getNextLiveView();

    if (se != null) {
        Bitmap bmp = BitmapFactory.decodeByteArray(se.getData(), 0, se.getData().length);
        Bitmap bt=Bitmap.createScaledBitmap(bmp, 150, 150, false);
        Log.d("Actual Refresh ", "liveOffset : " + liveOffset);  // updates inside the above getNextLiveView function that fetches the new image
imageViewK = (ImageView) kv.findViewById(R.id.imageView1);
        imageViewK.setImageBitmap(bt);  // Received new image is set every time on the imageView
        //imageViewK.postInvalidate();      
    } else{
        Bitmap bMap = BitmapFactory.decodeResource(getResources(),
        imgidK[1]);
        Bitmap bt = Bitmap.createScaledBitmap(bMap, 75, 75, false);
        imageViewK.setImageBitmap(bt);
    }

}

上記のコードにコメントして、状況を説明しました。これは毎回ログに記録されます (Log.d("Actual Refresh ", "liveOffset : " + liveOffset) with updated liveOffset value) -> つまり、スレッドループ実行で毎回 imageView 設定行に到達できます。ご覧のとおり、imageView.postInvalidate() を使用してみましたが、このメソッドは非 UI スレッドで実行されていると思いますが、それでも imageView は自動的に更新されません。ここで何が間違っていますか?

4

0 に答える 0