1

我有一个应用程序可以在手机充电器断开连接时播放声音。Evrything 运行良好,但 Android 会ACTION_POWER_DISCONNECTED在手机启动时触发,与充电器连接时相同ACTION_POWER_CONNECTED

我理解为什么操作系统会做出这样的事情,但是否有可能知道这是由于重新启动状态,所以我的声音不会播放?

这发生在 Nexus 4 上,尚未测试其他设备。

    @Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction() == Intent.ACTION_POWER_CONNECTED) {

    } else if (intent.getAction() == Intent.ACTION_POWER_DISCONNECTED) {
              //Don't want to get there if the phone is rebooting!
    }
}

谢谢!

4

1 回答 1

0

想出了一个解决我的问题的方法,这可能是一种通用且简单的方法,可以确保在调用充电器意图时设备没有启动。

只需抓住ACTION_BOOT_COMPLETED(不要忘记清单许可和意图)并在共享偏好中设置时间。

if (intent.getAction() == Intent.ACTION_BOOT_COMPLETED) {
        SharedPreferences.Editor editor = PreferenceManager
                .getDefaultSharedPreferences(context)
                .edit();
        editor.putLong("uptime", System.currentTimeMillis());
        editor.commit();
        return;
    }

然后,为了确保我们不在引导序列中,将您的代码与系统正常运行时间相比较的简单条件:

    if (preferences.getLong("uptime", System.currentTimeMillis()) > System.currentTimeMillis() - SystemClock.uptimeMillis()) {
               //Your code to be executed there!
    }

希望这会帮助任何人!

于 2013-09-18T17:39:21.280 回答