2011-01-20 78 views
0

但屏幕關閉時無法寫入SD卡我對Java和Android完全陌生,所以我想我可能會錯過某些明顯的東西。 我正在編寫一個應用程序,在該應用程序中對取向傳感器進行採樣,並將結果寫入SDCard上的文件,並將其顯示在屏幕上的日誌中。 一切正常,而屏幕上。由於我想在屏幕變黑時也操作,因此我添加了代碼以獲取PARTIAL_WAKE_LOCK。 從我所知道的情況來看,當屏幕變黑時,傳感器仍在被採樣(使我覺得喚醒鎖已經工作),但是沒有結果寫入SD卡。我認爲這是發生了什麼,因爲當我通過按菜單鍵重新喚醒屏幕時,屏幕上的日誌顯示了屏幕關閉時發生的所有轉換。但是,當我查看SD卡上創建的文件時,文件中記錄的唯一轉場是在屏幕打開時發生的轉場。 至於我如何寫文件我試過了(我想我說的是對的......)一個包裝在BufferedWriter中的FileWriter和一個包裝在FileOutputStream中的FileWriter。 起初,即使我有喚醒鎖定功能,方向傳感器仍然不工作,直到我學會了一項工作,我在其中爲Intent.ACTION_SCREEN_OFF添加了BroadcastReceiver,並且當我得到它時,我取消了註冊方向偵聽器,然後重新註冊它。 我需要「取消註冊」FileWriter並「重新註冊」它或某物嗎? 奇怪的部分是,輸出文件包含所有的方向變化,在Intent.ACTION_SCREEN_OFF被接收之前,當我給屏幕提供電源時,接收到Intent.ACTION_SCREEN_ON後所有的方向變化,但兩者之間沒有任何變化。雖然我有PARTIAL_WAKE_LOCK

我正在寫爲Android 1.6(我有一個G1) 我的項目設置爲使用SDK 4

+0

P.S.如果你使用PARTIAL_WAKE_LOCK,人們會討厭你的應用程序。巨大的電池濾水器。 – 2011-01-20 02:09:37

回答

0

如果正在外部存儲器可作爲described here你檢查?當時可能不可寫。外部存儲器BroadcastReceiver也有code in the docs。你可以使用它來等待,直到寫入之前存儲可用。

+0

感謝您的回覆!我正在檢查onResume()中是否有外部存儲空間,因此在閱讀完您的建議之後,每次嘗試寫入文件時都添加了檢查。然後,我將該測試的結果打印在屏幕上的日誌中,以便在屏幕恢復後可以讀取它。奇怪的是,屏幕關閉時的結果始終是mExternalStorageWriteable == true,但是沒有任何內容寫入文件。任何想法,我從哪裏去? – 2011-01-21 03:10:08