Android デバイスのシステム スクリーンショット (レイアウトのスクリーンショットではない) を撮りたいのですが、次のようにしました。
しかし、gl 変数はどこにあるのでしょうか。作成方法は?
Android デバイスのシステム スクリーンショット (レイアウトのスクリーンショットではない) を撮りたいのですが、次のようにしました。
しかし、gl 変数はどこにあるのでしょうか。作成方法は?
私の場合、私はNDKで作業しているため、C++はJavaでいくつかのメソッドを呼び出し、次にそのメソッドをいくつかのbool varに呼び出します
if(capture)
{saveAlbum(gl);
capture=false;
}
そして、これらの方法でglview画面をキャプチャします:
Bitmap SavePixels(int x, int y, int w, int h, GL10 gl)
{
int b[]=new int[w*(y+h)];
int bt[]=new int[w*h];
IntBuffer ib=IntBuffer.wrap(b);
ib.position(0);
gl.glReadPixels(x, 0, w, y+h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
for(int i=0, k=0; i<h; i++, k++)
{
//Remember, that OpenGL bitmap is incompatible with Android bitmap
//and so, some correction need.
for(int j=0; j<w; j++)
{
int pix=b[i*w+j];
int pb=(pix>>16)&0xff;
int pr=(pix<<16)&0xffff0000;
int pix1=(pix&0xff00ff00) | pr | pb;
bt[(h-k-1)*w+j]=pix1;
}
}
Bitmap sb = Bitmap.createBitmap(bt, w, h, Bitmap.Config.ARGB_8888);
return sb;
}
void saveAlbum(GL10 gl)
{
Bitmap bmp = SavePixels(0, 0, windowWIDTH, windowHEIGHT, gl); // display wid,height must be
bmp = rotate(bmp,DefinallyROTATION);
path =MediaStore.Images.Media.insertImage(m_Context.getContentResolver(), bmp, "hi", null);
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_SCANNER_STARTED);
intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
intentFilter.addDataScheme("file");
m_Context.registerReceiver(mReceiver, intentFilter);
m_Context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
+ Environment.getExternalStorageDirectory())));
}