menu xmlns:android=http:schemas.android.comapkresandroid -- this script written by achmad muhajir ajirdoank --
item android:id=+idaboutMe
android:title=stringabout_me item
android:id=+idsetting android:title=stringsetting
item android:id=+idinstruct
android:title=stringinstrux item
android:id=+idexit android:title=stringextButton
menu
2.2 Untuk Java Source Code
2.2.1 AjirdoanksrcVeloz.java
package com.ajirdoank.velozity; script untuk menerima dan mengirimkan byte ke Arduino
ditulis oleh achmad muhajir ajirdoank
import java.io.IOException; import java.io.FileDescriptor;
import java.io.FileInputStream; import java.io.FileOutputStream;
import java.text.DecimalFormat; import com.ajirdoank.velozity.Prefs;
import android.os.Bundle; import android.os.ParcelFileDescriptor;
import android.preference.PreferenceManager; import android.app.Activity;
Universitas Sumatera Utara
import android.app.PendingIntent; import android.content.BroadcastReceiver;
import android.content.Intent; import android.content.IntentFilter;
import android.content.Context; import android.content.SharedPreferences;
import android.util.Log; import android.widget.Button;
import android.widget.TextView; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.View;
import android.view.View.OnClickListener; import com.android.future.usb.UsbAccessory;
import com.android.future.usb.UsbManager;
public class Veloz extends Activity { private static final String tag =
Veloz.class.getSimpleName; private PendingIntent mPermissionIntent;
private static final String ACTION_USB_PERMISSION = com.android.example.USB_PERMISSION;
private boolean mPermissionRequestPending; private UsbManager mUsbManager;
private UsbAccessory mAccessory; private ParcelFileDescriptor mFileDescriptor;
private FileInputStream mInputStream; private FileOutputStream mOutputStream;
private static final byte perintah = 0x1; private static final byte targetTerima = 0x2;
private static final byte comAtur = 0x3; private static final byte tarAtur = 0x4;
private static final byte koma = 0x5; public TextView SenSD, time, vizcouz;
Universitas Sumatera Utara
public double waktux, var1, BDy, BMy, LDy, SDy, TDy, GRy, visc, DB, CF;
Override public void onCreateBundle savedInstanceState {
super.onCreatesavedInstanceState; mUsbManager = UsbManager.getInstancethis;
mPermissionIntent = PendingIntent.getBroadcastthis, 0, new Intent
ACTION_USB_PERMISSION, 0; IntentFilter filter = new
IntentFilterACTION_USB_PERMISSION; filter.addActionUsbManager.ACTION_USB_ACCESSORY_DETACHED;
registerReceivermUsbReceiver, filter; setContentViewR.layout.main;
SharedPreferences pengaturan = PreferenceManager.getDefaultSharedPreferencesgetBaseContext;
ini bagian untuk setting variable bagian di preference yg uda dibuat dan dishare ke
mainActivity String BDx = pengaturan.getStringBD, 0;
String BMx = pengaturan.getStringBM, 0; String LDx = pengaturan.getStringLD, 0;
String SDx = pengaturan.getStringSD, 0; String TDx = pengaturan.getStringTD, 0;
String GRx = pengaturan.getStringGRV, 0; konversi
BDy = Double.valueOfBDx; BMy = Double.valueOfBMx;
LDy = Double.valueOfLDx; SDy = Double.valueOfSDx;
TDy = Double.valueOfTDx; GRy = Double.valueOfGRx;
massa jenis bola atau Density of Ball
Universitas Sumatera Utara
DB = BMy 4.0 3.0 Math.PIMath.powBDy2.0, 3; variable tetap sebelum perhitungan viskositas
var1 = 2.0 9.0 GRy Math.powBDy2.0, 2DB - LDySDy;
untuk faktor koreksi CF = 1.0 - 2.104 BDyTDy + 2.09
Math.powBDyTDy, 3 - 0.95 Math.powBDyTDy, 5; pengaturan teks yang muncul pada mainActivity
SenSD = TextViewfindViewByIdR.id.SensSD; SenSD.setTextString.valueOfSDy;
vizcouz = TextViewfindViewByIdR.id.viscText; time = TextViewfindViewByIdR.id.timeVal;
Button reset = ButtonfindViewByIdR.id.button1; reset.setOnClickListenernew OnClickListener {
Override public void onClickView v {
TODO Auto-generated method stub time.setText0;
vizcouz.setText0; byte[] buffer = new byte[3];
buffer[0] = comAtur; buffer[1] = tarAtur;
buffer[2] = koma; try{
mOutputStream.writebuffer; }catchIOException e{
Log.etag, pesan tidak dikenal, e; }
} };
}
Universitas Sumatera Utara
cek broadcast data streaming yang masuk private final BroadcastReceiver mUsbReceiver = new
BroadcastReceiver { Override
public void onReceiveContext context, Intent intent { String action = intent.getAction;
if ACTION_USB_PERMISSION.equalsaction { synchronized this {
sinkron dan baca apa usb tersamsubung atau tidak UsbAccessory accessory = UsbManager.getAccessoryintent;
if intent.getBooleanExtraUsbManager.EXTRA_PERMISSION_GRANTED,
false { openAccessoryaccessory;
} else { Log.dtag, sambungan ditolak + accessory;
} mPermissionRequestPending = false;
} } else if
UsbManager.ACTION_USB_ACCESSORY_DETACHED.equalsaction { jika sambungan Usb dicabut
UsbAccessory accessory = UsbManager.getAccessoryintent; if accessory = null accessory.equalsmAccessory {
closeAccessory; }
} }
}; ketika meresume aplikasi
Override public void onResume{
super.onResume; if mInputStream = null mOutputStream = null {
return; }
UsbAccessory[] accessories = mUsbManager.getAccessoryList;
Universitas Sumatera Utara
UsbAccessory accessory = accessories == null ? null : accessories[0];
if accessory = null { if mUsbManager.hasPermissionaccessory {
openAccessoryaccessory; } else {
synchronized mUsbReceiver { if mPermissionRequestPending {
mUsbManager.requestPermissionaccessory, mPermissionIntent; mPermissionRequestPending = true;
} }
} } else {
Log.dtag, android tak tersambung; }
} ketika aplikasi dipause
Override public void onPause{
super.onPause; closeAccessory;
} ketika data streaming tidak ada
Override public void onDestroy{
super.onDestroy; unregisterReceivermUsbReceiver;
} untuk menutup aplikasi
private void closeAccessory { TODO Auto-generated method stub
try{ ifmFileDescriptor = null{
mFileDescriptor.close; }
Universitas Sumatera Utara
}catchIOException e{ }finally{
mFileDescriptor = null; mAccessory = null;
} }
inisialisasi ketika USB di insert private void openAccessoryUsbAccessory accessory {
TODO Auto-generated method stub mFileDescriptor = mUsbManager.openAccessoryaccessory;
if mFileDescriptor = null{ mAccessory = accessory;
FileDescriptor fd = mFileDescriptor.getFileDescriptor; mInputStream = new FileInputStreamfd;
mOutputStream = new FileOutputStreamfd; Thread thread = new Threadnull, jalankan, tag;
thread.start; Log.dtag, handphone tersambung;
}else{ Log.dtag, sambungan gagal;
} }
proses penerimaan data straming via USB Runnable jalankan = new Runnable {
Override public void run {
TODO Auto-generated method stub int ret = 0;
final byte buffer[] = new byte[6]; while ret = 0{
try{ ret = mInputStream.readbuffer;
}catchIOException e{ break;
} switchbuffer[0]{
Universitas Sumatera Utara
case perintah: ifbuffer[1] == targetTerima{
final int waktu = buffer[2] 0xFF 24 +buffer[3] 0xFF 16
+ buffer[4] 0xFF 8 + buffer[5] 0xFF;
if waktu 0{ runOnUiThreadnew Runnable {
Override public void run {
perhitungan viskositas time.setTextString.valueOfwaktu;
waktux = Double.valueOfwaktu; viskositas akhir
double x = var1 waktux 1000.0; hasil akhir dari perhitungan
vizcouz.setTextnew DecimalFormat..formatx;
} };
} }
break; default:
Log.dtag, no data found + buffer[0]; break;
} }
} };
script untuk menu option Override
public boolean onCreateOptionsMenuandroid.view.Menu menu { TODO Auto-generated method stub
super.onCreateOptionsMenumenu; MenuInflater muncul = getMenuInflater;
muncul.inflateR.menu.veloz, menu; return true;
Universitas Sumatera Utara
} script ketika item dari menu option dipilih
Override public boolean onOptionsItemSelectedMenuItem item {
TODO Auto-generated method stub switchitem.getItemId{
case R.id.aboutMe: Intent a = new Intentcom.ajirdoank.velozity.ABOUT;
startActivitya; return true;
case R.id.setting: Intent s = new Intentcom.ajirdoank.velozity.PREFS;
startActivitys; return true;
case R.id.instruct: Intent i = new Intentcom.ajirdoank.velozity.INSTR;
startActivityi; return true;
case R.id.exit: finish;
} return false;
} the end of this application from ajirdoank
}
2.2.2 VelozitysrcPrefs.java