2010-04-06 32 views
0

我想在Android中创建一个服务,最初会询问用户是否要启动蓝牙并设置蓝牙发现。在Android中使用蓝牙激活创建服务

我的问题是:

  1. 我可以在以下活动的服务的推出?

    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. 我想在应用程序的生命周期中设置手机的可移植性。可能吗?

  3. 我想要访问SD卡上的空闲空间。我应该怎么做?

在此先感谢。

回答

1

1)您不能使用该特定代码,因为您无法从服务调用startActivity()。您将需要使用下面的代码启用蓝牙:

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

文档说

boolean enable() 

打开本地蓝牙适配器不无明确的用户动作来打开蓝牙使用。

所以你需要确保首先提示用户。此外,您无法将设备设置为在服务中可发现,因为唯一的方法是使用startActivity(),因此您需要在某种配置活动中执行此操作。

2)不,有蓝牙设备是可以发现的,可以打开它,但这不仅是不可能的,而且也不是一个好主意。

3)如果要写入SDCard,只需将WRITE_EXTERNAL_STORAGE权限添加到清单文件中,然后就可以使用标准Java文件IO。

+0

感谢您的帮助。 我认为在服务中启用蓝牙发现是不可能的。 第三次问题我问 我想访问SD卡上可用的空闲空间。我应该怎么做? Android的Java库Java.io没有提供任何功能来访问当前文件系统的空闲空间作为标准的Java.Io提供的。 但我发现了android.os的StatFs类,它解决了我的问题。 – 2010-04-26 06:49:28

+0

不太好的建议,因为谷歌不建议启用蓝牙,而不先询问用户。它可以这样做,但BT管理员的特殊许可必须在清单中设置。 – Ewoks 2012-07-18 11:53:50