截取屏幕截图(以编程方式)

时间:2013-02-27 16:54:41

标签: android screenshot

我想以编程方式截取Android设备的屏幕截图。

我知道这个问题已被多次询问。我知道有两种方法可以做到。

  1. 使用屏幕截图库(但我一直都是黑屏)。
  2. \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);
            }
        }
    });
    }'
    

2 个答案:

答案 0 :(得分:0)

通常当您使用屏幕截图时,我们会获得屏幕图像。你是按照说法运行它,也可能是设备,所以我建议你尝试在其他设备上使用相同的设备。

也有一段时间问题可能是在将文件写回sd时。所以请提供您尝试过的完整代码。

答案 1 :(得分:-1)

不要多次发布一个问题。

您可以使用以下代码获取视图的绘图缓存:

view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap b1 = view.getDrawingCache();