Android Open Source - Robook Abstract Adk Activity






From Project

Back to project page Robook.

License

The source code is released under:

MIT License

If you think the Android project Robook 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 unipg.dmi.robook;
/*from   ww w.  j  av a 2  s . c o m*/
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.hardware.usb.UsbAccessory;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.util.Log;
import android.widget.Toast;

public abstract class AbstractAdkActivity extends Activity {

  private static int RQS_USB_PERMISSION = 0;
  private static final String ACTION_USB_PERMISSION = "arduino-er.usb_permission";
  private PendingIntent PendingIntent_UsbPermission;

  private UsbManager myUsbManager;
  private UsbAccessory myUsbAccessory;
  private ParcelFileDescriptor myAdkParcelFileDescriptor;
  private FileInputStream myAdkInputStream;
  private static FileOutputStream myAdkOutputStream;
  boolean firstRqsPermission;

  protected abstract void doOnCreate(Bundle savedInstanceState);

  protected abstract void doAdkRead(String stringIn);

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    myUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(UsbManager.ACTION_USB_ACCESSORY_DETACHED);
    registerReceiver(myUsbReceiver, intentFilter);

    // Chiede Permessi USB dal utente
    Intent intent_UsbPermission = new Intent(ACTION_USB_PERMISSION);
    PendingIntent_UsbPermission = PendingIntent.getBroadcast(this,
        RQS_USB_PERMISSION, intent_UsbPermission, 0);
    IntentFilter intentFilter_UsbPermission = new IntentFilter(
        ACTION_USB_PERMISSION);
    registerReceiver(myUsbPermissionReceiver, intentFilter_UsbPermission);

    firstRqsPermission = true;
    doOnCreate(savedInstanceState);
  }

  @Override
  protected void onResume() {
    super.onResume();

    if (myAdkInputStream == null || myAdkOutputStream == null) {

      UsbAccessory[] usbAccessoryList = myUsbManager.getAccessoryList();
      UsbAccessory usbAccessory = null;
      if (usbAccessoryList != null) {
        usbAccessory = usbAccessoryList[0];

        if (usbAccessory != null) {
          if (myUsbManager.hasPermission(usbAccessory)) {
            OpenUsbAccessory(usbAccessory);
          } else {

            if (firstRqsPermission) {

              firstRqsPermission = false;

              synchronized (myUsbReceiver) {
                myUsbManager.requestPermission(usbAccessory,
                    PendingIntent_UsbPermission);
              }
            }

          }
        }
      }
    }
  }

  public static void WriteAdk(String text) {

    byte[] buffer = text.getBytes();

    if (myAdkOutputStream != null) {

      try {
        myAdkOutputStream.write(buffer);
        Log.e("WriteAdk ", " was successfully called!");

      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }

    else {

      /*
       * Toast.makeText(this, "Failed ",
       * android.widget.Toast.LENGTH_SHORT).show();
       */
      Log.e("WriteAdk ", " failed!");
      Log.e("Status of outputStreams is ",
          Boolean.toString(myAdkOutputStream == null));

    }
  }

  @Override
  protected void onPause() {
    super.onPause();
    closeUsbAccessory();
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(myUsbReceiver);
    unregisterReceiver(myUsbPermissionReceiver);
  }

  Runnable runnableReadAdk = new Runnable() {

    @Override
    public void run() {
      int numberOfByteRead = 0;
      byte[] buffer = new byte[255];

      while (numberOfByteRead >= 0) {

        try {
          numberOfByteRead = myAdkInputStream.read(buffer, 0,
              buffer.length);
          final StringBuilder stringBuilder = new StringBuilder();
          for (int i = 0; i < numberOfByteRead; i++) {
            stringBuilder.append((char) buffer[i]);
          }

          runOnUiThread(new Runnable() {

            @Override
            public void run() {
              doAdkRead(stringBuilder.toString());
            }
          });

        } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          break;
        }
      }
    }

  };

  private BroadcastReceiver myUsbReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {

      String action = intent.getAction();
      if (action.equals(UsbManager.ACTION_USB_ACCESSORY_DETACHED)) {

        UsbAccessory usbAccessory = (UsbAccessory) intent
            .getParcelableExtra(UsbManager.EXTRA_ACCESSORY);

        if (usbAccessory != null && usbAccessory.equals(myUsbAccessory)) {
          closeUsbAccessory();
        }
      }
    }
  };

  private BroadcastReceiver myUsbPermissionReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
      String action = intent.getAction();
      if (action.equals(ACTION_USB_PERMISSION)) {

        synchronized (this) {

          UsbAccessory usbAccessory = (UsbAccessory) intent
              .getParcelableExtra(UsbManager.EXTRA_ACCESSORY);

          if (intent.getBooleanExtra(
              UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
            OpenUsbAccessory(usbAccessory);
          } else {
            finish();
          }
        }
      }
    }

  };

  private void OpenUsbAccessory(UsbAccessory acc) {
    myAdkParcelFileDescriptor = myUsbManager.openAccessory(acc);
    if (myAdkParcelFileDescriptor != null) {

      myUsbAccessory = acc;
      FileDescriptor fileDescriptor = myAdkParcelFileDescriptor
          .getFileDescriptor();
      myAdkInputStream = new FileInputStream(fileDescriptor);
      myAdkOutputStream = new FileOutputStream(fileDescriptor);

      Thread thread = new Thread(runnableReadAdk);
      thread.start();
    }
  }

  private void closeUsbAccessory() {

    if (myAdkParcelFileDescriptor != null) {
      try {
        myAdkParcelFileDescriptor.close();
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    }

    myAdkParcelFileDescriptor = null;
    myUsbAccessory = null;
  }
}




