package de.graeb.adsbsniffer.status; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.MenuItem; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import java.text.DateFormat; import java.util.Date; import de.graeb.adsbsniffer.DatabaseHelper; import de.graeb.adsbsniffer.R; import de.graeb.adsbsniffer.Recorder; import de.graeb.adsbsniffer.RecordingStatistics; import de.graeb.adsbsniffer.ui.PlaneImages; /** * Displays statistics of a single airplane */ public class SinglePlaneStatus extends Activity { public static final String EXTRA_ICAO24 = "EXTRA_ICAO24"; private String icao24; private TextView textFirst; private TextView textLast; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActionBar().setDisplayHomeAsUpEnabled(true); setContentView(R.layout.activity_single_plane_status); textFirst = (TextView) findViewById(R.id.text_plane_first); textLast = (TextView) findViewById(R.id.text_plane_last); TextView textIcao24 = (TextView) findViewById(R.id.text_icao24); icao24 = getIntent().getStringExtra(EXTRA_ICAO24); textIcao24.setText(icao24); ImageView imageFlag = (ImageView) findViewById(R.id.imageview_countryflag); imageFlag.setImageResource(PlaneImages.lookupAircraft(icao24)); updateHandler.sendEmptyMessage(0); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); return true; } return super.onOptionsItemSelected(item); } @Override protected void onStop() { super.onStop(); updateHandler.removeMessages(0); } public Handler updateHandler = new Handler () { @Override public void handleMessage(Message msg) { // query the flight SinglePlaneStatus context = SinglePlaneStatus.this; DatabaseHelper databaseHelper = new DatabaseHelper(context, Recorder.getInstance().getCurrentRecording()); SQLiteDatabase db = databaseHelper.getReadableDatabase(); String[] rows = {"first, last"}; String[] args = {icao24}; Cursor cursor = db.query("flights", rows, "icao24 == ?", args, null, null, "first DESC"); cursor.moveToFirst(); if (cursor.getCount() > 0) { Date firstTimestamp = new Date((long)cursor.getInt(0) * 1000); DateFormat dateFormat = DateFormat.getDateTimeInstance(); textFirst.setText(dateFormat.format(firstTimestamp)); if (cursor.isNull(1)) { RecordingStatistics recordingStatistics = Recorder.getInstance().getRecordingStatistics(); RecordingStatistics.Entry entry = recordingStatistics.getEntry(icao24); textLast.setText(dateFormat.format(entry.getLastPacket())); } else { Date lastTimestamp = new Date((long)cursor.getInt(1) * 1000); textLast.setText(dateFormat.format(lastTimestamp)); } sendEmptyMessageDelayed(0, 1000); } else { Toast.makeText(context, context.getString(R.string.lookup_db_failed), Toast.LENGTH_LONG) .show(); } } }; }