我想知道是否可以使用 Ionic/Cordova 收听电话的硬件按钮。
重要的是,当用户当前没有像通过后台服务那样以某种方式使用应用程序时,这也应该起作用吗?
基本上,当用户在使用 Ionic 的混合应用程序中同时按下音量和电源按钮时,我想截取屏幕截图。然后该应用程序会提供编辑该屏幕截图或直接保存它的功能。
我做了一些研究并找到了 cordova events听那些按钮。我还读到,按下电源按钮时应该触发暂停事件。无论如何,我认为在该应用程序之外收听这些事件是行不通的吗?
经过更多研究后,我得出结论,使用 Cordova/Ionic 是不可能的。甚至这个问题的 native 实现似乎更像是一种 hack,而不是一个干净的解决方案。这样做的原因是,当前位于顶部的应用程序应该具有处理各种按钮事件的控制权。你可能会干扰另一个应用程序,并且你总是需要运行后台服务。
无论如何,我看到的所有解决方案对我来说都太脏了。
Basically I want to take a screenshot when the user presses the volume down and the power button at the same time in a hybrid app using Ionic.
如果我不能解决当前的问题,我必须重新考虑它。所以:
实际上,我只是希望用户能够以提供良好可用性体验的方式截取屏幕截图。
除了同时按下两个硬件按钮之外,我还有多种方法可以做到这一点。
选项 1: 用户按下“截屏”按钮 -> 应用进入后台,从底层应用截取屏幕截图,应用返回前台。
据我所知,这甚至在 iOS 中都行不通,只有 Android 提供“在其他应用程序之上绘制”,因此在 iOS 中,屏幕截图在所有情况下都会简单地从主屏幕截取...?
选项 2:用户按下“截屏”按钮 -> 应用进入后台并推送通知。
选项 3:可以将一个按钮添加到触发截屏操作的快捷方式。我不知道这是否可行,是否适用于所有设备。
我认为最好的解决方案是采用选项 2:通知上的自定义操作按钮。通知应该是所有设备上必须具备的,并且应该始终绘制在当前应用程序的顶部。因此,用户只需向下滑动通知并按下按钮即可截取屏幕截图。
我对这个主题没有任何先验知识,所以如果有人可以确认或改进我的思维过程,我会很高兴。
最佳答案
编辑:
我对此做了一些研究,主要是为了满足自己的好奇心。我遇到了这个插件
https://github.com/katzer/cordova-plugin-background-mode/blob/master/README.md
它允许您在后台执行任务。
请注意自述文件中的这一点。
Store Compliance
Infinite background tasks are not official supported on most mobile operation systems and thus not compliant with public store vendors. A successful submssion isn't garanteed.
Use the plugin by your own risk!
这在 Android 上可能不是什么大问题,但在 Apple 应用商店提交被拒绝方面存在一个悬而未决的问题。通读这个问题,看看其他人是如何解决这个问题的。
https://github.com/katzer/cordova-plugin-background-mode/issues/122
原答案:
如果你想截图有这个插件:
https://github.com/gitawego/cordova-screenshot/blob/master/README.md
也许您可以在使用暂停监听器的同时监听一些其他事件。如果它们被激活,则使用上面引用的屏幕截图插件调用:
navigator.screenshot.save(function(error,res){
if(error){
console.error(error);
}else{
console.log('ok',res.filePath);
}
});
关于android - 当应用程序不在前台时,Ionic/Cordova 触发应用程序操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43401900/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R