2

電話の加速度計を監視するアプリを作成しました。傾いたときに特定の番号を呼び出す必要があります。

これまでのところすべてが実行されており、通話もできますが、ハンドごとに電話のロックを解除した後でのみです.

このアプリは、誰かが私の車からタイヤを盗もうとしたときに私に電話することを意図しているため、電話はスリープ状態から私に電話する必要があります。

これが私の呼び出しメソッドと関連する変数です:

    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

4

1 に答える 1