Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.android.backend.data.bluetooth;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.lang.reflect.Method;
- import java.util.ArrayList;
- import android.bluetooth.BluetoothDevice;
- import android.bluetooth.BluetoothSocket;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import com.android.AutoActivity;
- import com.android.CalibrationActivity;
- import com.android.ui.UIManager;
- public class Connection extends Thread {
- final Connection tt = this;
- private final String TAG = "Connection"; // Class name for logging
- public boolean connected = false;
- public BluetoothSocket bSocket = null;
- public InputStream mmInStream = null;
- public OutputStream mmOutStream = null;
- public ArrayList<String> message = new ArrayList<String>();
- public BluetoothDevice currentDevice = null;
- public UIManager mgr;
- public boolean connectFailure = false;
- public boolean stopAutoConnect = false;
- public String type = null;
- public AutoActivity ff;
- public void bsocketcancel() {
- try {
- bSocket.close();
- } catch (IOException e) { }
- }
- public Connection(UIManager mgr, BluetoothDevice device, String message,
- String type) {
- this.mgr = mgr;
- currentDevice = device;
- this.message.add(message);
- this.type = type;
- }
- public Connection(UIManager mgr, BluetoothDevice device, ArrayList<String> message,
- String type) {
- this.mgr = mgr;
- currentDevice = device;
- this.message = message;
- this.type = type;
- }
- @Override
- public void run() {
- if (type.compareToIgnoreCase("Manual") == 0) {
- Log.d("thread", "manual");
- if (!connected)
- connect(currentDevice);
- if (bSocket != null){
- for(String msg : message)
- write(msg.getBytes());
- }
- mgr.hideConnectingProgressBox();
- if(connected){
- mgr.connectedDialog();
- System.out.println("Maunal connected");
- }
- Log.d("thread", "hideprogressBox");
- if (!connected)
- mgr.showConnectionErrBox();
- }
- if (type.compareToIgnoreCase("auto") == 0){
- Log.d("thread", "auto");
- stopConnection();
- int i = 0;
- while (true) { //Set to 5 second
- if (!connected)
- connect(currentDevice);
- if (bSocket != null){
- for(String msg : message)
- write(msg.getBytes());
- }
- mgr.hideConnectingProgressBox();
- Log.d("thread", "hideprogressBox");
- if (!connected) {
- mgr.connecting();
- }
- if (connected) {
- mgr.connectedDialog();
- bsocketcancel();
- System.out.println("Auto connected");
- //BluetoothManager.getInstance().disconnectAll(); // cut all connection after transmit
- break;
- }
- if(stopAutoConnect){
- mgr.cancelconnecting();
- break;
- }
- }
- }
- if (type.compareToIgnoreCase("calibrate") == 0) {
- Log.d("thread", "calibrate");
- if (!connected)
- connect(currentDevice);
- if (bSocket != null){
- for(String msg : message)
- write(msg.getBytes());
- }
- mgr.hideConnectingProgressBox();
- if(connected){
- mgr.connectedDialog();
- mgr.msgsent();
- System.out.println("Calibration connected");
- int bufferSize = 1024;
- byte[] buffer = new byte[bufferSize];
- int bytes;
- String apple = "";
- // Keep listening to the InputStream while connected
- while (true) {
- try {
- // Read from the InputStream
- bytes = mmInStream.read(buffer);
- if ( bytes != -1){
- while ((bytes==bufferSize)&&(buffer[bufferSize-1] != 0)){
- apple = apple + "_" + new String(buffer, 0, bytes);
- bytes = mmInStream.read(buffer);
- }
- apple = apple + new String(buffer, 0, bytes -1);
- System.out.println("message " + apple);
- //pass data to UI CalibrationActivity
- System.out.println("message out " + apple);
- Message msga = mhandler.obtainMessage();
- Bundle bundle = new Bundle();
- bundle.putString("key", apple);
- msga.setData(bundle);
- mhandler.sendMessage(msga);
- }
- } catch (IOException e) {
- Log.e(TAG, "disconnected", e);
- break;
- }
- }
- }
- Log.d("thread", "hideprogressBox");
- if (!connected){
- mgr.showConnectionErrBox();
- }
- }
- }
- public void connect(BluetoothDevice device) {
- currentDevice = device;
- BluetoothSocket tmp = null;
- BluetoothManager.getInstance().getBluetoothAdapter().cancelDiscovery();
- // Get a BluetoothSocket for a connection with the
- // given BluetoothDevice
- try {
- // tmp = device
- // .createRfcommSocketToServiceRecord(BluetoothManager.SerialPortServiceClass_UUID);
- Method m = device.getClass().getMethod("createRfcommSocket",
- new Class[] { int.class });
- tmp = (BluetoothSocket) m.invoke(device, 1);
- // } catch (IOException e) {
- // Log.e(TAG, "create() failed", e);
- // return;
- } catch (Exception e) {
- Log.e(TAG, "Socket connection failed", e);
- return;
- }
- bSocket = tmp;
- try {
- bSocket.connect();
- } catch (IOException e1) {
- Log.e(TAG, "Connection err", e1);
- connectFailure = true;
- return;
- }
- if (tmp != null) {
- // Get Input/output stream for Socket
- try {
- mmInStream = bSocket.getInputStream();
- mmOutStream = bSocket.getOutputStream();
- } catch (IOException e) {
- Log.e(TAG, "temp sockets not created", e);
- return;
- }
- }
- connected = true;
- connectFailure = false;
- }
- private Handler mhandler;
- public void read(){
- Log.i(TAG, "Read is running");
- int bufferSize = 1024;
- byte[] buffer = new byte[bufferSize];
- int bytes;
- String a = "";
- // Keep listening to the InputStream while connected
- while (true) {
- try {
- // Read from the InputStream
- bytes = mmInStream.read(buffer);
- if ( bytes != -1){
- while ((bytes==bufferSize)&&(buffer[bufferSize-1] != 0)){
- a = a + new String(buffer, 0, bytes);
- bytes = mmInStream.read(buffer);
- }
- a = a + new String(buffer, 0, bytes -1);
- System.out.println("message " + a);
- }
- } catch (IOException e) {
- Log.e(TAG, "disconnected", e);
- break;
- }
- }
- }
- public void write(byte[] buffer) {
- if (mmOutStream != null) {
- try {
- mmOutStream.write(buffer);
- Log.d(TAG, "Message Sent");
- } catch (IOException e) {
- Log.e(TAG, "Exception during write", e);
- }
- } else {
- //mgr.showConnectionErrBox();
- }
- }
- public void stopConnection() {
- try {
- if(bSocket != null)
- bSocket.close();
- Log.e(TAG, "Connection closed");
- } catch (IOException e) {
- Log.e(TAG, "close() of connect socket failed", e);
- }
- }
- public BluetoothDevice getCurrentDevice() {
- return currentDevice;
- }
- public void setCurrentDevice(BluetoothDevice currentDevice) {
- this.currentDevice = currentDevice;
- }
- public ArrayList<String> getMessage() {
- return message;
- }
- public void setMessage(ArrayList<String> message) {
- this.message = message;
- }
- }
- if(connected){
- mgr.connectedDialog();
- mgr.msgsent();
- System.out.println("Calibration connected");
- int bufferSize = 1024;
- byte[] buffer = new byte[bufferSize];
- int bytes;
- String apple = "";
- // Keep listening to the InputStream while connected
- while (true) {
- try {
- // Read from the InputStream
- bytes = mmInStream.read(buffer);
- if ( bytes != -1){
- while ((bytes==bufferSize)&&(buffer[bufferSize-1] != 0)){
- apple = apple + "_" + new String(buffer, 0, bytes);
- bytes = mmInStream.read(buffer);
- }
- apple = apple + new String(buffer, 0, bytes -1);
- System.out.println("message " + apple);
- //pass data to UI CalibrationActivity
- System.out.println("message out " + apple);
- Message msga = mhandler.obtainMessage();
- Bundle bundle = new Bundle();
- bundle.putString("key", apple);
- msga.setData(bundle);
- mhandler.sendMessage(msga);
- }
- } catch (IOException e) {
- Log.e(TAG, "disconnected", e);
- break;
- }
- }
- }
- package com.android;
- import java.io.BufferedReader;
- import java.io.FileInputStream;
- import java.io.InputStreamReader;
- import java.util.ArrayList;
- import com.android.SimpleGestureFilter.SimpleGestureListener;
- import com.android.backend.data.Playlist;
- import com.android.backend.data.PlaylistManager;
- import com.android.backend.data.SwitchBar;
- import com.android.backend.data.bluetooth.BluetoothManager;
- import com.android.backend.data.bluetooth.Connection;
- import com.android.ui.UIManager;
- import com.android.ui.playlist.PlaylistEntryList;
- import android.annotation.SuppressLint;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.app.Dialog;
- import android.bluetooth.BluetoothDevice;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.text.Editable;
- import android.util.Log;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.View.OnTouchListener;
- import android.view.Window;
- import android.view.WindowManager.LayoutParams;
- import android.widget.AdapterView;
- import android.widget.Button;
- import android.widget.CompoundButton;
- import android.widget.CompoundButton.OnCheckedChangeListener;
- import android.widget.EditText;
- import android.widget.ImageView;
- import android.widget.ListView;
- import android.widget.TextView;
- import android.widget.Toast;
- import android.widget.ToggleButton;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.AdapterView.OnItemLongClickListener;
- //public class CalibrationActivity extends Activity{
- public class CalibrationActivity extends Activity implements SimpleGestureListener{
- String gotBread;
- public void handleMessage(Message msg)
- { switch(msg.what){
- case 2:
- Bundle got = getIntent().getExtras();
- gotBread = got.getString("key");
- TextView aa = (TextView) this.findViewById(R.id.stringinput);
- aa.setText(gotBread);
- break;
- }
- }
- private SimpleGestureFilter detector;
- @Override
- public boolean dispatchTouchEvent(MotionEvent me){
- this.detector.onTouchEvent(me);
- return super.dispatchTouchEvent(me);
- }
- @Override
- public void onSwipe(int direction) {
- // TODO Auto-generated method stub
- //final MainActivity tt = this;
- String str = "";
- switch (direction) {
- //case SimpleGestureFilter.SWIPE_RIGHT : str = "Swipe Right";
- case SimpleGestureFilter.SWIPE_RIGHT : this.finish();
- break;
- case SimpleGestureFilter.SWIPE_LEFT : str = "Swipe Left";
- break;
- case SimpleGestureFilter.SWIPE_DOWN : str = "Swipe Down";
- break;
- case SimpleGestureFilter.SWIPE_UP : str = "Swipe Up";
- break;
- }
- //Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
- }
- @Override
- public void onDoubleTap() {
- // TODO Auto-generated method stub
- //Toast.makeText(this, "Double Tap", Toast.LENGTH_SHORT).show();
- //Do Nothing for now future development
- }
- private PlaylistManager playlistMgr;
- private PlaylistEntryList playlistView; // Data for listview, stores current
- // playlist in memory
- public String createdNameList; // Indicated the name of currently Name of
- // playlist that is being created
- public Dialog dialog_customizePL, dialog_createPL, dialog_customizePLms; // Dialog boxes for
- // Playlist creation
- public UIManager uiMgr = new UIManager();
- public String CONNECTED_DEVICE_MAC;
- public String dialogboxtext;
- public Connection Conn;
- int i = 0;
- protected void onPause() {
- super.onPause();
- //BluetoothManager.getInstance().disconnectAll();
- unregisterReceiver(mRvcau); //Sequence is important
- System.exit(0); // Kill off all thread to prevent connectiong lost popup
- // I use system because is a calibration so I want user not to leave the activity else cannot calibrate
- }
- protected void onResume() { //restart bluetooth is accidently off it
- super.onResume();
- BluetoothManager.getInstance().init();
- BluetoothManager.getInstance().getBluetoothAdapter().enable();
- IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_ACL_CONNECTED); // IntentFilter class is important to declare for below filter
- registerReceiver(mRvcau,filter); // mRvcau is the location of logic, filter is message identify by android
- filter = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED); // Future deveploment
- registerReceiver(mRvcau,filter);
- filter = new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED); // Future deveploment
- registerReceiver(mRvcau,filter);
- filter = new IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED); // Future deveploment
- registerReceiver(mRvcau,filter);
- }
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.remotedevicecalibration);
- detector = new SimpleGestureFilter(this,this); ////////////////// For Gesture
- playlistMgr = PlaylistManager.getInstance();
- initUI();
- uiMgr.initPlayListUI(this);
- }
- int connect = 0; // Check connection
- int disconnect = 0; // Check disconnection
- int requestdisconnect = 0;
- int connectstatuschanges = 0;
- public BroadcastReceiver mRvcau = new BroadcastReceiver(){ // The new is instantiate the class **always read from the back
- // The line from the back is creating an instantiate of this class
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
- //AutoActivity.this.finish();
- connect = 1; // prevent activity from exiting
- System.out.println("ACTION_ACL_CONNECTED " + connect);
- }
- else
- {
- connect = 0;
- System.out.println("ACTION_ACL_CONNECTED " + connect);
- }
- if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) { //future development
- disconnect = 1;
- System.out.println("ACTION_ACL_DISCONNECTED " + disconnect);
- }
- else
- {
- disconnect = 0;
- System.out.println("ACTION_ACL_DISCONNECTED " + disconnect);
- }
- if (BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED.equals(action)) { //future development
- requestdisconnect = 1;
- System.out.println("ACTION_ACL_DISCONNECT_REQUESTED " + requestdisconnect);
- }
- else
- {
- requestdisconnect = 0;
- System.out.println("ACTION_ACL_DISCONNECT_REQUESTED " + requestdisconnect);
- }
- if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) { //future development
- connectstatuschanges = 1;
- System.out.println("ACTION_BOND_STATE_CHANGED " + connectstatuschanges);
- }
- else
- {
- connectstatuschanges = 0;
- System.out.println("ACTION_BOND_STATE_CHANGED " + connectstatuschanges);
- }
- }
- };
- /**
- * Init layout component. Define Listener for Buttons and Dataset for
- * ListViews
- */
- @SuppressLint("ParserError")
- public void initUI() {
- Button Orange = (Button) findViewById(R.id.CalibrationOrange); // new method on test using image
- Orange.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v){
- // TODO Auto-generated method stub
- activiteSingleConnection(20);
- }
- });
- Button Blue = (Button) findViewById(R.id.CalibrationBlue); // new method on test using image icon to on the switch
- Blue.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v){
- // TODO Auto-generated method stub
- activiteSingleConnection(21);
- }
- });
- Button Green = (Button) findViewById(R.id.CalibrationGreen); // new method on test using image icon to on the switch
- Green.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v){
- // TODO Auto-generated method stub
- activiteSingleConnection(22);
- }
- });
- loadDataToMem();
- }
- public void activiteSingleConnection(int i) {
- BluetoothManager btMgr = BluetoothManager.getInstance();
- BluetoothDevice device = btMgr.getBluetoothAdapter().getRemoteDevice(
- CONNECTED_DEVICE_MAC);
- ArrayList<String> msg = new ArrayList<String>();
- if(i == 20){
- msg.add("N");
- }
- if(i == 21){
- msg.add("J");
- }
- if(i == 22){
- msg.add("I");
- }
- CharSequence fruit = null;
- TextView aa = (TextView) this.findViewById(R.id.stringinput);
- aa.setText(fruit);
- btMgr.calibratesentMessage(uiMgr, device, msg);
- }
- public void loadDataToMem() {
- try {
- String str = "";
- //StringBuffer buf = new StringBuffer();
- FileInputStream input = this.openFileInput("bone.txt");
- BufferedReader reader = new BufferedReader(new InputStreamReader(
- input));
- if (input != null) {
- while ((str = reader.readLine()) != null) {
- String[] buff = str.split(",");
- TextView topView = (TextView) this
- .findViewById(R.id.remotedevicecalibrationtextview1);
- TextView bottomView = (TextView) this
- .findViewById(R.id.remotedevicecalibrationtextView2);
- topView.setText("Name : " + buff[0]);
- bottomView.setText("Mac : " + buff[2]);
- this.CONNECTED_DEVICE_MAC = buff[2];
- Log.d("loadDataToMem", str);
- }
- }
- input.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- 09-13 10:50:33.640: W/dalvikvm(2086): threadid=9: thread exiting with uncaught exception (group=0x40015560)
- 09-13 10:50:33.667: E/AndroidRuntime(2086): FATAL EXCEPTION: Thread-10
- 09-13 10:50:33.667: E/AndroidRuntime(2086): java.lang.NullPointerException
- 09-13 10:50:33.667: E/AndroidRuntime(2086): at com.android.backend.data.bluetooth.Connection.run(Connection.java:196)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement