0

インターネットストリームからビットマップ画像を表示したい. 500ミリ秒ごとに新しい画像を取得し、この画像をユーザーに提示したいと考えています。これを行う最善の方法は何ですか?画像ビューを使用して、500 ミリ秒ごとに画像を変更できますか?

私はこのようなタイマータスクでこれをやろうとしました:

    timer.schedule(new TimerTask() {
        public void run() {
            if(flag){
                Bitmap bmp = null;
                Log.i(APPID, "New frame");
                try {
                    bmp = session.getImage();
                    setImage(bmp);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else {
                timer.cancel();
            }
        }
    }, 500, 500);

しかし、これはうまくいきません。

4

2 に答える 2

1

Android では許可されていないため、UI/メイン スレッド以外のスレッドからの UI の更新は失敗します。Handlerを使用してメッセージを UI スレッドにポストしてみてください。このようなことができます。

final Handler h = new Handler();
timer.schedule(new TimerTask() {
    public void run() {
        if(flag){
            h.post(new Runnable() {
                public void run() {
                    Bitmap bmp = null;
                    Log.i(APPID, "New frame");
                    try {
                       bmp = session.getImage();
                       setImage(bmp);   
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
            }
        } else {
            timer.cancel();
        }
    }
}, 500, 500);
于 2013-06-19T08:48:54.060 に答える