如何远程唤醒手机?

时间:2014-02-18 22:22:35

标签: android xamarin.android xamarin android-wake-lock

我想构建一个需要通过3G远程启动的Android应用程序(通过套接字获取推送通知后)。

我做了一些研究,一旦屏幕关闭,它似乎变得非常复杂,也因为Android杀死了空闲套接字。

是否有一个示例项目演示如何可靠地实现它?我找到了WakefulIntentService库,但它没有考虑到套接字需要保持活动状态。

另一种方法是定期轮询某个URL以获取唤醒信号,但这会在设备检测到需要启动应用程序之前引入较大的延迟,具体取决于轮询间隔。

2 个答案:

答案 0 :(得分:2)

您是否考虑过GCMparse.com发送和接收推送?

我不认为那些容易被杀死。

话虽如此,如果你还没有,你应该让你的套接字在服务中运行。然后它可以在后台独立于活动的活动运行,并且可以在设备启动时启动。此外,这会降低Android关闭它的可能性。

答案 1 :(得分:0)

public abstract class WakeLocker {
    private static PowerManager.WakeLock wakeLock;

    public static void acquire(Context context) {
        if (wakeLock != null) wakeLock.release();

        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |
                PowerManager.ACQUIRE_CAUSES_WAKEUP |
                PowerManager.ON_AFTER_RELEASE, "WakeLock");
        wakeLock.acquire();
    }

    public static void release() {
        if (wakeLock != null) wakeLock.release(); wakeLock = null;
    }
}

在清单中添加以下行:

<uses-permission android:name="android.permission.WAKE_LOCK" />

当你想要醒来时使用:

WakeLocker.acquire(this);
完成通话后

WakeLocker.release();