Browse Source

Fix: Taisync didn't reconnect if the USB is not unplugged and plugged again

QGC4.4
Matej Frančeškin 6 years ago committed by Lorenz Meier
parent
commit
c35c0fe3ed
  1. 38
      android/src/org/mavlink/qgroundcontrol/QGCActivity.java

38
android/src/org/mavlink/qgroundcontrol/QGCActivity.java

@ -76,6 +76,7 @@ public class QGCActivity extends QtActivity @@ -76,6 +76,7 @@ public class QGCActivity extends QtActivity
private static final String ACTION_USB_PERMISSION = "org.mavlink.qgroundcontrol.action.USB_PERMISSION";
private static PendingIntent _usbPermissionIntent = null;
private TaiSync taiSync = null;
private Timer probeAccessoriesTimer = null;
public static Context m_context;
@ -225,7 +226,15 @@ public class QGCActivity extends QtActivity @@ -225,7 +226,15 @@ public class QGCActivity extends QtActivity
IntentFilter accessoryFilter = new IntentFilter(ACTION_USB_PERMISSION);
filter.addAction(UsbManager.ACTION_USB_ACCESSORY_DETACHED);
registerReceiver(mOpenAccessoryReceiver, accessoryFilter);
probeAccessories();
probeAccessoriesTimer = new Timer();
probeAccessoriesTimer.schedule(new TimerTask() {
@Override
public void run()
{
probeAccessories();
}
}, 0, 3000);
} catch(Exception e) {
Log.e(TAG, "Exception: " + e);
}
@ -243,6 +252,9 @@ public class QGCActivity extends QtActivity @@ -243,6 +252,9 @@ public class QGCActivity extends QtActivity
@Override
protected void onDestroy()
{
if (probeAccessoriesTimer != null) {
probeAccessoriesTimer.cancel();
}
unregisterReceiver(mOpenAccessoryReceiver);
try {
if(_wakeLock != null) {
@ -706,22 +718,26 @@ public class QGCActivity extends QtActivity @@ -706,22 +718,26 @@ public class QGCActivity extends QtActivity
}
}
Object probeAccessoriesLock = new Object();
private void probeAccessories()
{
final PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
new Thread(new Runnable() {
public void run() {
Log.i(TAG, "probeAccessories");
UsbAccessory[] accessories = _usbManager.getAccessoryList();
if (accessories != null) {
for (UsbAccessory usbAccessory : accessories) {
if (_usbManager.hasPermission(usbAccessory)) {
openAccessory(usbAccessory);
} else {
Log.i(TAG, "requestPermission");
_usbManager.requestPermission(usbAccessory, pendingIntent);
synchronized(openAccessoryLock) {
Log.i(TAG, "probeAccessories");
UsbAccessory[] accessories = _usbManager.getAccessoryList();
if (accessories != null) {
for (UsbAccessory usbAccessory : accessories) {
if (_usbManager.hasPermission(usbAccessory)) {
openAccessory(usbAccessory);
} else {
Log.i(TAG, "requestPermission");
_usbManager.requestPermission(usbAccessory, pendingIntent);
}
}
}
}
}
}
}).start();

Loading…
Cancel
Save