1

我想以编程方式截取 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);
            }
        }
    });
    }'
    
4

2 回答 2

0

通常当您使用屏幕截图时,我们会获取屏幕图像。您是否按照说的那样运行它,这也可能是设备问题,所以我建议您尝试在其他设备上使用相同的东西。

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

于 2013-02-27T18:17:17.963 回答
-1

不要多次发布一个问题。

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

view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap b1 = view.getDrawingCache();
于 2013-02-27T17:13:04.947 回答