2

私のアプリケーションでは、写真がキャプチャされたときに写真の数を増やす必要があります。に を設定しFileObserverましたDCIM directory。キャプチャされた写真を監視します。

ただし、 SD カードが存在しないFileObserverため、SD カードをアンマウントすると監視が停止します。DCIM directorySDカードをマウントしたら、思い立ったのでFileObserverもう一度登録してみましandroid.intent.action.EXTERNAL_APPLICATIONS_AVAILABLEた。しかし、FileObserver登録されていません。

私の質問は次のとおりです。

  1. FileObserverSDカードをマウントした後、時計を作る方法はありますか?
  2. 一部のデバイス (HTC) では、SD カードをマウントした後、インテントが得られません。その場合、どのような方法を使用できますか?
  3. ユーザーが内蔵のソフトボタンカメラで撮影した写真を聞く他の方法はありますか? カメラを自作するつもりはありません。

    fo = new FileObserver(path.toString(),
                        FileObserver.CLOSE_WRITE) {
    
                    @Override
                    public void onEvent(int event, String path) {
                        Log.d("yes", "event "+ event);
                        Log.d("operator",
                                "out side if"
                                        + Phototaken
                                        + externalStorageState
                                                .equals(Environment.MEDIA_MOUNTED));
                        if (Phototaken == 0 && event == 8){
                            String st = timeStamp();
                            Log.d("operator", "in event " + Phototaken);
                            Log.d("operator", "lat: " + MainService.lat
                                    + " " + "lng: " + MainService.lng + " "
                                    + "location: " + MainService.addre
                                    + " " + "time: " + st);
                            ptd.insert(st, String.valueOf(MainService.lat),
                                    String.valueOf(MainService.lng),
                                    MainService.addre);
                        }
    
                    }
                };
                fo.startWatching();
    
4

1 に答える 1

0

BroadcastReceiverSDのマウント/アンマウントイベントを監視するための新しいものを作成できます。次に、マウントイベントで、ディレクトリFileObserverの監視を再開するように指示します。DCIM

必要なイベントを監視するには、インテントフィルターを指定する必要があります。

IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addAction(Intent.ACTION_MEDIA_REMOVED);

公式APIリファレンスのこのスニペットは、外部ストレージの状態を監視する方法を示しています。

于 2012-06-25T15:22:24.067 に答える