private void showRecordedWindow() {
/* create a view and attach it to Window Manager */
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
recordedView = inflater.inflate(R.layout.recorded, null);
mWindowManager.addView(recordedView, getLayoutParams());
}
private WindowManager.LayoutParams getLayoutParams() {
mLp.setTitle("ScreenRecorded"); //虛擬顯示器過濾標(biāo)識判斷
mLp.type = WindowManager.LayoutParams.TYPE_PHONE;
mLp.format = PixelFormat.RGBA_8888;
mLp.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
mLp.gravity = Gravity.CENTER_VERTICAL;
mLp.width = WindowManager.LayoutParams.WRAP_CONTENT;
mLp.height = WindowManager.LayoutParams.WRAP_CONTENT;
mDisplay.getRealSize(mPoint);
int displayWidth = mPoint.x;
int displayHeight = mPoint.y;
mLp.x = displayWidth / 2;
mLp.y = 0;
return mLp;
}
SurfaceFlinger.cpp
if (!drawRegion.isEmpty()) {
//layersSortedByZ.add(layer);
if(DisplayDevice::DISPLAY_VIRTUAL == displayDevice->getDisplayType()){
string a= layer->getName().string();
string::size_type idx = a.find("ScreenRecorded#0");
if(idx == string::npos){
layersSortedByZ.add(layer);
}
}else{
layersSortedByZ.add(layer);
}
}