2014-03-12 76 views
2

我做了一個應用程序,它監視手機的加速度計 ,當它傾斜時,它應該調用某個數字。從睡眠打電話

我everythung到目前爲止運行,它甚至不來電, 但只有在我解開每手手機。

當有人試圖從我的汽車盜取 輪胎時,該應用程序打算給我打電話,所以手機必須從睡眠狀態喚醒我。

這裏是我的電話的方法和相關的變量:

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

+0

你應該是DeviceAdministrator才能解鎖手機。 –

+0

你好, 我找了它,互聯網上說,設備管理與2.2引入,是不是有一種方法2.1? – Splitframe

+0

將電話號碼存儲在例如'SharedPreferences'並使用'Service'。主叫號碼自動可能需要一個植根手機雖然 – zapl

回答

0

我知道這是不是你在找什麼,但你可以只留手機上的車載充電器(並隱藏它)。

Android設備提供了一個選項,可在充電時保持清醒(並解鎖)。檢查設備上的開發人員選項。

+0

可悲的是手機似乎沒有這個功能,這是一個 X8的Xperia用2.1 updt1,我也不能禁用幻燈片 解鎖。 – Splitframe