2011-07-01 13 views
6

En mi aplicación, necesito activar bluetooth de mi dispositivo con un clic de botón. ¿Cómo puedo lograr eso? Un ejemplo será realmente útil. Además, ¿qué permisos necesito incluir en mi mainfest.xml para lo mismo?Cómo activar el botón de Bluetooth en

+1

http://stackoverflow.com/questions/1975655/enable-android-bluetooth-from-documentation –

Respuesta

6

siguiente son extractos de código de android documentation on Bluetooth

En el archivo de manifiesto para los permisos: Código

<manifest ... > 
    <uses-permission android:name="android.permission.BLUETOOTH" /> 
    ... 
</manifest> 

Fuente para habilitar Bluetooth

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
if (mBluetoothAdapter == null) { 
    // Device does not support Bluetooth 
} 

if (!mBluetoothAdapter.isEnabled()) { 
    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); 
} 

Si se habilita el Bluetooth tiene éxito, su Activity recibirá el RESULT_OK código de resultado en la devolución de llamada onActivityResult(). Si Bluetooth no se activó debido a un error (o el usuario respondió "No"), el código de resultado será RESULT_CANCELED.

+5

No olvide que hay Otra forma de activar el bluetooth sin usar la solicitud de intención. Simplemente llame a mBluetoothAdapter.enable(); esto lo activará sin el diálogo de permiso emergente del usuario. (solo se usa de esta forma si no se quiere ingresar el usuario) – JPM

+1

@JPM sí, pero 1) esto requiere el permiso 'BLUETOOTH_ADMIN'; 2) se desaconseja en la documentación de Android SDK utilizar 'enable()' a menos que implemente su propia IU para el consentimiento del usuario o si está implementando una aplicación de administrador de configuración del sistema o similar. – JHH

0

Esta solución le ayudará Android Bluetooth. Pero para obtener más información sobre el uso de Bluetooth con Android junto con manifest.xml, debe ver este Android Bluetooth.

Para obtener el permiso que necesita.

<manifest ... > 
    <uses-permission android:name="android.permission.BLUETOOTH" /> 
    ... 
</manifest> 
2

Activar Bluetooth en Android no es difícil. Pero debe prestar atención a algunos detalles. Hay 3 tipos de métodos para activar Bluetooth en Android.

1.Fuerza para abrir Bluetooth.

Para obtener el adaptador bluetooth predeterminado, es decir, use BluetoothAdapter.getDefaultAdapter(); Es necesario este permiso:

<uses-permission android:name="android.permission.BLUETOOTH" /> 

Con el fin de obligar a abrir Bluetooth, es decir, utilizar BluetoothAdapter.enable(); Es necesario este permiso:

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 

Aquí es un ejemplo de código

/** 
* Bluetooth Manager 
* 
* @author ifeegoo www.ifeegoo.com 
* 
*/ 
public class BluetoothManager 
{ 

    /** 
    * Whether current Android device support Bluetooth. 
    * 
    * @return true:Support Bluetooth false:not support Bluetooth 
    */ 
    public static boolean isBluetoothSupported() 
    { 
     return BluetoothAdapter.getDefaultAdapter() != null ? true : false; 
    } 

    /** 
    * Whether current Android device Bluetooth is enabled. 
    * 
    * @return true:Bluetooth is enabled false:Bluetooth not enabled 
    */ 
    public static boolean isBluetoothEnabled() 
    { 
     BluetoothAdapter bluetoothAdapter = BluetoothAdapter 
       .getDefaultAdapter(); 

     if (bluetoothAdapter != null) 
     { 
      return bluetoothAdapter.isEnabled(); 
     } 

     return false; 
    } 

    /** 
    * Force to turn on Bluetooth on Android device. 
    * 
    * @return true:force to turn on Bluetooth success  
    * false:force to turn on Bluetooth failure 
    */ 
    public static boolean turnOnBluetooth() 
    { 
     BluetoothAdapter bluetoothAdapter = BluetoothAdapter 
       .getDefaultAdapter(); 

     if (bluetoothAdapter != null) 
     { 
      return bluetoothAdapter.enable(); 
     } 

     return false; 
    } 
} 

El método anterior para activar el Bluetooth no le dirá al usuario si se enciende el éxito de Bluetooth o not.When se llama al método enable(), no activará Bluetooth al 100%. Debido a la razón por la que algunas aplicaciones de seguridad se niegan a hacerlo, y así sucesivamente. Debe prestar atención al valor de retorno del método enable().

