我目前正在尝试制定一种可靠的方法来确定特定的充电器类型,在我的例子中是音乐基座,如 this .问题是,不幸的是,这个停靠点在停靠时不会发送停靠事件。
因为我正在制作依赖于能够确定设备何时停靠或取消停靠的应用程序。因此,我需要一种方法来过滤和分离这些事件:
我注意到我的设备 (LG optimus 4x HD) 设法对这些操作中的每一个做出不同的 react 。当它连接到标准充电器时,它没有给出任何通知消息,当它连接到计算机时,它告诉我 USB 模式已激活,当它连接到扩展坞时,它给我一个慢速充电器警告。
我需要制作一个具有相同能力的系统来分离这些 Action 并对它们使用react。到目前为止,我只制作了一个简单的 BroadcastReceiver,它会在设备连接或未连接到充电器时使用react。我还设法使用 documentation 中的代码监控充电状态.
有什么方法可以确定这个特定的充电器输入吗?
最佳答案
每当设备连接或断开连接时,都会广播 ACTION_DOCK_EVENT 操作。要监视设备停靠状态的变化,只需在您的应用程序 list 中注册一个广播接收器,如下面的代码 fragment 所示:
<action android:name="android.intent.action.ACTION_DOCK_EVENT"/>
如果设备已插接,它可以插接在四种不同类型的扩展坞中的任何一种中:
停靠状态详细信息作为额外内容包含在 ACTION_DOCK_EVENT 操作的粘性广播中。因为它是粘性的,所以您不需要注册 BroadcastReceiver。您可以简单地调用 registerReceiver() 并传入 null 作为广播接收器,如下一个 fragment 所示。
IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = context.registerReceiver(null, ifilter);
您可以从 EXTRA_DOCK_STATE extra 中提取当前停靠状态:
int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
您可以通过
找到停靠状态boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
dockState == EXTRA_DOCK_STATE_LE_DESK ||
dockState == EXTRA_DOCK_STATE_HE_DESK;
编辑:
如果您的应用仍未收到广播,请尝试使用此代码发送手动广播并检查代码:
adb shell am broadcast -a android.intent.action.POWER_CONNECTED -n com.jm.monitoringbatterydemo/.PowerConnectionReceiver
更改广播的名称和您的接收器。
关于android - 确定具体的充电器输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19868550/
我正在编写一个方法,它将在一个类中定义一个实例方法;类似于attr_accessor:classFoocustom_method(:foo)end我通过将custom_method函数添加到Module模块并使用define_method定义方法来实现它,效果很好。但我无法弄清楚如何考虑类(class)的可见性属性。例如,在下面的类中classFoocustom_method(:foo)privatecustom_method(:bar)end第一个生成的方法(foo)必须是公共(public)的,第二个(bar)必须是私有(private)的。我怎么做?或者,如何找到调用我的cust
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
有没有一种简单的方法可以判断ruby脚本是否已经在运行,然后适本地处理它?例如:我有一个名为really_long_script.rb的脚本。我让它每5分钟运行一次。当它运行时,我想看看之前运行的是否还在运行,然后停止第二个脚本的执行。有什么想法吗? 最佳答案 ps是一种非常糟糕的方法,并且可能会出现竞争条件。传统的Unix/Linux方法是将PID写入文件(通常在/var/run中)并在启动时检查该文件是否存在。例如pid文件位于/var/run/myscript.pid然后你会在运行程序之前检查它是否存在。有一些技巧可以避免
这是针对我无法破坏的现有公共(public)API,但我确实希望对其进行扩展。目前,该方法采用字符串或符号或任何其他在作为第一个参数传递给send时有意义的内容我想添加发送字符串、符号等列表的功能。我可以只使用is_a吗?数组,但还有其他发送列表的方法,这不是很像ruby。我将调用列表中的map,所以第一个倾向是使用respond_to?:map。但是字符串也会响应:map,所以这行不通。 最佳答案 如何将它们全部视为数组?String的行为与仅包含String的Array相同:deffoo(obj,arg)[*arg].eac
我想查找字符串的结尾是否与单独字符串的开头重叠。例如,如果我有这两个字符串:string_1='Peoplesaynothingisimpossible,butI'string_2='butIdonothingeveryday.'如何找到string_1末尾的“butI”部分与string_2开头相同?我可以编写一个方法来遍历这两个字符串,但我希望得到一个包含我错过的Ruby字符串方法或Ruby习惯用法的答案。 最佳答案 将MARKER设置为一些从未出现在您的string_1和string_2中的字符串。有一些方法可以动态地做到这一
我的ruby脚本从命令行参数获取某些输入。它检查是否缺少任何命令行参数,然后提示用户输入。但是我无法使用gets从用户那里获得输入。示例代码:test.rbname=""ARGV.eachdo|a|ifa.include?('-n')name=aputs"Argument:#{a}"endendifname==""puts"entername:"name=getsputsnameend运行脚本:rubytest.rbraghav-k错误结果:test.rb:6:in`gets':Nosuchfileordirectory-raghav-k(Errno::ENOENT)fromtes
我正在为我的用户实现一些rubyonrails代码推特内容。我正在创建正确的oauth链接...类似http://twitter.com/oauth/authorize?oauth_token=y2RkuftYAEkbEuIF7zKMuzWN30O2XxM8U9j0egtzKv但在我的测试帐户授予对twitter的访问权限后,它会弹出一个页面,上面写着“您已成功授予对.我不知道用户应该在哪里输入此PIN以及他们为什么必须这样做。我认为这不是必要的步骤。Twitter应该将用户重定向到我在应用程序设置中提供的回调URL。有谁知道为什么会这样?更新我找到了thisarticle声明我需
我相信我对这个问题有一个很好的答案,但我想确保ruby-philes没有更好的方法来做到这一点。基本上,给定一个输入字符串,我想在适当的情况下将该字符串转换为整数,或在适当的情况下将其转换为float。否则,只返回字符串。我会在下面发布我的答案,但我想知道是否有更好的方法。例如:to_f_or_i_or_s("0523.49")#=>523.49to_f_or_i_or_s("0000029")#=>29to_f_or_i_or_s("kittens")#=>"kittens" 最佳答案 我会尽可能避免在Ruby中使用正则表达式
Python判断字符串输入合法化只包含数字包含数字只包含中文包含中文只包含字母包含字母只包含数字判断字符串是否只包含数字:1.str.isdecimal()如果str只包含全角数字则返回True2.str.isdigit()如果str只包含全角数字、unicode编码的数字字符串例如⑴、\u00b2此类型则返回True3.str.isnumeric()如果str只包含数字(全角、半角)则返回True包含数字判断字符串是否只包含数字:print(bool(re.search(r'\d',"12321sad")))re.search()方法扫描整个字符串,并返回第一个成功的匹配,(re.searc