Android程序设计-BroadcastReceiver

目录

BroadcastReceiver介绍

列表类组件ListView

BluetoothAdapter的使用

BroadcastReceive的注册


BroadcastReceiver介绍

        在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制,而BroadcastReceiver意为“广播接收者”,顾名思义就是对发送出来的 Broadcast进行过滤接收并响应的一类组件。本文将通过一个蓝牙连接的程序来介绍BroadcastReceiver的使用。

列表类组件ListView

        ListView间接继承ViewGroupAdapterView,属于容器类组件,可显示多个列表项。要为ListView指定要显示的列表项,可通过为其设置Adapter来制定显示的列表项。对于纯文字的的列表项,通常使用ArrayAdapter对象。

       通过布局文件创建ArrayAdapter对象,可指定列表项的外观样式。然后使用ListViewsetAdapter()方法将适配器AdapterListView关联,最后创建ListView的监听事件,如:

ArrayAdapter<String> mPairedDevicesArrayAdapter =

newArrayAdapter<>(this, R.layout.device_name);      //通过布局文件创建ArrayAdapter

ListView pairedListView = (ListView) findViewById(R.id.lv_devices);

pairedListView.setAdapter(mPairedDevicesArrayAdapter);   //ListView和ArrayAdapter关联

pairedListView.setOnItemClickListener(mDeviceClickListener);   //设置监听事件

BluetoothAdapter的使用

        BluetoothAdapter为本地的蓝牙适配器,通过该蓝牙适配器可以对蓝牙进行基本操作,例如:启动扫描设备(startDiscovery),获取已配对设备(getBoundedDevices),通过mac蓝牙地址获取蓝牙设备(getRemoteDevice),创建一个监听连接(listenUsingRfcommWithServiceRecord)等,代码示例如下

BluetoothAdapter mBluetoothAdapter;
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();   //获取适配器对象
//获取绑定的蓝牙集合
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
if (!mBluetoothAdapter.isEnabled()) {                  //蓝牙是否可用
}
mBluetoothAdapter.disable();                             //关闭蓝牙
if (mBluetoothAdapter.isDiscovering()) {            //是否正在搜索
    mBluetoothAdapter.cancelDiscovery();          //取消搜索
}
mBluetoothAdapter.startDiscovery();                 //开始搜索

BroadcastReceive的注册

        第一种方法为静态注册,直接在AndroidManifest.xml文件中进行配置,方法为在<receiver>标签内部加入<intent-filter>标签,并在这个标签内添加<action android:name="android.intent.action.MY_BROADCAST" /><category android:name="android.intent.category.DEFAULT" />这两句声明。注意,这种注册方式是常驻型的,即应用关闭后如果还有广播信息传来,MyReceiver还是会被系统调用而自动运行,代码如下所示

<receiver android:name=".MyReceiver"> 

          <intent-filter> 

                <action android:name="android.intent.action.MY_BROADCAST" /> 

                <category android:name="android.intent.category.DEFAULT" /> 

          </intent-filter> 

</receiver>

        第二种方法为动态注册,这种注册方式为直接在Activity中通过Intent方法指定广播地址,与静态注册相反,这种注册方式不是常驻型的,会随着程序的生命周期结束而销毁,示例代码如下所示:

IntentFilter filter = new IntentFilter(); 

filter.addAction("android.intent.action.MY_BROADCAST");

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值