我想以编程方式截取Android设备的屏幕截图。
我知道这个问题已被多次询问。我知道有两种方法可以做到。
从\dev\graphics\fb0
生成来自帧缓冲区的数据(但它总是0字节,我不知道存储设备当前屏幕截图的确切位置)。我的首选要求是获得更好的帧速率。我的代码是
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = new Intent();
intent.setClass(this, ScreenshotService.class);
bindService (intent, new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name)
{
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
try {
asl = IScreenshotProvider.Stub.asInterface(service);
} catch (Exception ex) {
Log.e("errrorrrrrrrrrrrrr","errrorrrrrrrrrrr", ex);
}
}
}, Context.BIND_AUTO_CREATE);
Button b1=(Button) this.findViewById(R.id.widget33);
b1.setOnClickListener(new OnClickListener() {
public void onClick(View view)
{
try {
asl.takeScreenshot();
} catch (RemoteException ex) {
Log.e("nnnnerrrrrrrrrrrrrr","errrrrrrrrrrrrr",ex);
}
}
});
}'
答案 0 :(得分:0)
通常当您使用屏幕截图时,我们会获得屏幕图像。你是按照说法运行它,也可能是设备,所以我建议你尝试在其他设备上使用相同的设备。
也有一段时间问题可能是在将文件写回sd时。所以请提供您尝试过的完整代码。
答案 1 :(得分:-1)
不要多次发布一个问题。
您可以使用以下代码获取视图的绘图缓存:
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap b1 = view.getDrawingCache();