Невозможно записать на SDCard, когда экран выключен, хотя у меня есть PARTIAL_WAKE_LOCK - PullRequest
0 голосов
/ 20 января 2011

Я совершенно новичок в Java и Android, поэтому я думаю, что, вероятно, упускаю что-то очевидное. Я пишу приложение, в котором я пробую датчик ориентации и записываю результат в файл на SDCard, а также отображаю его в журнале на экране. Все работает нормально, когда экран включен. Поскольку я также хочу работать, когда экран темнеет, я добавил код для получения PARTIAL_WAKE_LOCK. Из того, что я могу сказать, когда экран темнеет, датчики все еще отбираются (заставляя меня думать, что блокировка активна), но ни один из результатов не записывается на SDCard. Я думаю, что это то, что происходит, потому что, когда я снова активирую экран нажатием клавиши меню, в журнале на экране отображаются все переходы, которые имели место, когда экран был выключен. Но когда я смотрю на файл, созданный на SD-карте, в файле записываются только те переходы, которые произошли, когда экран был включен. Что касается того, как я пишу файл, который я пробовал (я думаю, что я правильно говорю ...) FileWriter, обернутый в BufferedWriter, и FileWriter, обернутый в FileOutputStream. Сначала датчик ориентации не работал, несмотря на то, что у меня была блокировка следа, пока я не изучил работу, где я добавил BroadcastReceiver для Intent.ACTION_SCREEN_OFF и когда я его получаю, я отменяю регистрацию слушателя ориентации, а затем повторно регистрирую его. Нужно ли мне «отменить регистрацию» FileWriter и «перерегистрировать» его или что-то еще? Странная часть в том, что выходной файл содержит все изменения ориентации до получения Intent.ACTION_SCREEN_OFF, и все они после Intent.ACTION_SCREEN_ON, когда я снова включаю экран, но ничего между ними нет.

Пишу для Android 1.6 (у меня G1) Мой проект настроен на использование SDK 4

1 Ответ

0 голосов
/ 20 января 2011

Вы проверяете, доступно ли внешнее хранилище как , описанное здесь ? Это может быть просто недоступно для записи в то время. В документах есть также код *1003* для внешнего хранилища BroadcastReceiver. Вы можете использовать это, чтобы подождать, пока хранилище не станет доступным, прежде чем писать.

...