Android Open Source - android-bluetooth-mouse Main Activity






From Project

Back to project page android-bluetooth-mouse.

License

The source code is released under:

MIT License

If you think the Android project android-bluetooth-mouse listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.hbabcock.adbtm;
/*from   w ww. j a  v  a 2  s.c o m*/
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class MainActivity extends Activity {

  private static final boolean DEBUG = true;
  
    // Message types sent from the BluetoothIO Handler
  public static final int MESSAGE_CONNECT = 1;
  public static final int MESSAGE_DISCONNECT = 2;
    public static final int MESSAGE_READ = 3;
    public static final int MESSAGE_WRITE = 4;
    public static final int MESSAGE_TOAST = 5;
  
  // Intent request codes
    private static final int REQUEST_CONNECT_DEVICE = 1;
    private static final int REQUEST_ENABLE_BT = 2;

    private static final String TAG = "MainActivity";
    public static final String TOAST = "toast";
    
    private Button mPageDownButton = null;
    private Button mPageUpButton = null;
    private MouseView mMouseView = null;
    private RelativeLayout mRelativeLayout = null;

    // Local Bluetooth adapter
    private BluetoothAdapter mBluetoothAdapter = null;
    private BluetoothIO mBluetoothIO = null;
    
    private void configureButtons(boolean connected){
      if (connected){
          mPageDownButton.setEnabled(true);
          mPageDownButton.setTextColor(Color.parseColor("#FFFFFF"));
          mPageUpButton.setEnabled(true);
          mPageUpButton.setTextColor(Color.parseColor("#FFFFFF"));        
      }
      else{
          mPageDownButton.setEnabled(false);
          mPageDownButton.setTextColor(Color.parseColor("#404040"));
          mPageUpButton.setEnabled(false);
          mPageUpButton.setTextColor(Color.parseColor("#404040"));        
      }
    }
    
    private final Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case MESSAGE_CONNECT:
              configureButtons(true);
              break;
            case MESSAGE_DISCONNECT:
              configureButtons(false);
              break;
            case MESSAGE_READ:
              break;
            case MESSAGE_TOAST:
                Toast.makeText(getApplicationContext(), msg.getData().getString(TOAST), Toast.LENGTH_SHORT).show();
                break;
            }
        }
    };
    
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case REQUEST_CONNECT_DEVICE:
            // When DeviceListActivity returns with a device to connect
            if (resultCode == Activity.RESULT_OK) {
                // Get the device MAC address
                String address = data.getExtras()
                                     .getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
                // Get the BLuetoothDevice object
                BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
                // Attempt to connect to the device
                mBluetoothIO.connect(device);
            }
            break;
        case REQUEST_ENABLE_BT:
            // When the request to enable Bluetooth returns
            if (resultCode == Activity.RESULT_OK) {
                // Bluetooth is now enabled, so set up a chat session
                Toast.makeText(this, "Bluetooth Enabled", Toast.LENGTH_SHORT).show();
                mBluetoothIO = new BluetoothIO(this, mHandler);
            } else {
                // User did not enable Bluetooth or an error occured
                Toast.makeText(this, "Bluetooth Not Enabled", Toast.LENGTH_SHORT).show();
            }
        }
    }
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mMouseView = (MouseView) findViewById(R.id.mouseView);
        
        mPageDownButton = (Button) findViewById(R.id.pageDownButton);
        mPageUpButton = (Button) findViewById(R.id.pageUpButton);
      configureButtons(false);

        mRelativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout1);
        mRelativeLayout.setOnTouchListener(relativeLayoutOnTouchListener);

        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

        // If the adapter is null, then Bluetooth is not supported
        if (mBluetoothAdapter == null) {
            Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();
            finish();
            return;
        }
        
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
  @Override
  protected void onDestroy() {
    super.onDestroy();

    if (mBluetoothIO != null)
      mBluetoothIO.stop();
  }
  
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle presses on the action bar items
        switch (item.getItemId()) {
            case R.id.action_scan:
                // Launch the DeviceListActivity to see devices and do scan
              Intent serverIntent = new Intent(this, DeviceListActivity.class);
              startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE);
              return true;
            case R.id.action_disconnect:
              if (mBluetoothIO != null)
                mBluetoothIO.stop();
              return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    
  @Override
  protected void onStart() {
    super.onStart();        
    // If BT is not on, request that it be enabled.
        // setupCommand() will then be called during onActivityResult
    if (!mBluetoothAdapter.isEnabled()) {
      Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
      startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
    }
    else{
            mBluetoothIO = new BluetoothIO(this, mHandler);
    }
    
        // Remove icon from action bar
    getActionBar().setDisplayShowHomeEnabled(false);
  }
  
  @Override
  protected void onStop() {
      super.onStop();
      
      if (mBluetoothIO != null)
        mBluetoothIO.stop();
  }

  OnTouchListener relativeLayoutOnTouchListener = new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
      double eventX = ((double) event.getX()) / ((double)mMouseView.width) - 0.5;
      double eventY = ((double) event.getY()) / ((double)mMouseView.height) - 0.5;
      
      switch(event.getAction()){
      case MotionEvent.ACTION_DOWN:
        sendActionDown(eventX, eventY);
        break;

      case MotionEvent.ACTION_MOVE:
        sendActionMove(eventX, eventY);
        break;
        
      case MotionEvent.ACTION_UP:
        sendActionUp(eventX, eventY);
        break;
      }
      return true;

    }
  };

  public void sendActionDown(double x, double y){
        if (DEBUG) Log.i(TAG, "press," + x + "," + y);    
    mBluetoothIO.sendMessage("actiondown," + String.format("%.3f", x) + "," + String.format("%.3f", y));
  }

  public void sendActionMove(double x, double y){
        if (DEBUG) Log.i(TAG, "motion," + x + "," + y);
    mBluetoothIO.sendMessage("actionmove," + String.format("%.3f", x) + "," + String.format("%.3f", y));
    }

  public void sendActionUp(double x, double y){
        if (DEBUG) Log.i(TAG, "release," + x + "," + y);
        mBluetoothIO.sendMessage("actionup," + String.format("%.3f", x) + "," + String.format("%.3f", y));
  }

  public void pageDownButton(View view){
        if (DEBUG) Log.i(TAG, "pagedown");
    mBluetoothIO.sendMessage("pagedown");
    }
  
  public void pageUpButton(View view){
        if (DEBUG) Log.i(TAG, "pageup");
    mBluetoothIO.sendMessage("pageup");
    }
    
}




Java Source Code List

org.hbabcock.adbtm.BluetoothIO.java
org.hbabcock.adbtm.DeviceListActivity.java
org.hbabcock.adbtm.MainActivity.java
org.hbabcock.adbtm.MouseView.java