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