package de.graeb.adsbsniffer.fragments; import android.app.Fragment; import android.content.Intent; import android.location.Location; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import java.text.DecimalFormat; import de.graeb.adsbsniffer.R; import de.graeb.adsbsniffer.Recorder; import de.graeb.adsbsniffer.RecordingStatistics; import de.graeb.adsbsniffer.status.AdsbStatus; import de.graeb.adsbsniffer.status.PlaneStatus; /** * @author markus */ public class StatusFragment extends Fragment { private static final String ARG_SECTION_NUMBER = "section_number"; private Button buttonRate; private Button buttonCountPlanes; private Button buttonPosition; public static final DecimalFormat FORMAT_1POINTS = new DecimalFormat("0.0"); public static final DecimalFormat FORMAT_2POINTS = new DecimalFormat("0.00"); public static final DecimalFormat FORMAT_5POINTS = new DecimalFormat("0.00000"); public static StatusFragment newInstance(int sectionNumber) { StatusFragment fragment = new StatusFragment(); Bundle args = new Bundle(); args.putInt(ARG_SECTION_NUMBER, sectionNumber); fragment.setArguments(args); return fragment; } public StatusFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_status, container, false); buttonRate = (Button) rootView.findViewById(R.id.button_rate); buttonCountPlanes = (Button) rootView.findViewById(R.id.textView_countplanes); buttonPosition = (Button) rootView.findViewById(R.id.button_gpsstate); buttonRate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), AdsbStatus.class); getActivity().startActivity(intent); } }); buttonCountPlanes.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), PlaneStatus.class); getActivity().startActivity(intent); } }); updateHandler.sendEmptyMessage(0); return rootView; } @Override public void onDestroyView() { updateHandler.removeMessages(0); super.onDestroyView(); } private Handler updateHandler = new Handler() { @Override public void handleMessage(Message msg) { Recorder recorder = Recorder.getInstance(); RecordingStatistics recordingStatistics = recorder.getRecordingStatistics(); String[] icao24s = recordingStatistics.getIcao24s(); buttonCountPlanes.setText(String.format("%d", icao24s.length)); buttonRate.setText(String.format(getActivity().getString(R.string.format_packet_second) , FORMAT_1POINTS.format(recordingStatistics.getRate()))); Location location = recorder.getLastLocation(); buttonPosition.setText(location != null ? formatLocation(location) : getActivity().getText(R.string.gps_disabled)); sendEmptyMessageDelayed(0, 1000); } }; private String formatLocation(Location location) { return String.format( getActivity().getString(R.string.location_format), FORMAT_5POINTS.format(location.getLongitude()), FORMAT_5POINTS.format(location.getLatitude()), FORMAT_2POINTS.format(location.getSpeed())) + (location.hasAltitude()?String.format(getActivity().getString(R.string.location_altitude), (int)location.getAltitude()):""); } }