private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
// When discovery finds a device
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
// Get the BluetoothDevice object from the Intent
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// Add the name and address to an array adapter to show in a ListView
mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
}
}
};
// Register the BroadcastReceiver
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy`
以上代码用于扫描BluetoothDevices并将其添加到mArrayAdapter中。
但是我不理解这些行String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action))
有人可以提供一个简短的解释。我已经搜索过,但我很简单,不了解intent.getaction()的用法。它返回什么以及如何设置值?。
答案 0 :(得分:0)
嗯,实际上非常简单。
每一个意图都只是一条信息。但是,您可以将意图从一个应用程序发送到另一个应用程序因此,当您从另一个应用程序(在这种情况下为蓝牙控制器)收到意图时,您需要知道它的含义。这基本上就是行动。
并且,因为广播接收器通常可以接收几种不同类型的意图,所以'if'确保您刚收到的意图确实意味着已找到蓝牙设备。
我建议您阅读有关意图和意图过滤器的精彩文章:http://developer.android.com/guide/components/intents-filters.html
编辑:正如捣蛋鬼所说,在你的情况下,它确实没有必要。
答案 1 :(得分:0)
在您的情况下,if (BluetoothDevice.ACTION_FOUND.equals(action))
不是必需的,因为您只是使用过滤器new IntentFilter(BluetoothDevice.ACTION_FOUND)
注册该广播接收器。