1d591357524091254483849e37697255cc8fce2adMike Lockwood/* 2d591357524091254483849e37697255cc8fce2adMike Lockwood * Copyright (C) 2010 The Android Open Source Project 3d591357524091254483849e37697255cc8fce2adMike Lockwood * 4d591357524091254483849e37697255cc8fce2adMike Lockwood * Licensed under the Apache License, Version 2.0 (the "License"); 5d591357524091254483849e37697255cc8fce2adMike Lockwood * you may not use this file except in compliance with the License. 6d591357524091254483849e37697255cc8fce2adMike Lockwood * You may obtain a copy of the License at 7d591357524091254483849e37697255cc8fce2adMike Lockwood * 8d591357524091254483849e37697255cc8fce2adMike Lockwood * http://www.apache.org/licenses/LICENSE-2.0 9d591357524091254483849e37697255cc8fce2adMike Lockwood * 10d591357524091254483849e37697255cc8fce2adMike Lockwood * Unless required by applicable law or agreed to in writing, software 11d591357524091254483849e37697255cc8fce2adMike Lockwood * distributed under the License is distributed on an "AS IS" BASIS, 12d591357524091254483849e37697255cc8fce2adMike Lockwood * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d591357524091254483849e37697255cc8fce2adMike Lockwood * See the License for the specific language governing permissions and 14d591357524091254483849e37697255cc8fce2adMike Lockwood * limitations under the License. 15d591357524091254483849e37697255cc8fce2adMike Lockwood */ 16d591357524091254483849e37697255cc8fce2adMike Lockwood 17d591357524091254483849e37697255cc8fce2adMike Lockwoodpackage com.android.systemui.usb; 18d591357524091254483849e37697255cc8fce2adMike Lockwood 19d591357524091254483849e37697255cc8fce2adMike Lockwoodimport android.app.Activity; 20d591357524091254483849e37697255cc8fce2adMike Lockwoodimport android.content.BroadcastReceiver; 21d591357524091254483849e37697255cc8fce2adMike Lockwoodimport android.content.Context; 22d591357524091254483849e37697255cc8fce2adMike Lockwoodimport android.content.Intent; 23d591357524091254483849e37697255cc8fce2adMike Lockwoodimport android.content.IntentFilter; 24d591357524091254483849e37697255cc8fce2adMike Lockwoodimport android.hardware.usb.UsbAccessory; 25d591357524091254483849e37697255cc8fce2adMike Lockwoodimport android.hardware.usb.UsbDevice; 26d591357524091254483849e37697255cc8fce2adMike Lockwoodimport android.hardware.usb.UsbManager; 27d591357524091254483849e37697255cc8fce2adMike Lockwood 28d591357524091254483849e37697255cc8fce2adMike Lockwood// This class is used to close UsbPermissionsActivity and UsbResolverActivity 29d591357524091254483849e37697255cc8fce2adMike Lockwood// if their device/accessory is disconnected while the dialog is still open 30d591357524091254483849e37697255cc8fce2adMike Lockwoodclass UsbDisconnectedReceiver extends BroadcastReceiver { 31d591357524091254483849e37697255cc8fce2adMike Lockwood private final Activity mActivity; 32d591357524091254483849e37697255cc8fce2adMike Lockwood private UsbDevice mDevice; 33d591357524091254483849e37697255cc8fce2adMike Lockwood private UsbAccessory mAccessory; 34d591357524091254483849e37697255cc8fce2adMike Lockwood 35d591357524091254483849e37697255cc8fce2adMike Lockwood public UsbDisconnectedReceiver(Activity activity, UsbDevice device) { 36d591357524091254483849e37697255cc8fce2adMike Lockwood mActivity = activity; 37d591357524091254483849e37697255cc8fce2adMike Lockwood mDevice = device; 38d591357524091254483849e37697255cc8fce2adMike Lockwood 39d591357524091254483849e37697255cc8fce2adMike Lockwood IntentFilter filter = new IntentFilter(UsbManager.ACTION_USB_DEVICE_DETACHED); 40d591357524091254483849e37697255cc8fce2adMike Lockwood activity.registerReceiver(this, filter); 41d591357524091254483849e37697255cc8fce2adMike Lockwood } 42d591357524091254483849e37697255cc8fce2adMike Lockwood 43d591357524091254483849e37697255cc8fce2adMike Lockwood public UsbDisconnectedReceiver(Activity activity, UsbAccessory accessory) { 44d591357524091254483849e37697255cc8fce2adMike Lockwood mActivity = activity; 45d591357524091254483849e37697255cc8fce2adMike Lockwood mAccessory = accessory; 46d591357524091254483849e37697255cc8fce2adMike Lockwood 47d591357524091254483849e37697255cc8fce2adMike Lockwood IntentFilter filter = new IntentFilter(UsbManager.ACTION_USB_ACCESSORY_DETACHED); 48d591357524091254483849e37697255cc8fce2adMike Lockwood activity.registerReceiver(this, filter); 49d591357524091254483849e37697255cc8fce2adMike Lockwood } 50d591357524091254483849e37697255cc8fce2adMike Lockwood 51d591357524091254483849e37697255cc8fce2adMike Lockwood @Override 52d591357524091254483849e37697255cc8fce2adMike Lockwood public void onReceive(Context context, Intent intent) { 53d591357524091254483849e37697255cc8fce2adMike Lockwood String action = intent.getAction(); 54d591357524091254483849e37697255cc8fce2adMike Lockwood if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) { 55d591357524091254483849e37697255cc8fce2adMike Lockwood UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); 56d591357524091254483849e37697255cc8fce2adMike Lockwood if (device != null && device.equals(mDevice)) { 57d591357524091254483849e37697255cc8fce2adMike Lockwood mActivity.finish(); 58d591357524091254483849e37697255cc8fce2adMike Lockwood } 59d591357524091254483849e37697255cc8fce2adMike Lockwood } else if (UsbManager.ACTION_USB_ACCESSORY_DETACHED.equals(action)) { 60d591357524091254483849e37697255cc8fce2adMike Lockwood UsbAccessory accessory = 61d591357524091254483849e37697255cc8fce2adMike Lockwood (UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY); 62d591357524091254483849e37697255cc8fce2adMike Lockwood if (accessory != null && accessory.equals(mAccessory)) { 63d591357524091254483849e37697255cc8fce2adMike Lockwood mActivity.finish(); 64d591357524091254483849e37697255cc8fce2adMike Lockwood } 65d591357524091254483849e37697255cc8fce2adMike Lockwood } 66d591357524091254483849e37697255cc8fce2adMike Lockwood } 67d591357524091254483849e37697255cc8fce2adMike Lockwood}