Java Source Code List

com.facebook.AccessTokenSource.java
com.facebook.AccessToken.java
com.facebook.AppEventsConstants.java
com.facebook.AppEventsLogger.java
com.facebook.AppLinkData.java
com.facebook.AuthorizationClient.java
com.facebook.BoltsMeasurementEventListener.java
com.facebook.FacebookAppLinkResolver.java
com.facebook.FacebookAuthorizationException.java
com.facebook.FacebookBroadcastReceiver.java
com.facebook.FacebookDialogException.java
com.facebook.FacebookException.java
com.facebook.FacebookGraphObjectException.java
com.facebook.FacebookOperationCanceledException.java
com.facebook.FacebookRequestError.java
com.facebook.FacebookSdkVersion.java
com.facebook.FacebookServiceException.java
com.facebook.FacebookTimeSpentData.java
com.facebook.GetTokenClient.java
com.facebook.HttpMethod.java
com.facebook.InsightsLogger.java
com.facebook.LegacyHelper.java
com.facebook.LoggingBehavior.java
com.facebook.LoginActivity.java
com.facebook.NativeAppCallAttachmentStore.java
com.facebook.NativeAppCallContentProvider.java
com.facebook.NonCachingTokenCachingStrategy.java
com.facebook.ProgressNoopOutputStream.java
com.facebook.ProgressOutputStream.java
com.facebook.RequestAsyncTask.java
com.facebook.RequestBatch.java
com.facebook.RequestOutputStream.java
com.facebook.RequestProgress.java
com.facebook.Request.java
com.facebook.Response.java
com.facebook.SessionDefaultAudience.java
com.facebook.SessionLoginBehavior.java
com.facebook.SessionState.java
com.facebook.Session.java
com.facebook.Settings.java
com.facebook.SharedPreferencesTokenCachingStrategy.java
com.facebook.TestSession.java
com.facebook.TokenCachingStrategy.java
com.facebook.UiLifecycleHelper.java
com.facebook.android.AsyncFacebookRunner.java
com.facebook.android.DialogError.java
com.facebook.android.FacebookError.java
com.facebook.android.Facebook.java
com.facebook.android.FbDialog.java
com.facebook.android.Util.java
com.facebook.internal.AnalyticsEvents.java
com.facebook.internal.AttributionIdentifiers.java
com.facebook.internal.CacheableRequestBatch.java
com.facebook.internal.FileLruCache.java
com.facebook.internal.ImageDownloader.java
com.facebook.internal.ImageRequest.java
com.facebook.internal.ImageResponseCache.java
com.facebook.internal.ImageResponse.java
com.facebook.internal.Logger.java
com.facebook.internal.NativeProtocol.java
com.facebook.internal.PlatformServiceClient.java
com.facebook.internal.ServerProtocol.java
com.facebook.internal.SessionAuthorizationType.java
com.facebook.internal.SessionTracker.java
com.facebook.internal.UrlRedirectCache.java
com.facebook.internal.Utility.java
com.facebook.internal.Validate.java
com.facebook.internal.WorkQueue.java
com.facebook.internal.package-info.java
com.facebook.model.CreateGraphObject.java
com.facebook.model.GraphLocation.java
com.facebook.model.GraphMultiResult.java
com.facebook.model.GraphObjectList.java
com.facebook.model.GraphObject.java
com.facebook.model.GraphPlace.java
com.facebook.model.GraphUser.java
com.facebook.model.JsonUtil.java
com.facebook.model.OpenGraphAction.java
com.facebook.model.OpenGraphObject.java
com.facebook.model.PropertyName.java
com.facebook.widget.FacebookDialog.java
com.facebook.widget.FacebookFragment.java
com.facebook.widget.FriendPickerFragment.java
com.facebook.widget.GraphObjectAdapter.java
com.facebook.widget.GraphObjectCursor.java
com.facebook.widget.GraphObjectPagingLoader.java
com.facebook.widget.LoginButton.java
com.facebook.widget.PickerFragment.java
com.facebook.widget.PlacePickerFragment.java
com.facebook.widget.ProfilePictureView.java
com.facebook.widget.SimpleGraphObjectCursor.java
com.facebook.widget.ToolTipPopup.java
com.facebook.widget.UserSettingsFragment.java
com.facebook.widget.WebDialog.java
unipg.dmi.robook.AbstractAdkActivity.java
unipg.dmi.robook.MainActivity.java
unipg.dmi.robook.Preview.java
unipg.dmi.robook.UpdaterService.java
unipg.dmi.robook.prefs.java