2016-11-27 13 views
0

webGLとandroid WebView(chrome 54.0)を使用して拡張現実感のアプリケーションを作成しています。それは私がJSアプリケーションでビデオストリームを取得する方法です(と、それはうまく動作します):Android WebView + WebGL +カメラ:BufferQueueが放棄されました

return navigator 
     .mediaDevices 
     .getUserMedia({video: { 
      "facingMode": "environment", 
      "width": cameraWidth, 
      "height": cameraHeight 
     }}) 
     .then((stream) => { 
      let cameraURL = URL.createObjectURL(stream); 

      // create Three.js texture with updated camera picture 
     }) 
     .catch(function(exception) { 
      // ... 
     }); 

そして私は私のWebViewの中でいくつかのUIビューのを示さなければならないので、私はビューからビットマップをキャプチャし、JSアプリケーションにアップロード:

私のデバイス上で動作
Bitmap viewBitmap = Bitmap.createBitmap(
     myView.getMeasuredWidth(), 
     myView.getMeasuredHeight(), 
     Bitmap.Config.ARGB_8888 
); 

Canvas canvas = new Canvas(viewBitmap); 
myView.draw(canvas); 

ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); 
viewBitmap.compress(Bitmap.CompressFormat.PNG, 100, byteStream); 
String base64EncodedBitmap = "data:image/png;base64," 
     + Base64.encodeToString(
       byteStream.toByteArray(), 
       Base64.DEFAULT 
     ); 

mWebView.loadUrl(
    String.format(
     "javascript:someFunction(\"%s\");void(0);", 
     base64EncodedBitmap 
    ) 
); 

、華為P8ライト(6.0)が、ネクサス5(6.0.1)に失敗した - いくつかのビューをロードした後に(そしておそらくガベージコレクタの仕事の後)には、カメラからの映像をフリーズし、continiously繰り返し、ログ内:

E/BufferQueueProducer: [ImageReader-640x480f23m2-7366-1] dequeueBuffer: BufferQueue has been abandoned 

誰もが知っている、何がうまくいかず、この問題を解決する方法はありますか? ご協力いただければ幸いです!

答えて

0

まあ、正しい解決策が見つかりませんでした。最後に、カメラからのビデオを表示するAndroid TextureView上に配置された透明な背景を持つWebViewで終了しました。

関連する問題