package com.tgnourse.aprs; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import android.app.Service; import android.content.Context; import android.content.Intent; import android.hardware.SensorManager; import android.location.LocationManager; import android.os.Handler; import android.os.IBinder; import android.widget.Toast; public class APRSEncoderService extends Service { private static final String TAG = "APRSEncoderService"; /** * Our thread that transmits the data over APRS. */ private SensorDataRunnable transmitRunnable; /** * Tracks the most recent readings from all of the sensors. */ private SensorDataCollector data; private void statusToast(String message) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } @Override public void onCreate() { Util.log("onCreate()"); super.onCreate(); // Create the data collector. data = new SensorDataCollector( (LocationManager) getSystemService(LOCATION_SERVICE), (SensorManager) getSystemService(Context.SENSOR_SERVICE)); // Create the transmit thread. /*TextView frame = (TextView) findViewById(R.id.frame); TextView time = (TextView) findViewById(R.id.time); TextView aprs = (TextView) findViewById(R.id.aprs);*/ transmitRunnable = new SensorDataRunnable(new Handler(), null, null, null, data); } @Override public void onDestroy() { Util.log("onDestroy()"); super.onDestroy(); stopTransmitting(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Util.log("onStartCommand()"); startTransmitting(); return super.onStartCommand(intent, flags, startId); } private void startTransmitting() { statusToast("Started transmitting!"); // Start listening for sensor updates. data.registerListeners(); // Start the transmitter. ExecutorService executorService = Executors.newCachedThreadPool(); executorService.execute(transmitRunnable); } private void stopTransmitting() { statusToast("Stopped transmitting!"); // Stop transmitting data. if (transmitRunnable.playing()) { transmitRunnable.stop(); } // Stop listening for sensor updates. data.removeListeners(); } @Override public boolean onUnbind(Intent intent) { Util.log("onUnbind()"); return super.onUnbind(intent); } @Override public IBinder onBind(Intent intent) { Util.log("onBind()"); return null; } }