package com.num.activities; import java.util.ArrayList; import java.util.Calendar; import java.util.Timer; import java.util.TimerTask; import org.json.JSONObject; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; import android.os.CountDownTimer; import android.os.Handler; import android.os.Message; import android.view.GestureDetector; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.HorizontalScrollView; import android.widget.ImageView; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.ScrollView; import android.widget.TabHost; import android.widget.TextView; import android.widget.Toast; import com.num.Values; import com.num.helpers.ServiceHelper; import com.num.helpers.ThreadPoolHelper; import com.num.listeners.BaseResponseListener; import com.num.models.Battery; import com.num.models.Device; import com.num.models.GPS; import com.num.models.LastMile; import com.num.models.Link; import com.num.models.Loss; import com.num.models.MainModel; import com.num.models.Measurement; import com.num.models.Model; import com.num.models.Network; import com.num.models.Ping; import com.num.models.Sim; import com.num.models.Throughput; import com.num.models.Traceroute; import com.num.models.TracerouteEntry; import com.num.models.Usage; import com.num.models.WarmupExperiment; import com.num.models.Wifi; import com.num.tasks.MeasurementTask; import com.num.ui.adapter.ListAdapter; import com.num.R; public class RunActivity extends BaseActivityGroup { // private LinearLayout table; private ThreadPoolHelper serverhelper; private Values session = null; private Activity activity; private boolean firstPing = true; private static final int SWIPE_MIN_DISTANCE = 180; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200; private GestureDetector gestureDetector; View.OnTouchListener gestureListener; static int timeCount = 70; public ArrayList<Model> items; public ListView listview; public ListAdapter listadapter; public HorizontalScrollView scroll; public Button nextButton; public ProgressBar progress; Resources res; TabHost tabHost; TabHost.TabSpec spec; // Resusable TabSpec for each tab Intent intent; // Reusable Intent for each tab public Button load; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.manual_test); activity = this; serverhelper = new ThreadPoolHelper(5, 10); ServiceHelper.processStopService(this); session = (Values) this.getApplicationContext(); session.initDataStore(); items = new ArrayList<Model>(); nextButton = (Button) findViewById(R.id.next); progress = (ProgressBar) findViewById(R.id.progress); // listadapter = new // ListAdapter(activity,noteButton,R.layout.item_view,items); serverhelper.execute(new MeasurementTask(activity, null, true, new MeasurementListener())); // listview.setAdapter(listadapter); scroll = (HorizontalScrollView) findViewById(R.id.scroller); load = (Button) findViewById(R.id.load); res = getResources(); // Resource object to get Drawables tabHost = (TabHost) findViewById(R.id.tabhost); tabHost.setup(this.getLocalActivityManager()); nextButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { int id = tabHost.getCurrentTab(); tabHost.setCurrentTab(id + 1); View v1 = tabHost.getCurrentTabView(); int diff = v1.getLeft() - scroll.getScrollX() - 154; moveScrollBy(diff); LastChosen = v1; toggleVisibility(); } }); Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { timeCount--; Message msg = Message.obtain(LoadMessageHandler, 0, new Integer(timeCount)); LoadMessageHandler.sendMessage(msg); } }, 0, 1000); } private Handler LoadMessageHandler = new Handler() { public void handleMessage(Message msg) { Integer time = (Integer) msg.obj; if (time > 0) load.setText("Loading ... will take about " + (time) + " seconds"); else load.setText("Loading ... Very soon!"); } }; public void toggleVisibility() { if (tabHost.getCurrentTab() == tabHost.getTabWidget().getTabCount() - 1) { nextButton.setVisibility(View.INVISIBLE); progress.setVisibility(View.VISIBLE); } else { nextButton.setVisibility(View.VISIBLE); progress.setVisibility(View.GONE); } } public class MeasurementListener extends BaseResponseListener { public void onCompletePing(Ping response) { // onCompleteOutput(response); } public void onCompleteDevice(Device response) { onCompleteOutput(response); } public void onCompleteMeasurement(Measurement response) { LoadBarHandler.sendEmptyMessage(0); onCompleteOutput(response); } public void onCompleteOutput(MainModel model) { Message msg2 = Message.obtain(UIHandler, 0, model); UIHandler.sendMessage(msg2); } public void onComplete(String response) { } public void onUpdateProgress(int val) { Message msg = Message.obtain(progressBarHandler, 0, val); progressBarHandler.sendMessage(msg); } public void onCompleteGPS(GPS response) { onCompleteOutput(response); } public void makeToast(String text) { Message msg = Message.obtain(toastHandler, 0, text); toastHandler.sendMessage(msg); } public void onCompleteSignal(String signalStrength) { } public void onCompleteUsage(Usage response) { onCompleteOutput(response); } public void onCompleteThroughput(Throughput response) { onCompleteOutput(response); } public void onCompleteWifi(Wifi response) { onCompleteOutput(response); } public void onCompleteBattery(Battery response) { onCompleteOutput(response); } public void onCompleteNetwork(Network response) { onCompleteOutput(response); } public void onCompleteSIM(Sim response) { // onCompleteOutput(response); } public void onCompleteSummary(JSONObject Object) { // TODO Auto-generated method stub } public void onFail(String response) { // TODO Auto-generated method stub } public void onCompleteLastMile(LastMile lastMile) { // TODO Auto-generated method stub } public void onUpdateUpLink(Link link) { // TODO Auto-generated method stub } public void onUpdateDownLink(Link link) { // TODO Auto-generated method stub } public void onUpdateThroughput(Throughput throughput) { // TODO Auto-generated method stub } public void onCompleteTraceroute(Traceroute traceroute) { // TODO Auto-generated method stub } public void onCompleteTracerouteHop(TracerouteEntry traceroute) { // TODO Auto-generated method stub } public void onCompleteWarmupExperiment(WarmupExperiment experiment) { // TODO Auto-generated method stub } public void onCompleteLoss(Loss loss) { // TODO Auto-generated method stub } } private Handler toastHandler = new Handler() { public void handleMessage(Message msg) { try { String text = (String) msg.obj; // Toast.makeText(activity, text, 1000); Toast.makeText(RunActivity.this, text, 1000); } catch (Exception e) { e.printStackTrace(); } } }; private Handler UIHandler = new Handler() { public void handleMessage(Message msg) { MainModel item = (MainModel) msg.obj; items.add(item); /* * listadapter.add(item); listadapter.notifyDataSetChanged(); */ intent = new Intent().setClass(activity, DisplayActivity.class); session.storeModel(item); intent.putExtra("model_key", item.getTitle()); View tabview = createTabView(tabHost.getContext(), item); tabview.setTag(item.getTitle()); spec = tabHost.newTabSpec(item.getTitle()).setIndicator(tabview) .setContent(intent); tabHost.addTab(spec); if (LastChosen == null) { LastChosen = tabview; } else { int diff = LastChosen.getLeft() - scroll.getScrollX() - 154; moveScrollBy(diff); } tabHost.setCurrentTabByTag(tabHost.getCurrentTabTag()); toggleVisibility(); tabview.setOnClickListener(new OnClickListener() { public void onClick(View v) { tabHost.setCurrentTabByTag((String) v.getTag()); int diff = v.getLeft() - scroll.getScrollX() - 154; moveScrollBy(diff); LastChosen = v; toggleVisibility(); } }); } }; private void moveScrollBy(int diff) { final long time = diff; System.out.println("Difference is " + diff); final int scrollIni = scroll.getScrollX(); if (time > 0) { new CountDownTimer(time, 10) { public void onTick(long millisUntilFinished) { scroll.scrollTo( (int) (scrollIni + ((time - millisUntilFinished))), 0); } public void onFinish() { } }.start(); } else { new CountDownTimer(-time, 10) { public void onTick(long millisUntilFinished) { scroll.scrollTo( (int) (scrollIni - ((-time - millisUntilFinished))), 0); } public void onFinish() { } }.start(); } } private View LastChosen; private Handler LoadBarHandler = new Handler() { public void handleMessage(Message msg) { load.setVisibility(View.GONE); ServiceHelper.processStopService(activity); ServiceHelper.processStartService(activity); } }; private Handler progressBarHandler = new Handler() { public void handleMessage(Message msg) { try { int value = (Integer) msg.obj; // progressBar.setProgress(value); } catch (Exception e) { e.printStackTrace(); } } }; private static View createTabView(final Context context, Model item) { View view = LayoutInflater.from(context) .inflate(R.layout.tabs_hg, null); view.setPadding(0, 0, 0, 0); // ImageView tv = (ImageView) view.findViewById(R.id.icon); TextView tv = (TextView) view.findViewById(R.id.text); tv.setText(item.getTitle().toUpperCase()); return view; } }