2011-01-20 1 views
0

私はJavaとAndroidについて全く新しいので、明らかに何かが分からないと思います。 私は、向きセンサーをサンプリングし、その結果をSDカード上のファイルに書き込むだけでなく、画面上のログに表示するアプリケーションを書いています。 画面が表示されている間、すべて正常に機能します。画面が暗くなっている間も操作したいので、PARTIAL_WAKE_LOCKを取得するコードを追加しました。 私が知る限り、画面が暗くなるとセンサーはまだサンプリングされています(ウェイクロックが機能していると思うようになります)が、結果はSDCardに書き込まれません。私はこれが起こっていると思います。なぜなら、メニューキーを押して画面を再表示すると、画面上のログには、画面が消えている間に表示されたすべてのトランジションが表示されるためです。しかし、SDカードで作成されたファイルを見ると、そのファイルに記録されているのは、画面が表示されている間に発生したものだけです。 ファイルをどのように書いているのですか(私はこれを正しく言うと思います...)FileWriterをBufferedWriterでラップし、FileWriterをFileOutputStreamでラップしました。 最初に、私がIntent.ACTION_SCREEN_OFFのBroadcastReceiverを追加した場所を回避することを学ぶまで、ウェイクロックを持っていたにもかかわらず、向きセンサーが機能していなかった。取得すると、オリエンテーションリスナーの登録を解除してから、 。 FileWriterを「登録解除」して「再登録」する必要がありますか? 奇妙な部分は、出力ファイルにIntent.ACTION_SCREEN_OFFが受信される前の向きの変更がすべて含まれていることと、画面の電源を入れたときにIntent.ACTION_SCREEN_ONが受信された後にすべてが出力されることです。私はPARTIAL_WAKE_LOCKを持っていても画面が消えている間はSDCardに書き込むことはできません

私は(私はG1を持っている)のAndroid 1.6のために書いているが 私のプロジェクトは、外部ストレージがdescribed hereとして利用可能であるならば4

+0

P.S. PARTIAL_WAKE_LOCKを使用すると、ユーザーはアプリを嫌になります。巨大なバッテリードレイン。 –

答えて

0

あなたがチェックしているSDKを使用するように設定されていますか?当時は書き込み不可能だったかもしれません。また、外部ストレージBroadcastReceiverにはcode in the docsがあります。あなたはそれを書いておく前に記憶装置が利用可能になるまで待つことができます。

+0

あなたの返信ありがとう!私は外部ストレージがonResume()で利用可能かどうかをチェックしていましたので、あなたの提案を読んだ後、ファイルに書き込もうとする度にチェックを追加しました。そのテストの結果を画面上のログに出力して、画面を元に戻すときに読むことができます。不思議なことに、画面がオフのときの結果は常にmExternalStorageWriteable == trueですが、ファイルには何も書き込まれません。ここからどこへ行くの? –

+0

ファイルを閉じていますか?画面が消えるとアンドロイドのフラッシュ動作が変化する可能性があります。 ---あなたのACTION_SCREEN_OFF BroadcastReceiverで新しいファイルを開いたり、書き込んだり、閉じたりしてみてください。単純なケースで書いても大丈夫かどうかはわかります。 – idbrii

関連する問題