la API oficial del método de activación() nos dice que:

Bluetooth nunca debe estar habilitado y sin el consentimiento del usuario directo. Si desea activar Bluetooth para crear una conexión inalámbrica, debe usar el ACTION_REQUEST_ENABLE Intent, que generará un diálogo que solicita permiso al usuario para activar Bluetooth. El método enable() se proporciona solo para aplicaciones que incluyen una interfaz de usuario para cambiar la configuración del sistema, como una aplicación "administrador de energía".

Por lo tanto, no es adecuado que encienda Bluetooth con el método enable() a menos que haga saber al usuario lo que hará.

2.Use Alerta de sistema para recordarle a los usuarios que activará Bluetooth mediante startActivityForResult.

this.startActivityForResult(requestBluetoothOn, REQUEST_CODE_BLUETOOTH_ON) 
need this permission: 
<uses-permission android:name="android.permission.BLUETOOTH" /> 


public class MainActivity extends Activity 
{ 
    /** 
    * Custom integer value code for request to turn on Bluetooth,it's equal    
     *requestCode in onActivityResult. 
    */ 
    private static final int REQUEST_CODE_BLUETOOTH_ON = 1313; 

    /** 
    * Bluetooth device discovery time,second。 
    */ 
    private static final int BLUETOOTH_DISCOVERABLE_DURATION = 250; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     this.setContentView(R.layout.activity_main); 

     if ((BluetoothManager.isBluetoothSupported()) 
       && (!BluetoothManager.isBluetoothEnabled())) 
     { 
      this.turnOnBluetooth(); 
     } 
    } 

    /** 
    * Use system alert to remind user that the app will turn on Bluetooth 
    */ 
    private void turnOnBluetooth() 
    { 
     // request to turn on Bluetooth 
     Intent requestBluetoothOn = new Intent(
       BluetoothAdapter.ACTION_REQUEST_ENABLE); 

     // Set the Bluetooth discoverable. 
     requestBluetoothOn 
       .setAction(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 

     // Set the Bluetooth discoverable time. 
     requestBluetoothOn.putExtra(
       BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 
       BLUETOOTH_DISCOVERABLE_DURATION); 

     // request to turn on Bluetooth 
     this.startActivityForResult(requestBluetoothOn, 
       REQUEST_CODE_BLUETOOTH_ON); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     if (requestCode == REQUEST_CODE_BLUETOOTH_ON) 
     { 
      switch (resultCode) 
      { 
       // When the user press OK button. 
       case Activity.RESULT_OK: 
       { 
        // TODO 
       } 
       break; 

       // When the user press cancel button or back button. 
       case Activity.RESULT_CANCELED: 
       { 
        // TODO 
       } 
       break; 
       default: 
       break; 
      } 
     } 
    } 
} 

Esta es una mejor forma de activar Bluetooth en Android.

3.Guía a los usuarios a la configuración de Bluetooth del sistema para activar Bluetooth por sí mismos.

// Guide users to system Bluetooth settings to turn on Bluetooth by himselves. 
this.startActivity(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS)); 

En mi app.Considering el código lógico y también la experiencia del usuario, utilizo los pasos seguir para activar Bluetooth:

1.Utilice activar() para encender Bluetooth.But voy a contar los usuarios que activarán Bluetooth, si me permiten hacer esto, llamaré a enable() para activar Bluetooth. Esto es mejor que llamar al sistema de alerta, porque podemos controlar el contenido para recordarle al usuario. Debe prestar atención que no es 100% activar Bluetooth mediante enable(), algunas aplicaciones de seguridad u otras razones lo niegan a hacer esto. Pero podemos estimar que si activamos o no el éxito de Bluetooth por el valor de retorno de la método enable().

2.Si el método enable() devuelve falso, entonces usamos startActivityForResult para recordarle a los usuarios que activaremos Bluetooth.

3.Si el paso 2 no funciona por alguna razón, puede guiar a los usuarios para que accedan a la configuración de Bluetooth del sistema para activar Bluetooth por sí mismos.

Algunos más información sobre su vez y desactivar el Bluetooth en Android: http://www.ifeegoo.com/android-turn-on-and-turn-off-bluetooth.html

Cuestiones relacionadas