当前位置: 首页 > 面试题库 >

截屏-后台服务

荀振国
2023-03-14
问题内容

我正在尝试使用后台服务拍摄屏幕截图。该服务就像一个Facebook聊天头,但是我希望它在单击时拍摄屏幕截图。

预览图片

我已经开发了一些代码,但是没有用。我尝试过的最后一个是:

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及更高版本,您可以使用Google
的MediaProjection
API截取屏幕截图,但需要征得用户的许可。

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

对于少于Lollipop的设备,您需要具有root权限。



 类似资料:
  • 我想创建一个小应用程序,在后台记录数据。所以我试着用绑定服务。这很好,但如果我关闭应用程序,服务也会停止。< br >那么,我的问题是:使用即时服务来执行这一操作是不是一个好方法?当应用程序关闭时,我如何保持服务在后台运行(我也想在启动后启动它)?

  • 我正在开发一个Android应用程序,这个应用程序是一个家长顾问应用程序,它将安装在父母的手机和孩子的手机上。我的问题是,在男孩不知情的情况下,如何从他的手机中截图?

  • 7.1 ABP后台服务 - 后台作业和后台工人 7.1.1 简介 ABP提供了后台作业和后台工人,来执行应用程序中的后台线程的某些任务。 7.1.2 后台作业 由于各种各样的原因,你需要后台作业以队列和持久化的方式来排队执行某些任务。 例如: 用户等待执行一个长时任务。例如:某个用户按下了报表按钮生成一个需要长时间等待的报表。你添加这个工作到队列中,当报表生成完毕后,发送报表结果到该用户的邮箱。

  • 高清截屏        在“视图”菜单栏中点击高清出图,弹出对话框如下。设置图片大小是几倍窗口大小,设置好图片输出路径,点击确定输出图片。

  • 链接 后台作业和后台工人 集成Hangfire 集成Quartz

  • 如何在Android奥利奥继续后台服务而不显示通知点?我使用通知继续我的后台服务,但我不想显示运行服务的通知。