android系统截屏接口
来源:互联网 发布:java insert的返回值 编辑:程序博客网 时间:2024/05/29 04:57
android系统截屏接口
最近有客户希望它们的apk能够调用系统截屏接口,实现他们的功能。这个需求的实现方案是通过接收客户apk发送的截图广播给SystemUI 调用截图方法takeScreenShot()来实现的,在这里记录一下。
系统截图功能的源码位置在
platform/framework/base/package/SystemUI/src/com/android/systemui/screenhot/GlobalScreenshot.java
具体操作类 –PhoneStatusBar.java
下面写一下具体实现
1.定义一个意图字符串
public static final String
SYSTEM_SHOOT=”com.screenshot.quietly”
2.添加到意图过滤器
filter.addAction(SYSTEMUI_SHOOT);//添加到意图过滤器
3.接收广播
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
…..
else if(SYSTEMUI_SHOOT.equals(action)) {
Log.d("Victor","SYSTEMUI_LEKE_SHOOT: "+action); String pp=intent.getExtra("pp").toString();//获取用户定义的图片路径 String pn= (intent.getExtra("pn")+".jpg").toString();//图片名 Settings.System.putString(mContext.getContentResolver(),"ssp", pp); Settings.System.putString(mContext.getContentResolver(),"ssn", pn); takeScreenShot();//调用此方法做开启服务操作 }
}
4.执行takeScreenShot()
private void takeScreenShot() {
String imageDir=Settings.System.getString(mContext.getContentResolver(), "ssp"); String imageNam=Settings.System.getString(mContext.getContentResolver(), "ssn"); File file=new File(imageDir); String text=null; Log.d("Victor","imageDir="+imageDir+ ",imageName="+imageNam); file.mkdir(); 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() { @Override Log.d("Victor","onServiceConnected---------"); 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=0; msg.arg2=1; try { messenger.send(msg); } catch (RemoteException e) { } } } @Override public void onServiceDisconnected(ComponentName name) {} }; if (mContext.bindService(intent, conn, Context.BIND_AUTO_CREATE)) { mScreenshotConnection = conn; mHandler.postDelayed(mScreenshotTimeout, 10000); } } }
阅读全文
0 0
- android系统截屏接口
- 去除android系统截屏接口
- Android系统服务接口
- android 调用系统的接口
- android 调用系统的接口
- 转发:android 调用系统的接口
- Android应用中实现系统“分享”接口
- android调用系统的分享接口
- Android 调用系统接口发短信
- Android系统设置通用接口的编写
- 如何调用android的系统接口
- Android应用启用系统分享接口
- Android系统截屏
- Android中获取应用系统中应用信息接口
- 获取Android各类系统相关信息的接口实现代码
- android系统如何存储保密数据和保护WEBAPI接口
- Android应用中使用及实现系统“分享”接口
- Android应用中使用及实现系统“分享”接口
- Linux sprintf,sscanf,strcmp,strict_strtoull,memchr
- hessian(一)
- 常用网址收藏
- java配置文件
- 关于并发模型 Actor 和 CSP
- android系统截屏接口
- Convert BST to Greater Tree
- block解决循环引用详细解释
- JAVA 抓取当当图书文字并保存本地TXT文档
- apt-cache命令的常规用法
- GreenPlum 集群中通过orafunc实现Oracle兼容函数
- memcpy和memmove的模拟实现
- Practice_Codeforces Round #413 (Div. 2)
- MySQL支持的数据类型有哪些?