2012-02-07 12 views
-1

バックグラウンドスレッドからUIに画像を表示する方法を探しています。このバックグラウンドスレッドは、ストリーミングイメージをバイト配列形式で受信します。私はそれを私のUIに表示しなければならない。 誰も助けてくれますか?ブラックベリーのバックグラウンドスレッドからUIに画像を表示する

私はすでにバックグラウンドスレッドからビットマップフィールドにアクセスしようとしたが、何もあなたがメイン画面を変更する必要がある場合は、からメイン画面にフィールドを追加する必要がある場合を意味

おかげ

 bmp = Bitmap.createBitmapFromBytes(jpegBytes, 0, jpegBytes.length, 1); 


     final Bitmap bit = bmp; 
     final byte [] jp = jpegBytes; 
     UiApplication.getUiApplication().invokeLater(new Runnable() { 
      public void run() 
      {     
       camView.jpegBytes = jp; 
       System.out.println(bit); 
       camView.bmpStream.setBitmap(bit); 
       //camView.bmpStream. 
      } 
     }); 
+0

試したコードを投稿できますか? – rfsk2010

答えて

0

やあみんな。あなたがメインクラスへの参照を持っているなら、上記のコードは質問に投稿してください。

+0

はい、UiApplication.getUiApplication()は、現在アクティブなUIアプリケーションコンテキストのUiApplicationオブジェクトを取得します。かなり頻繁にこれはあなたが背景から表示するときにしたいものです。あなたが興味を持っているなら、私は私のブログでこれのいくつかを説明しました:http://www.hrbuckley.net/2012/03/blackberrry-singletons-application.html – Richard

2

を起こりませんあなたは、画面を再描画する

invalidate(); 

メソッドを呼び出す必要があり、バックグラウンドスレッドそれ以外は変化が画面に置かないだろう

例:私は私の親クラスへの参照の使用で問題があった問題を見つけることができた

UiApplication.getUiApplication().invokeLater(new Runnable() { 
      public void run() 
      {     
       camView.jpegBytes = jp; 
       System.out.println(bit); 
       camView.bmpStream.setBitmap(bit); 
       invalidate(); 
       //camView.bmpStream. 
      } 
    }); 
+0

それはscreen.invlaidateのようなものですか? –

+0

はいhttp://www.blackberry.com/developers/docs/6.0.0api/net/rim/device/api/ui/Screen.html#invalidate%28%29 – Richard

+0

こんにちはRichard私はこれを試しましたが、それは動作しません私にとっては...あなたのUIコンポーネントをバックグラウンドスレッドから置き換えることは本当に可能ですか?私は自分のコードでいくつかのログを作ったが、それは交換部分を通って実行されるようだが、UIは更新されていない!いくつかの助けを借りる? –

関連する問題