/* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.bluetooth; import android.app.Activity; import android.app.Instrumentation; import android.content.Context; import android.os.Bundle; import junit.framework.Assert; import java.util.Set; public class BluetoothInstrumentation extends Instrumentation { private BluetoothTestUtils mUtils = null; private BluetoothAdapter mAdapter = null; private Bundle mArgs = null; private Bundle mSuccessResult = null; private BluetoothTestUtils getBluetoothTestUtils() { if (mUtils == null) { mUtils = new BluetoothTestUtils(getContext(), BluetoothInstrumentation.class.getSimpleName()); } return mUtils; } private BluetoothAdapter getBluetoothAdapter() { if (mAdapter == null) { mAdapter = ((BluetoothManager)getContext().getSystemService( Context.BLUETOOTH_SERVICE)).getAdapter(); } return mAdapter; } @Override public void onCreate(Bundle arguments) { super.onCreate(arguments); mArgs = arguments; // create the default result response, but only use it in success code path mSuccessResult = new Bundle(); mSuccessResult.putString("result", "SUCCESS"); start(); } @Override public void onStart() { String command = mArgs.getString("command"); if ("enable".equals(command)) { enable(); } else if ("disable".equals(command)) { disable(); } else if ("unpairAll".equals(command)) { unpairAll(); } else if ("getName".equals(command)) { getName(); } else if ("getAddress".equals(command)) { getAddress(); } else if ("getBondedDevices".equals(command)) { getBondedDevices(); } else if ("enableBtSnoop".equals(command)) { enableBtSnoop(); } else { finish(null); } } public void enable() { getBluetoothTestUtils().enable(getBluetoothAdapter()); finish(mSuccessResult); } public void disable() { getBluetoothTestUtils().disable(getBluetoothAdapter()); finish(mSuccessResult); } public void unpairAll() { getBluetoothTestUtils().unpairAll(getBluetoothAdapter()); finish(mSuccessResult); } public void getName() { String name = getBluetoothAdapter().getName(); mSuccessResult.putString("name", name); finish(mSuccessResult); } public void getAddress() { String name = getBluetoothAdapter().getAddress(); mSuccessResult.putString("address", name); finish(mSuccessResult); } public void getBondedDevices() { Set devices = getBluetoothAdapter().getBondedDevices(); int i = 0; for (BluetoothDevice device : devices) { mSuccessResult.putString(String.format("device-%02d", i), device.getAddress()); i++; } finish(mSuccessResult); } public void enableBtSnoop() { Assert.assertTrue("failed to enable snoop log", getBluetoothAdapter().configHciSnoopLog(true)); finish(mSuccessResult); } public void finish(Bundle result) { if (result == null) { result = new Bundle(); } finish(Activity.RESULT_OK, result); } }