从睡眠中拨打电话

时间:2014-03-12 19:49:30

标签: android call sleep wakeup

我制作了一款监听手机加速度计的应用程序 当它倾斜时,它应该调用某个数字。

到目前为止,我的每个人都跑了,甚至打电话, 但只有在我每手解锁手机后才能使用。

当有人试图偷走轮胎时,应用程序会打电话给我 我的车,所以手机必须从睡眠状态打电话给我。

这是我的调用方法和相关变量:

    PowerManager powerManager;
    WakeLock fullWakeLock; 

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = getIntent();

        powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
        fullWakeLock = powerManager.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "Loneworker - FULL WAKE LOCK");

    }

...

    public void call(){

    fullWakeLock.acquire();

    KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
    KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("TAG");
    keyguardLock.disableKeyguard();

    try {
        Intent callIntent = new Intent(Intent.ACTION_CALL);
        callIntent.setData(Uri.parse("tel:" + ((EditText)findViewById(R.id.nPhoneToCall)).getText().toString()));
        startActivity(callIntent);
    } catch (ActivityNotFoundException e) {
        Log.e("", "Call failed", e);
    }
}
编辑:哦,我也试过了:

    Window window = this.getWindow();
    window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
    window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
像我说的那样他确实打过电话 但仅当屏幕已解锁时:(

EDIT2: 必须在Android 2.1(API级别7)上运行

请帮助:3

1 个答案:

答案 0 :(得分:0)

我知道这不是你想要的,但你可以将手机放在车载充电器上(并隐藏它)。

Android设备提供充电时保持清醒(和解锁)的选项。检查设备上的开发人员选项。