一、问题
目前遇到截屏参数设置后,不是改变的分辨率、而是在原有最大分辨率的图片上抽出一块指定区域。
二、分析
通过分析发现该功能为底层驱动实现,上层无法修改。
三、解决方法
1.参数还是设置为最大分辨率;
2.待上层拿到图片后,进行缩放、用以满足参数实现分辨率设置功能。
四、具体代码片段
import android.os.SystemProperties;
import android.graphics.Matrix;
import java.io.ByteArrayOutputStream;
public void run() {
if((this.width == 1920) && (this.height == 1080))
{
byte[] data = nativeCaptureBuf(2, 0, 0, this.width, this.height);
SystemProperties.set("sys.capturepicture","true");
mCaptureCallback.captureRGB_callback(data,data.length);
}
else
{
byte[] data = nativeCaptureBuf(2, 0, 0, 1920, 1080);
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
Matrix matrix = new Matrix();
float scaleWidth = ((float) this.width) / 1920;
float scaleHeight = ((float) this.height) / 1080;
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, 1920, 1080, matrix, true);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
resizedBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] newdata = baos.toByteArray();
SystemProperties.set("sys.capturepicture","true");
mCaptureCallback.captureRGB_callback(newdata,newdata.length);
}
}