package drew.data.droid; import android.app.*; import android.os.*; import android.net.TrafficStats; import android.graphics.Paint; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.drawable.Icon; import android.widget.ImageView; import android.widget.TextView; import java.util.Timer; import java.util.TimerTask; import android.graphics.drawable.*; public class MainActivity extends Activity { private Timer au; private int x = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public void onResume() { super.onResume(); au = new Timer(); au.schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { public void run() { showTraffic(); } }); } }, 0, 5000); } private void showTraffic() { Icon ik; x ^= 15; TrafficStats ts = new TrafficStats(); long total_data = ts.getMobileRxBytes() + ts.getMobileTxBytes(); String data_text = "Total usage: " + total_data + " bytes."; Bitmap oimage = textAsBitmap(data_text, 15 + x, -256); TextView tview = (TextView) findViewById(R.id.tv1); tview.setText(data_text); ImageView iview = (ImageView) findViewById(R.id.xx1); iview.setImageBitmap(oimage); ik = Icon.createWithBitmap(oimage); /*** Notification.Builder mb = new Notification.Builder(this) .setSmallIcon(ik) .setLargeIcon(oimage) .setContentTitle("Data usage") .setContentText(data_text) .setOngoing(true); ****/ } public static Bitmap textAsBitmap(String text, float textSize, int textColor) { Paint paint = new Paint(1); paint.setTextSize(textSize); paint.setColor(textColor); paint.setTextAlign(Paint.Align.LEFT); float baseline = -paint.ascent(); int width = (int) (paint.measureText(text) + 0.0f); int height = (int) (baseline + paint.descent() + 0.0f); int trueWidth = width; Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); image.eraseColor(-16777216); Canvas canvas = new Canvas(image); canvas.drawText(text, width/2-trueWidth/2, baseline, paint); return image; } @Override public void onPause() { au.cancel(); super.onPause(); } }