在Android中使用蓝牙激活创建服务

时间:2010-04-06 13:57:59

标签: android service bluetooth discovery

我想在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卡上的空白空间。我该怎么办?

  4. 提前致谢。

1 个答案:

答案 0 :(得分:1)

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

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

文档说

boolean enable()
  

开启本地蓝牙适配器 - 如果没有明确的用户操作,请不要使用蓝牙。

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

2)不,让蓝牙设备可被发现可以解决许多安全问题,所以不仅不可能,这是一个坏主意。

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