summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Kirk <askirk@umich.edu>2018-04-05 14:33:52 -0400
committerAustin Kirk <askirk@umich.edu>2018-04-05 14:33:52 -0400
commit9fb278815c86ff347ac60ec451acecb886943501 (patch)
treea550bfcfc38a46a1f184edc726c7801e13ec884a
parent352c16222cf2823736a0bf585acf3c70a6248f11 (diff)
downloadsdl_android-feature/aoa_router.tar.gz
Functional with 2 appsfeature/aoa_router
-With 2 apps, you can select to use either as the app for USB and both are able to register using the router service
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java14
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/USBAccessoryAttachmentActivity.java21
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/UsbTransferProvider.java23
3 files changed, 39 insertions, 19 deletions
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
index d63755943..dbc15186d 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java
@@ -652,9 +652,10 @@ public class SdlRouterService extends Service{
case UsbTransferProvider.SENDING_PFD_ID:
ParcelFileDescriptor pfd = (ParcelFileDescriptor) msg.obj;
boolean success = false;
- if(this.provider.get().getParcelFileDescriptor() == null){
+ Log.d(TAG, "Received PFD message");
+ if(service.getParcelFileDescriptor() == null && service.mAOAService == null){
Log.d(TAG, "Setting the PFD & opening accessory");
- this.provider.get().initAOAService(pfd);
+ service.initAOAService(pfd);
success = true;
}else{
Log.d(TAG, "We already set the PFD");
@@ -1243,18 +1244,20 @@ public class SdlRouterService extends Service{
@Override
public void onTransportConnected() {
- toasty("USB TRANSPORT CONNECTED Sir");
+ toasty("USB Transport Connected");
SdlRouterService.this.onTransportConnected(TransportType.USB);
}
@Override
public void onTransportDisconnected(String info) {
+ toasty("USB Transport Disconnected");
SdlRouterService.this.onTransportDisconnected(TransportType.USB);
}
@Override
public void onTransportError(String info, Exception e) {
- Log.d("USBTransport", info);
+ toasty("USB Transport Disconnected due to error");
+ SdlRouterService.this.onTransportDisconnected(TransportType.USB);
}
});
try {
@@ -1316,9 +1319,6 @@ public class SdlRouterService extends Service{
}
public void onTransportDisconnected(TransportType type){
- if(altTransportService!=null){ //If we still have an alt transport open, then we don't need to tell the clients to close
- return;
- }
if(type == TransportType.USB){
mAOAService.disconnect();
mAOAService = null;
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/USBAccessoryAttachmentActivity.java b/sdl_android/src/main/java/com/smartdevicelink/transport/USBAccessoryAttachmentActivity.java
index 985ac70f7..073dcbea5 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/USBAccessoryAttachmentActivity.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/USBAccessoryAttachmentActivity.java
@@ -51,11 +51,12 @@ import static com.smartdevicelink.transport.TransportConstants.FOREGROUND_EXTRA;
* 3. set minimum SDK version to 12:
* <uses-sdk android:minSdkVersion="12"/>
*/
-public class USBAccessoryAttachmentActivity extends Activity {
+public class USBAccessoryAttachmentActivity extends Activity implements UsbTransferProvider.UsbTransferCallback {
private static final String TAG =
USBAccessoryAttachmentActivity.class.getSimpleName();
final String LOCAL_ROUTER_SERVICE_EXTRA = "router_service";
final String LOCAL_ROUTER_SERVICE_DID_START_OWN = "did_start";
+ UsbTransferProvider usbTransferProvider;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -76,15 +77,13 @@ public class USBAccessoryAttachmentActivity extends Activity {
if (UsbManager.ACTION_USB_ACCESSORY_ATTACHED.equals(action)) {
UsbAccessory usbAccessory = intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
- wakeUpRouterService(this, false, true, usbAccessory);
-
+ wakeUpRouterService(this, false, true, usbAccessory, this);
//AndroidTools.sendExplicitBroadcast(getApplicationContext(),usbAccessoryAttachedIntent,null);
}
-
- finish();
}
- private boolean wakeUpRouterService(final Context context, final boolean ping, final boolean altTransportWake, final UsbAccessory usbAccessory){
+
+ private boolean wakeUpRouterService(final Context context, final boolean ping, final boolean altTransportWake, final UsbAccessory usbAccessory, final UsbTransferProvider.UsbTransferCallback cb){
new ServiceFinder(context, context.getPackageName(), new ServiceFinder.ServiceFinderCallback() {
@Override
public void onComplete(Vector<ComponentName> routerServices) {
@@ -122,7 +121,7 @@ public class USBAccessoryAttachmentActivity extends Activity {
context.sendBroadcast(restart);
if(altTransportWake && usbAccessory != null){
- new UsbTransferProvider(context,serviceIntent.getComponent(),usbAccessory);
+ usbTransferProvider = new UsbTransferProvider(context,serviceIntent.getComponent(),usbAccessory, cb);
}
} catch (SecurityException e) {
Log.e(TAG, "Security exception, process is bad");
@@ -130,7 +129,7 @@ public class USBAccessoryAttachmentActivity extends Activity {
} else {
if (altTransportWake && usbAccessory != null) {
//wakeRouterServiceAltTransport(context);
- new UsbTransferProvider(context,runningBluetoothServicePackage.get(0),usbAccessory);
+ usbTransferProvider = new UsbTransferProvider(context,runningBluetoothServicePackage.get(0),usbAccessory, cb);
return;
}
return;
@@ -139,4 +138,10 @@ public class USBAccessoryAttachmentActivity extends Activity {
});
return true;
}
+
+ @Override
+ public void onUsbTransferUpdate(boolean success) {
+ Log.i(TAG, success ? "Successfully transfered file descriptor" : "Failed to send file descriptor");
+ finish();
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/UsbTransferProvider.java b/sdl_android/src/main/java/com/smartdevicelink/transport/UsbTransferProvider.java
index 5592702c1..2b2020b85 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/UsbTransferProvider.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/UsbTransferProvider.java
@@ -36,6 +36,7 @@ public class UsbTransferProvider {
final Messenger clientMessenger;
ParcelFileDescriptor usbPfd;
+ final UsbTransferCallback callback;
private ServiceConnection routerConnection= new ServiceConnection() {
@@ -64,7 +65,7 @@ public class UsbTransferProvider {
}
};
- public UsbTransferProvider(Context context, ComponentName service, UsbAccessory usbAccessory){
+ public UsbTransferProvider(Context context, ComponentName service, UsbAccessory usbAccessory, UsbTransferCallback callback){
if(context == null || service == null || usbAccessory == null){
throw new IllegalStateException("Supplied params are not correct. Context == null? "+ (context==null) + " ComponentName == null? " + (service == null) + " Usb Accessory == null? " + usbAccessory);
}
@@ -72,8 +73,9 @@ public class UsbTransferProvider {
this.routerService = service;
this.clientMessenger = new Messenger(new ClientHandler(this));
usbPfd = getFileDescriptor(usbAccessory);
- if(usbPfd != null){
- checkIsConnected();
+ this.callback = callback;
+ if(usbPfd != null) {
+ checkIsConnected();
}
}
@@ -93,7 +95,7 @@ public class UsbTransferProvider {
public void checkIsConnected(){
if(!AndroidTools.isServiceExported(context,routerService) || !bindToService()){
//We are unable to bind to service
- Log.e(TAG, "Unable to bind to servicec");
+ Log.e(TAG, "Unable to bind to service");
unBindFromService();
}
}
@@ -137,6 +139,12 @@ public class UsbTransferProvider {
routerServiceMessenger =null;
}
+ private void handleUsbTransferResponse(boolean success){
+ if(callback != null){
+ callback.onUsbTransferUpdate(success);
+ }
+ }
+
static class ClientHandler extends Handler {
final WeakReference<UsbTransferProvider> provider;
@@ -150,16 +158,23 @@ public class UsbTransferProvider {
if(provider.get()==null){
return;
}
+
switch (msg.what) {
case 5556: //TransportConstants.USB_ACC_RECEIVED:
Log.d(TAG, "Successful USB transfer");
+ provider.get().handleUsbTransferResponse(true);
provider.get().finish();
break;
default:
+ provider.get().handleUsbTransferResponse(false);
break;
}
}
};
+ public interface UsbTransferCallback{
+ public void onUsbTransferUpdate(boolean success);
+ }
+
}