2010-04-06 15 views
0

Je souhaite créer un service sous Android qui demandera d'abord à l'utilisateur s'il souhaite démarrer Bluetooth et définir la découverte Bluetooth.Création du service avec l'activation Bluetooth dans Android

Ma question est:

  1. Puis-je lancer dans le service suivant les activités?

    if (!mBluetoothAdapter.isEnabled()) 
    { 
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
        startActivityForResult(enableBtIntent, 0); 
    } 
    
    // Set Phone Discoverable for 300 seconds. 
    Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 
    discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 600); 
    startActivity(discoverableIntent); 
    
  2. Je souhaite définir la détectabilité du téléphone pour la durée de vie de l'application. C'est possible?

  3. Je veux accéder à l'espace vide disponible sur la carte SD. Comment devrais-je le faire?

Merci d'avance.

Répondre

1

1) Vous ne pouvez pas utiliser ce code particulier car vous ne pouvez pas appeler startActivity() à partir d'un service. Vous devez utiliser le code ci-dessous pour activer le Bluetooth:

BluetoothAdapter mAdapter = BluetoothAdapter.getDefaultAdapter(); 
mAdapter.enable(); 

La documentation dit

boolean enable() 

Allumez l'adaptateur ne Bluetooth local pas utiliser sans action explicite de l'utilisateur pour activer Bluetooth .

Vous devez donc être sûr d'inviter l'utilisateur en premier. De plus, vous ne pouvez pas configurer le périphérique pour qu'il soit détectable dans le service, car la seule façon de le faire est avec le startActivity(). Vous devrez donc faire cette partie dans une sorte d'activité de configuration. 2) Non, le fait qu'un périphérique Bluetooth soit détectable l'ouvre à une multitude de problèmes de sécurité, donc non seulement ce n'est pas possible, c'est une mauvaise idée.

3) Si vous voulez écrire sur la SDCard, il vous suffit d'ajouter l'autorisation WRITE_EXTERNAL_STORAGE à votre fichier manifeste, puis vous pouvez utiliser l'IO Java File standard.

+0

Merci pour votre aide. Je pense qu'il est impossible d'activer la découverte bluetooth en service. Toujours pour la 3e question J'ai demandé Je veux accéder à l'espace vide disponible sur la carte SD. Comment devrais-je le faire? Android Java bibliothèque Java.io d'android ne fournit aucune fonction pour accéder à l'espace libre du système de fichiers actuel comme Java.Io standard fournit. Mais j'ai trouvé la classe StatFs de android.os qui a résolu mon problème. –

+0

pas si bon conseil cause google ne recommande pas d'activer bluetooth sans demander d'abord à l'utilisateur .. Il peut être fait de cette façon, mais une autorisation spéciale pour l'administrateur BT doit être définie dans le manifeste. – Ewoks