在一个service界面上,点击一个button按钮,可以截屏

贴上代码:

mButton.setOnClickListener(new OnClickListener(){
         public void onClick(View arg0) {
          capturescreen();
         }
         });

private void captureScreen ()

{

mHandler.postDelayed(mScreenshotChordLongPress,1000);

}

private final Runnable mScreenshotChordLongPress = new Runnable() {      
  public void run() {
   takeScreenshot();       
  }
  };
  
  final Runnable mScreenshotTimeout = new Runnable() {
   public void run() {
    synchronized (mScreenshotLock) {
     if (mScreenshotConnection != null) {
      mContext.unbindService(mScreenshotConnection);                   
            mScreenshotConnection = null;
            }
     }
    }
   };
   
 private void takeScreenshot() {
  synchronized (mScreenshotLock) {
   if (mScreenshotConnection != null) {
                   return;
                   }
   
   ComponentName cn = new ComponentName("com.android.systemui",
                       "com.android.systemui.screenshot.TakeScreenshotService");
   Intent intent = new Intent();
   intent.setComponent(cn);
   ServiceConnection conn = new ServiceConnection() {
    public void onServiceConnected(ComponentName name, IBinder service) {
     synchronized (mScreenshotLock) {
      if (mScreenshotConnection != this) {
                               return;
                               }
      Messenger messenger = new Messenger(service);
               Message msg = Message.obtain(null, 1);
               final ServiceConnection myConn = this;
               Handler h = new Handler(mHandler.getLooper()) {
                               @Override
                               public void handleMessage(Message msg) {
                                   synchronized (mScreenshotLock) {
                                       if (mScreenshotConnection == myConn) {
                                           mContext.unbindService(mScreenshotConnection);
                                           mScreenshotConnection = null;
                                           mHandler.removeCallbacks(mScreenshotTimeout);
                                       }
                                   }
                               }
                           };
                           msg.replyTo = new Messenger(h);
                           msg.arg1 = msg.arg2 = 0;
//                           if (mStatusBar != null && mStatusBar.isVisibleLw())
                            //   msg.arg1 = 1;
//                           if (mNavigationBar != null && mNavigationBar.isVisibleLw())
                             //  msg.arg2 = 1;
                           try {
                               messenger.send(msg);
                           } catch (RemoteException e) {
                           }
                       }
                   }
                   public void onServiceDisconnected(ComponentName name) {}
               };
            
               if (mContext.bindService(intent, conn, Context.BIND_AUTO_CREATE)) {               
                   mScreenshotConnection = conn;               
                   mHandler.postDelayed(mScreenshotTimeout, 10000);           
                   }

}
       }

点击button之后会停运,因为调用系统截屏的serivce:com.android.systemui.screenshot.TakeScreenshotService

要调用此service需要sysytem权限才能调用:

唯有将此应用内置到手机里面,才能获取到sysytem权限:

做法如下:

1.在你自己的程序当中的的mainfest.xml的manifest加上此属性android:sharedUserId="android.uid.system"

2.内置的时候Android.mk中加上LOCAL_CERTIFICATE := PLATFORM

3.在linux环境下将此应用编译进去。这样就能够实现系统自带的截屏了

