Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向Android 2.3添加屏幕截图功能_Android_Screenshot_Android Service_Android Source_Android Framework - Fatal编程技术网

向Android 2.3添加屏幕截图功能

向Android 2.3添加屏幕截图功能,android,screenshot,android-service,android-source,android-framework,Android,Screenshot,Android Service,Android Source,Android Framework,我正在为Android 2.3实现一个屏幕截图功能(我知道ICS已经有了一个屏幕截图功能)。我正在使用Android屏幕截图库(简称ASL)项目作为基础,我正在修改它以满足我的需要。我还可以自由修改Android的源代码。我们的目标是实现类似Galaxy Note的功能:你用一个按键组合截图,然后出现一个编辑器,允许你随意更改图像。你可以在任何地方拍摄屏幕截图:在主屏幕上,使用应用程序时,等等 现在我有3个工作部分:一个捕获屏幕缓冲区的本地二进制文件,一个与本地二进制文件对话并检索屏幕截图的服务

我正在为Android 2.3实现一个屏幕截图功能(我知道ICS已经有了一个屏幕截图功能)。我正在使用Android屏幕截图库(简称ASL)项目作为基础,我正在修改它以满足我的需要。我还可以自由修改Android的源代码。我们的目标是实现类似Galaxy Note的功能:你用一个按键组合截图,然后出现一个编辑器,允许你随意更改图像。你可以在任何地方拍摄屏幕截图:在主屏幕上,使用应用程序时,等等

现在我有3个工作部分:一个捕获屏幕缓冲区的本地二进制文件,一个与本地二进制文件对话并检索屏幕截图的服务,以及编辑器。但我不知道我如何才能把这三件事结合起来。可以将本机二进制文件添加到Android预构建部分,并且可以修改init.rc以在引导时作为root用户执行它(尽管我仍然必须这样做)。编辑器是一个简单的应用程序,也可以包含在Android中。但我还是不知道该怎么处理这项服务

理想情况下,我希望捕获一个按键组合(比如电源按钮和音量降低,或者前面的两个按钮),这将触发服务。然后,该服务将调用二进制文件获取屏幕截图,并启动一个意图,用屏幕截图打开编辑器。然而,据我所知,服务无法捕捉按键。此外,服务必须绑定到某个地方才能知道何时需要截图,所以我想我应该修改Android本身来启动服务,并在启动时绑定到它,但是缺少关于Android源代码的文档,我不知道从哪里开始查找

有人知道安卓的哪个组件负责按键,以及我应该在哪里绑定我的服务吗?我的方法可能吗


提前感谢您提供的任何可能的帮助。

请看一看。建议使用摄像头按钮,这肯定比重载其他系统按钮要好。

谢谢您的回答!我非常担心我的问题会被其他问题所掩盖。不过,我的设备没有专用的摄像头按钮;它只有电源和音量按钮,前面有典型的4个电容按钮。然而,您链接中的一个回复(我已经搜索了好几天了,还没有看到这个问题!)指向InputMethodService,我将马上查看它。再次感谢!但为什么是纽扣呢?如果我没记错的话,Dropcap依赖于G传感器:你摇动设备,它就会截图。您可以编程其他模式,如在背面双击或类似。另一种可能是延迟截图:你启动你的截图应用程序,按下其中的一个按钮,然后有5秒钟的时间返回到你想要截图的应用程序。这是一种可能性,但由于Android ICS是通过按下电源按钮+音量降低来实现的,所以我想用同样的方式。然而,即使我使用G-sensor或其他什么工具,我仍然不确定如何在全局范围内捕获它,然后访问我的守护进程:服务?如果是,我应该把它放在哪里?我不打算制作一款应用程序在谷歌Play上销售;我正试图用这个功能为一个特定的设备建立我自己的安卓镜像。服务是正确的选择。您可以从活动或启动时启动它。您的“执事”可以是服务的一部分(在同一进程中运行)。或者,如果这是另一个过程的一部分,你可以发送一个意向。好的,我来试试。我想,如果我想让我的服务在启动时运行并保持在后台运行,我需要启动它,而不是将其绑定到活动,是吗?谢谢你的这些想法。我还不知道如何与按键交互,但我做了一个变通方法,通过检测用户何时晃动手机,这很容易实现。如果我知道如何做我想做的事,我会用答案更新我的问题。