package andraus.bluetoothhidemu.settings; import andraus.bluetoothhidemu.BluetoothHidEmuActivity; import andraus.bluetoothhidemu.spoof.BluetoothAdapterSpoofer; import andraus.bluetoothhidemu.spoof.Spoof.SpoofMode; import andraus.bluetoothhidemu.util.DoLog; import android.app.Activity; import android.bluetooth.BluetoothAdapter; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; /** * Receive notification of bluetooth adapter being turned off */ public class BluetoothAdapterStateReceiver extends BroadcastReceiver { private static final String TAG = BluetoothHidEmuActivity.TAG; private Activity mActivity = null; private static BluetoothAdapterSpoofer mSpoofer = null; /** * Constructor * * @param activity */ public BluetoothAdapterStateReceiver(Activity activity) { super(); mActivity = activity; } /** * Constructor * * @param activity * @param adapterSpoofer */ public BluetoothAdapterStateReceiver(Activity activity, BluetoothAdapterSpoofer adapterSpoofer) { this(activity); mSpoofer = adapterSpoofer; } /** * */ @Override public void onReceive(Context context, Intent intent) { if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent.getAction())) { DoLog.d(TAG, "BluetoothAdapter turned off. Bailing out..."); mActivity.finish(); } else if (BluetoothAdapter.ACTION_SCAN_MODE_CHANGED.equals(intent.getAction())) { int scanMode = intent.getExtras().getInt(BluetoothAdapter.EXTRA_SCAN_MODE); DoLog.d(TAG, "Scan mode changed: " + scanMode); if (scanMode == BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) { SpoofMode spoofMode = Settings.getPrefEmulationMode(context); if (!mSpoofer.isSpoofed()) mSpoofer.tearUpSpoofing(spoofMode); } else { if (mSpoofer.isSpoofed()) mSpoofer.tearDownSpoofing(); } } } }