Android开发:实现系统自带截屏功能 需要获取System权限相关推荐

  1. Android app和系统应用实现截屏功能

    开发截屏功能也是常用的方法,一种是在普通app中通用的截屏方法,另外一种就是系统应用中使用的截屏方法,比如:SystemUI中添加截图功能 接下来就来实现普通app 和系统应用中截图的功能 1.普通a ...

  2. 苹果新手Mac OS X 使用笔记--------系统自带截屏功能快捷键巧记图

    在Windows世界里时,最好用的截屏软件要算是faststone了,那么OS X里是否有好用的截屏软件呢?答案是肯定的,而且是系统自身就带有的功能,使用时记住几个快捷键就可以了.具体如下: 其中 ( ...

  3. XP系统自带截屏功能操作方法

    一.代替屏幕截图软件   按下Print Screen键,将会截取全屏幕画面.用鼠标点击"开始→程序→附件→画图",将会打开"画图"程序,点击该窗口中的&quo ...

  4. ios android 截屏 分享,iOS 系统自带截屏分享

    分享一篇iOS系统自带截屏分享 使用方案 UIImage *image = [KJTools kj_shareWithHideBlock:^bool{ /// 隐藏不需要截图的区域 return YE ...

  5. Win10系统自带截屏快捷键

    Win10系统自带截屏快捷键 交截图文件的时候,一般都喜欢用微信或者QQ带的截屏功能,但QQ.微信截屏很多时候也不是万能的,总有用到系统截屏的时候. 系统截图操作快捷键: Win + shift + ...

  6. Windows之系统自带截屏快捷键

    Windows之系统自带截屏快捷键 现在我们都习惯了使用QQ截屏,但是有时候电脑没有网络,也就意味着无法登陆QQ,在这个时候再有截屏的需求时,我们就束手无策了. 截取全屏 现在我说以个Windows系 ...

  7. iOS 系统自带截屏分享

    分享一篇iOS系统自带截屏分享 使用方案 UIImage *image = [KJTools kj_shareWithHideBlock:^bool{/// 隐藏不需要截图的区域return YES; ...

  8. Windows系统自带录屏功能,再也不用下录屏软件了

    使用 Xbox Game Bar 录屏 只需要点击搜索图标(或通过快捷键[Win+S]打开)搜索,运行[Xbox Game Bar],或者直接通过[Win+G]快捷键打开就可以啦~ 捕获图标不可用 可 ...

  9. html禁止手机截屏,[置顶] Android 应用内禁止截屏功能的实现

    截图介绍 Android的调试工具DDMS提供有截屏功能,很多软件也会有截屏功能,在做支付等安全类应用的时候,为了保证用户的资产和系统安全,往往会禁止应用内截屏,禁止之后,在此应用处于前台的情况下,截 ...

最新文章

  1. 使用Python+OpenCV+GAN实现车牌图像增强
  2. 感知算法论文(八):Generalized Intersection over Union:A Metric and A Loss for Bounding Box Regression(2019)
  3. BZOJ4590: [Shoi2015]自动刷题机
  4. x11转发:通过ssh远程使用GUI程序
  5. linux如何卸载conky,Linux Deepin 15.10.2 下折腾 简单自制的 Conky Conky-manager
  6. Redis之List类型操作
  7. MAVLink 协议解析之XML定义篇
  8. gcn语义分割_语义分割该如何走下去?
  9. PHP压缩CSS文件
  10. Python 帮助文件
  11. ubuntu等linux系统如何阅读caj文档
  12. java万能万年历的程序_Java编写多功能万年历程序的实例分享
  13. html与css笔记(旧)
  14. U3D学习项目一:2D横版小狐狸闯关游戏(代码部分二)
  15. 现在国际上发行的优秀的儿童期刊杂志有哪些
  16. python爬取支付宝基金数据_python爬取支付宝账单
  17. 计算机操作员要求,计算机操作员教学大纲
  18. Python实例1—打印购物小票
  19. 中国石斑鱼养殖产量不断上升,捕捞产量逐渐下降「图」
  20. Html+css+js实战:百度搜索框样式实现

热门文章

  1. 哪个计算机软件可以编辑动画文字,用什么软件可以修改GIF动画里的文字,怎么修改GIF动画的文字...
  2. VirtualBox for macOS NS_ERROR_FAILURE (0x80004005) 问题解决记录
  3. 孩子误了计算机考试能参加中考吗,看完中考电脑阅卷“内幕”,你还会让孩子这样答卷吗?...
  4. 复信号的傅里叶变换是什么?频谱是什么样子的?3D频谱图长啥样子?
  5. linux系统下的动态壁纸,Ubuntu 10.04下实现动态桌面壁纸
  6. C语言编程>第二十三周 ⑤ 请补充main函数,该函数的功能是:求1~100(不包括100)以内所有素数的平均值。
  7. 短视频是屌丝逆袭的一个绝好的机会
  8. PHP项目中使用 Markdown编辑器
  9. springboot系列(十二):如何实现邮件发送提醒,你一定得会(准备篇)
  10. java 静态变量回收_浅谈静态变量的回收问题