Bump java lib versions in preparation for 1.9.2
[fw/altos] / altosdroid / app / src / main / java / org / altusmetrum / AltosDroid / TelemetryLogger.java
1 package org.altusmetrum.AltosDroid;
2
3 import org.altusmetrum.altoslib_14.*;
4
5 import android.content.BroadcastReceiver;
6 import android.content.Context;
7 import android.content.Intent;
8 import android.content.IntentFilter;
9 import android.os.Environment;
10
11 public class TelemetryLogger {
12         private Context   context = null;
13         private AltosLink link    = null;
14         private AltosLog  logger  = null;
15
16         private BroadcastReceiver mExternalStorageReceiver;
17
18         public TelemetryLogger(Context in_context, AltosLink in_link) {
19                 context = in_context;
20                 link    = in_link;
21
22                 startWatchingExternalStorage();
23         }
24
25         public void stop() {
26                 stopWatchingExternalStorage();
27                 close();
28         }
29
30         private void close() {
31                 if (logger != null) {
32                         AltosDebug.debug("Shutting down Telemetry Logging");
33                         logger.close();
34                         logger = null;
35                 }
36         }
37
38         void handleExternalStorageState() {
39                 String state = Environment.getExternalStorageState();
40                 if (Environment.MEDIA_MOUNTED.equals(state)) {
41                         if (logger == null) {
42                                 AltosDebug.debug("Starting up Telemetry Logging");
43                                 logger = new AltosLog(link);
44                         }
45                 } else {
46                         AltosDebug.debug("External Storage not present - stopping");
47                         close();
48                 }
49         }
50
51         void startWatchingExternalStorage() {
52                 mExternalStorageReceiver = new BroadcastReceiver() {
53                         @Override
54                         public void onReceive(Context context, Intent intent) {
55                                 handleExternalStorageState();
56                         }
57                 };
58                 IntentFilter filter = new IntentFilter();
59                 filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
60                 filter.addAction(Intent.ACTION_MEDIA_REMOVED);
61                 context.registerReceiver(mExternalStorageReceiver, filter);
62                 handleExternalStorageState();
63         }
64
65         void stopWatchingExternalStorage() {
66                 context.unregisterReceiver(mExternalStorageReceiver);
67         }
68
69 }