0

我想在 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 回答 1

1

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

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

文件说

boolean enable()

打开本地蓝牙适配器——不要在没有明确用户操作的情况下打开蓝牙。

所以你需要确保首先提示用户。此外,您不能将设备设置为在服务中可发现,因为这样做的唯一方法是使用 Activity,startActivity()因此您需要在某种配置 Activity 中执行该部分。

2) 不,让蓝牙设备可被发现会带来许多安全问题,因此不仅不可能,而且是个坏主意。

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

于 2010-04-06T14:42:26.093 回答