java - 截图 - 后台服务

标签 java android android-service screenshot

我正在尝试使用后台服务截取屏幕截图。此服务就像 Facebook chathead,但我希望它在我点击时截取屏幕截图。

Preview Pickture

我已经开发了一些代码,但它不起作用。我最后尝试的是:

private void takeScreenshot() {
    Date now = new Date();
    android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);

        // image naming and path  to include sd card  appending name you choose for file
        String mPath = Environment.getExternalStorageDirectory().toString() + "/capture/" + now + ".jpg";

        // create bitmap screen capture
        Bitmap bitmap;
        View v1 = chatHead.getRootView();
        v1.setDrawingCacheEnabled(true);
        bitmap = Bitmap.createBitmap(v1.getDrawingCache());
        v1.setDrawingCacheEnabled(false);

        OutputStream fout = null;
        File imageFile = new File(mPath);

        try {
            fout = new FileOutputStream(imageFile);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fout);
            fout.flush();
            fout.close();

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

但是是截屏到我的按钮而不是屏幕。

我知道问题出在这里:

View v1 = chatHead.getRootView();

但是我不知道怎么解决。谁能帮帮我?

我实际上使用的是 Android Studio 2.2.2 和 Android 4.0 或更高版本。

最佳答案

对于 Lollipop 及更高版本,您可以使用 MediaProjection Google 的 API 来截取屏幕截图,但您需要征得用户的许可。

您可以使用 MediaProjection 找到示例屏幕捕获代码 Here

对于低于 Lollipop 的设备,您需要获得 root 权限。

关于java - 截图 - 后台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44288546/

相关文章:

java - 关闭 BufferedWriter/Reader 会影响绑定(bind)到同一套接字的其他实例吗?

android - Geofence Broadcast Receiver 未触发,但当我打开谷歌地图时,它有效

android - 如果不希望操作被来电、AsyncTask 或服务停止,我应该使用什么?

java - 当应用程序关闭时,locationListener 会工作吗?

java - 如何在 JTable 列中仅选择一个复选框

java - JAXB 拆解 cdata

android - 在 Android 中从一个 Activity 移动到另一个 Activity 期间的动画转换

android TabItem onClick 不起作用

android - 关闭应用程序时屏幕开/关崩溃

android - 无法在 WindowManager 中调用 onClickListener